- Справочник Метод НайтиПоНаименованию()
- Синтаксис
- Параметры
- Описание
- Пример использования
- Программирование в 1С для всех
- Получить ссылку 1С
- Пустая ссылка 1С
- Программная работа со справочниками в 1С 8.3
- СправочникиМенеджер
- Программное создание элемента справочника
- Программное изменение элементов справочника
- Программное копирование элемента справочника
- Программное удаление элемента справочника
- 1с найтипонаименованию в справочнике
- Nav view search
- Navigation
- Search
- Примеры кода для 1С 8.x. Часть 3. Справочники.
- Справочники
- Найтипонаименованию 1с как работает
Справочник
Метод НайтиПоНаименованию()
Ищет элемент справочника по наименованию
Синтаксис
Метод НайтиПоНаименованию() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров метода НайтиПоНаименованию() :
Имя параметра | Тип | Описание | ||||
---|---|---|---|---|---|---|
Наименование | Строка | наименование элемента справочника | ||||
Режим | Число | режим поиска:
| ||||
Точность | Число | необходимая точность поиска:
| ||||
Жирным шрифтом выделены обязательные параметры |
Описание
Метод НайтиПоНаименованию() ищет элемент справочника по наименованию. Поскольку, данный метод является позиционирующим (см. описание метода Выбран()), его можно использовать только для объектов, созданных функцией СоздатьОбъект().
Пример использования
Пример кода с использованием метода НайтиПоНаименованию() :
Программирование в 1С для всех
Ссылка указывает на данные экземпляра объекта, но не хранит их, т.е. получив ссылку на конкретный экземпляр объекта, мы сможем узнать всю информацию об экземпляре этого объекта, но не сможем внести какие-нибудь коррективы в эту информацию.
Мы помним, что в платформе 1С 8.3. существуют три вида объектов. Это объекты метаданных, общие объекты и универсальные коллекции значений.
Так вот, ссылка может быть только у объектов метаданных.
Замечу что, ссылка указывает не на сам объект, а на экземпляр объекта. Хотя, очень часто употребляют выражения «ссылка объекта», «ссылка на объект» и т.п.
Ссылку можно использовать в качестве переменной, и также ссылку можно указывать, как реквизит других объектов метаданных.
Например, в моей конфигурации есть справочник Контрагенты.
А также какой-то документ, пусть будет Оплата. И я могу какому-то реквизиту документа Оплата присвоить тип — ссылка на справочник Контрагент.
Это значит, теперь в документе Оплата можно хранить информацию о контрагенте, который сделал оплату.
Если мы используем ссылку в качестве реквизита какого-то объекта, то при редактировании экземпляра, на который указывает ссылка, сам реквизит не изменится.
Поясню на примере. Я выше создал документ Оплата и реквизит Оплативший для этого документа с типом СправочникСсылка.Контрагенты.
Если я переименую элемент справочника Контрагенты.
Затем, зайду обратно в выше созданный документ Оплата, то увижу, что отображение контрагента в реквизите поменялось автоматически.
Что это значит? Это не значит, что реквизит Оплативший элемента и сам элемент справочника Номенклатура поменялся автоматически. Нет, это значит, что данный реквизит хранит указатель на экземпляр объекта, который отображается посредством наименования. Поменяли наименование, поменялось только отображение, если бы поменяли какой-нибудь другой реквизит справочника Контрагенты, то пользователь бы ничего не заметил.
Получить ссылку 1С
Каким образом программно получить ссылку на экземпляр объекта, который уже есть в базе?
Сделать это можно несколькими способами: найти по коду, найти по наименованию, найти по реквизиту и найти по нескольким реквизитам через запрос. Я рассмотрю первые два метода.
Для демонстрации этих методов, на основной форме документа Оплата я создам команду «Установить контрагента», которую размещу в командной панели формы.
При выполнении этой команды я буду в поле Оплативший записывать определенного контрагента. Для этого я создам обработчики команды на клиенте и на сервере.
Первый способ получения ссылки: найти по коду, для поиска по коду необходимо использовать функцию менеджера объекта НайтиПоКоду.
Функция НайтиПоКоду вернёт ссылку на экземпляр объекта справочник Контрагенты, которому соответствует код 000000002. Почему мы задали код в виде строки, а не в виде цифры, например? Чтобы понять это, нужно открыть непосредственно редактор справочника Контрагенты в конфигураторе, перейти на закладку «Данные» и посмотреть, какой тип кода у этого справочника.
Тип кода у справочника Контрагенты — строка, поэтому код мы ищем по строковому значению.
Таким образом, данный код:
возвращает ссылку на справочник Контрагенты, код у которого 000000002. Если такой нет, возвращается пустая ссылка (о них ниже), если с таким кодом несколько элементов, то возвращается один из них, какой конкретно — предугадать невозможно, платформа выберет элемент по своим внутренним идентификаторам.
Рассмотрим синтаксис этой функции для менеджера справочника:
Код – непосредственно тот код, по которому мы ищем наш элемент;
ПоискПоПолномуКоду — если стоит параметр Истина, то поиск будет вестись по кодам всей иерархии, т.е. Вам необходимо будет указывать код каждой группы, куда входит элемент через флеш. Например, так: 001/005/110, где слева будет располагаться самая верхняя группа, а справа непосредственно код элемента.
Данное поле необязательно, по умолчанию – Ложь;
Родитель – для иерархических справочников можно указать группу, тогда поиск будет вестись внутри группы. Данное поле необязательно;
Владелец – для подчиненных справочников можно указать владельца, тогда поиск будет вестись только среди элементов, подчиненных данному владельцу. Данное поле необязательно.
Второй способ получения ссылки: найти по наименованию, для поиска по наименованию необходимо использовать функцию менеджера объекта НайтиПоНаименованию.
Этот способ можно применить только для тех объектов, у которых имеется стандартный реквизит Наименование.
Например, у справочников этот реквизит имеется.
А у документов его нет.
В случае этой функции, поиск ведется по тому значению, которое в поле Наименование объекта
Синтаксис функции для менеджера справочника следующий:
«Наименование» – непосредственно то наименование, по которому мы ищем наш элемент;
«ТочноеСоответствие» — если стоит параметр Ложь, то поиск будет вестись не точно, т.е. когда левая часть наименования элемента и строка поиска будут совпадать (например, Металл и Металл 01), то поиск выдаст результат. Если стоит Истина, то будут найдены только те элементы, наименование которых будет точно совпадать со строкой поиска.
Данное поле необязательно, по умолчанию – Ложь.
Помните это, что по умолчанию поиск ведется не точно;
Параметры «Родитель» и «Владелец» точно такие же, как для процедуры НайтиПоКоду.
Пустая ссылка 1С
У Вас уже, наверное, назрел вопрос: что будут возвращать методы НайтиПоКоду, НайтиПоНаименованию, если такой элемент справочника не был найден. Они будут возвращать Пустую ссылку. Пустая ссылка — это пустое значение какого-нибудь справочника или документа. У менеджеров справочника или документа есть методы, которые возвращают пустую ссылку соответствующих объектов.
ПустаяНоменклатура= Справочники.Номенклатура.ПустаяСсылка();
ПустаяОплата = Документы.Оплата.ПустаяСсылка();
Переменные ПустаяНоменклатура и ПустаяОплата содержат в себе пустые ссылки на каждый объект.
Обращаю Ваше внимание, что для каждого вида справочника и каждого документа будет своя собственная пустая ссылка.
Данный метод очень удобно использовать, когда нам необходимо знать, найден ли элемент справочника по коду (названию) или нет.
Например, доработаем код выше: если элемента с таким названием нет, то выведем сообщение.
ПустаяСсылка() – это метод менеджера объекта. Также есть метод ссылки объекта Пустая(), который возвращает тип булево. Истина — если это пустая ссылка. Код выше можно переделать:
Метод Пустая() удобно использовать работая в клиентском контексте (в том числе на тонком клиенте), потому что менеджер объекта это «тяжелый» объекта и с ним можно работать только в серверном контексте. Т.е. установку контрагента можно сделать таким способом:
В этом коде я получаю по наименованию ссылку на нужного контрагента, делаю это в серверном методе, поскольку обращаюсь к менеджеру справочника, записываю если он не пустой, а потом в клиентском методе проверяю, найден контрагент по такому наименованию или нет, если не найден то вывожу предупреждение.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Программная работа со справочниками в 1С 8.3
Программно можно создавать новые элементы, изменять существующие, удалять, искать элементы по коду, наименованию, реквизитам и т.п. Но нельзя программно добавить новый справочник в конфигурацию. Это выполняется только интерактивно в дереве метаданных.
СправочникиМенеджер
Объект СправочникиМенеджер предназначен для управления всеми справочниками конфигурации. Через цикл можно получить доступ к менеджеру каждого справочника:
Также можно обратиться к менеджеру справочника через точку или через квадратные скобки:
Также через СправочникиМенеджер можно проверить является ли ссылка справочником:
Программное создание элемента справочника
Для программного создания элементов есть метод СоздатьЭлемент. Для программного создания групп — метод СоздатьГруппу:
Программное изменение элементов справочника
Для того чтобы изменить реквизиты уже существующего элемента справочника нужно через ссылку получить объект методом ПолучитьОбъект, через объект изменить значения реквизитов и записать измененный объект в базу данных:
Программное копирование элемента справочника
Методом Скопировать можно создать копию элемента справочника. Данный метод можно вызывать как у ссылки, так и у объекта:
Программное удаление элемента справочника
Для удаления применяются два метода: УстановитьПометкуУдаления и Удалить. Метод УстановитьПометкуУдаления только установит пометку на удаление, сам элемент не будет удален из базы данных. Метод Удалить удалит элемент из базы данных без проверки ссылочной целостности. То есть, если на этот элемент были ссылки в других местах, то теперь вместо ссылки будет надпись «Объект не найден». Не рекомендуется пользоваться методом Удалить. Важно отметить, что вызов метода УстановитьПометкуУдаления вызывает запись объекта. Дополнительно записывать объект не нужно.
1с найтипонаименованию в справочнике
Найти элемент справочника в 1С 8 можно тремя способами:
1) Поиск по коду
Описание параметров метода НайтиПоКоду:
2) Поиск по наименованию
Описание параметров метода НайтиПоНаименованию:
3) Поиск по произвольному реквизиту
Описание параметров метода НайтиПоРеквизит:
Nav view search
Navigation
Search
Примеры кода для 1С 8.x. Часть 3. Справочники.
Как обойти все элементы справочника запросом 1с 8.3:
Как обойти элементы с помощью менеджера справочника 1с 8.3:
Создание и запись нового элемента справочника 1с 8.3:
//метод: СоздатьЭлемент()
Создание и запись новой группы справочника (для иерархического справочника) 1с 8.3
Поиск элемента справочника запросом:
Поиск элемента через менеджер справочника 1с 8.3:
//Если элемент найден, возвращается ссылка, иначе пустая ссылка. Если реквизит КодНаименование в справочнике не используется, возвращается Неопределено.
//методы: НайтиПоКоду(), НайтиПоНаименованию(), НайтиПоРеквизиту();
Удаление элементагруппы справочника 1с 8.3:
Выборка элементов подчиненного справочника 1с 8.3:
Перенести элемент в другую группу 1с 8.3:
Как получить и проверить пустую ссылку справочника 1с 8.3
Как узнать принадлежность элемента справочника группе 1с 8.3:
Как скопировать существующий элемент справочника 1с 8.3
Как выяснить уровень вложенности элемента справочника 1с 8.3
Как заблокировать элемент справочника перед изменениями 1с 8.3
Как заполнить новый элемент справочника на основании 1с 8.3
Как открыть форму существующего элемента справочника, имея ссылку на него 1с 8.3
Как открыть форму существующей группы справочника, имея ссылку на нее 1с 8.3
Как открыть форму выбора элемента справочника и отследить её закрытие 1с 8.3
Как открыть форму списка справочника и установить отбор по реквизиту 1с 8.3
Как открыть форму списка справочника с нужным отображением 1с 8.3
Как открыть форму только что созданного, но ещё не записанного элемента справочника в 1с 8.3
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Справочники
Описание:
Для работы с постоянной и условно постоянной информацией с некоторым множеством значений в системе используются объекты типа «Справочник». Обычно справочниками являются списки материалов, товаров, организаций, валют, сотрудников и др.
Название и структура каждого конкретного справочника определяется при его создании в конфигураторе. На этапе конфигурирования можно описать, какими свойствами обладает каждый конкретный справочник.
К настраиваемым свойствам относятся, например, длина и тип кода, количество уровней, поддержка уникальности кодов, набор реквизитов справочника. Помимо кода и наименования, механизм работы со справочниками позволяет создавать набор реквизитов для хранения любой дополнительной информации об элементе справочника.
Найтипонаименованию 1с как работает
В прошлых шагах я производил экспорт справочников в DBF формат. При этом я использовал не код, а имя для связанных атрибутов. Это очень важно, так как при вводе справочника в настройках была автоматическая нумерация. Связи терялись, а оставлять старые связи мне не хотелось, слишком там все было замучено. Короче, при вводе справочника в другую конфигурацию, в котором есть типизированные атрибуты пришлось снова эти связи устанавливать, а значит находить запись в справочнике по имени. К счастью, такая функция есть.
НайтиПоНаименованию
Найти элемент справочника по наименованию.
Параметры:
Строковое выражение с наименованием искомого элемента справочника.
Необязательный параметр. Числовое выражение — режим поиска: 1 — поиск внутри установленного подчинения (родителя); 0 — поиск во всем справочнике вне зависимости от родителя. Значение по умолчанию — 1.
Необязательный параметр. Числовое выражение — флаг поиска: 1 — найти точное соответствие наименования; 0 — найти наименование по первым символам.Значение по умолчанию — 0.
Возвращаемое значение:
Число 1 — если действие выполнено;
Число 0 — если действие не выполнено (элемент не найден).
Описание:
Метод НайтиПоНаименованию() выполняет поиск элемента справочника по наименованию, заданному параметром и позиционирует объект справочник на этом элементе.
Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект.
Будем тренироваться. Есть справочник контрагентов.
Вот мы и попробуем поискать в нем Авто-Карьер, смотрим код.
Так мы можем восстанавливать связи для типизированных атрибутов.