Справочники 1с программно можно создавать используя свойства и методы.
Справочники в 1С — это объекты конфигурации, предназначенные для хранения данных, имеющих одинаковую структуру и носящие списочный характер. Например, в справочниках может храниться: перечень номенклатуры, контрагентов, сотрудников, банковских счетов и т.д. В статье рассматриваются базовые принципы работы с этим объектом метаданных.
Рассмотрим примеры программирования справочников 1с:Предприятие 8 на пример справочника “Номенклатура”.
Создать элемент справочника 1с программно.
Создание новых элементов и групп справочника производится с помощью программного объекта СправочникМенеджер.ИмяСправочника
. Данный объект доступен только на сервере.
Создание элементов справочников и групп элементов выполняется по следующему алгоритму:
- Создание элемента или группы;
- Заполнение владельца (если справочник подчиненный);
- Заполнение родителя (если справочник иерархический);
- Заполнение наименования и реквизитов (если не задана автоматическая нумерация, то и кода);
- Заполнение табличных частей;
- Запись элемента.
Программное создание элемента справочника выполняется с применением метода СоздатьЭлемент(). Например:
НовыйЭлемент=Справочники.Номенклатура.СоздатьЭлемент();
НовыйЭлемент.Наименование=Объект.Название;
НовыйЭлемент.Артикул=Объект.Артикул;
НовыйЭлемент.Записать();
Программное создание группы справочника:
НоваяГруппа=Справочники.Номенклатура.СоздатьГруппу();
НоваяГруппа.Наименование="Материалы";
НоваяГруппа.Записать();
Если планируем добавить Элемент Справочника в Группу, то в код вносим строку:
НовыйЭлемент.Родитель=НоваяГруппа.Ссылка;
Справочники 1с программно создаются так:
Поиск элементов справочника 1с
Для поиска элементов справочников в языке программирования 1С предусмотрено несколько методов:
НайтиПоКоду(Код, ПоискПоПолномуКоду, Родитель, Владелец)
НайтиПоНаименованию(Наименование, ТочноеСоответствие, Родитель, Владелец)
НайтиПоРеквизиту(ИмяРеквизита, ЗначениеРеквизита, Родитель, Владелец)
Во всех методах если поиск успешный, то будет возвращена ссылка на найденный элемент.
Для иллюстрации различных видов поиска создадим обработку “Поиск Номенклатуры”
Поиск элемента справочника 1с по коду.
Во-первых пример кода Поиска элемента справочника 1с по коду:
&НаСервере
Процедура ПоискПоКодуНаСервере()
Код=Объект.Код;
Номенклатура=Справочники.Номенклатура0.НайтиПоКоду(Код);
Объект.Номенклатура=Номенклатура;
//Объект.Номенклатура=Справочники.Номенклатура0.НайтиПоКоду(Объект.Код);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоКоду(Команда)
ПоискПоКодуНаСервере();
КонецПроцедуры
Поиск элемента справочника 1с по наименованию
Во-вторых пример кода поиска элемента справочника 1с по наименованию:
&НаСервере
Процедура ПоискНааименованиюСервере()
Наименование=Объект.Название;
Номенклатура=Справочники.Номенклатура0.НайтиПоНаименованию(Наименование);
Объект.Номенклатура=Номенклатура;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоНаименованию(Команда)
ПоискНааименованиюСервере();
КонецПроцедуры
Поиск элемента справочника 1с по реквизиту.
В-третьих пример кода поиска элемента справочника по реквизиту:
&НаСервере
Процедура ПоискПоРеквизитуНаСервере()
Реквизит=Объект.НазРеквизита;
Значение=Объект.ЗначРеквизита;
Номенклатура=Справочники.Номенклатура0.НайтиПоРеквизиту(Реквизит,Значение);
Объект.Номенклатура=Номенклатура;
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоРеквизиту(Команда)
ПоискПоРеквизитуНаСервере();
КонецПроцедуры
Открытие форм справочника 1с
Открытие любых форм справочников 1с производиться при помощи команды:
ОткрытьФорму(
ИмяФормы,
Параметры,
Владелец,
Уникальность,
Окно,
НавигационнаяСсылка,
ОписаниеОповещенияОЗакрытии,
РежимОткрытияОкна);
Для открытия формы элемента или группы справочника также возможно использовать более простой метод. Например:
ПоказатьЗначение(ОписаниеОповещенияОЗавершении, Значение);
Кода открытия формы справочника “Номенклатура”.Например
&НаКлиенте
Процедура ОткрытьНоменклатуру(Команда)
Открытьформу("Справочник.Номенклатура.Форма.ФормаЭлемента");
КонецПроцедуры
Обход элементов справочника 1с програмнно.
Для обхода элементов справочника в языке программирования 1С предусмотрено два метода:
Выбрать(Родитель, Владелец, Отбор, Порядок)
ВыбратьИерархически(Родитель, Владелец, Отбор, Порядок)
Методы отличаются порядком следования отобранных элементов: при иерархической выборке для каждого элемента сначала выбираются элементы, для которых он является родителем, а затем уже выбираются элементы следующего уровня.
Рассмотрим примеры обхода элементов справочника:
&НаСервере
Процедура ОбходВыборкойНаСервере()
// Обход всех элементов справочника Номенклатура
Выборка = Справочники.Номенклатура.Выбрать(); // Получение выборки всех элементов справочника
Пока Выборка.Следующий() Цикл
//действия с очередным элементом
Сообщить(Выборка.Наименование+" ");
Сообщить(Выборка.Артикул);
КонецЦикла;
КонецПроцедуры
В выборке можно использовать:
- Родителя
- Владельца
- Отбор(Используя Структуру 1с)
Справочники 1с удаление элементов программно.
Удаление элементов справочника 1с
Элементы справочника могут быть удалены одним из следующих способов:
Во-первых помечены на удаление. Например:
// Способ 1. Использование метода УстановитьПометкуУдаления()
НайденныйЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000002");
Номенклатура = НайденныйЭлемент.ПолучитьОбъект();
Номенклатура.УстановитьПометкуУдаления(Истина);
// Способ 2. Изменение свойства ПометкаУдаления
НайденныйЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000002");
Номенклатура = НайденныйЭлемент.ПолучитьОбъект();
Номенклатура.ПометкаУдаления = Истина;
Номенклатура.Записать();
Во-вторых непосредственное удаление элемента справочника 1с.
Непосредственное удаление – операция необратимая, в то время как пометку на удаление можно отменить. Пометка на удаление хранится в предопределенном реквизите ПометкаУдаления
. В пользовательском режиме помеченные на удаление элементы и группы справочника помечаются красным крестиком.
НайденныйЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000002");
Номенклатура = НайденныйЭлемент.ПолучитьОбъект();
Номенклатура.Удалить();