Записки программиста 1с

Справочники 1с программно

Справочники 1с программно можно создавать используя свойства и методы.

Справочники в 1С — это объекты конфигурации, предназначенные для хранения данных, имеющих одинаковую структуру и носящие списочный характер. Например, в справочниках может храниться: перечень номенклатуры, контрагентов, сотрудников, банковских счетов и т.д. В статье рассматриваются базовые принципы работы с этим объектом метаданных.

Рассмотрим примеры программирования справочников 1с:Предприятие 8 на пример справочника “Номенклатура”.

Spravochniki 1s programmno
Справочник 1с Номенклатура

Создать элемент справочника 1с программно.

Создание новых элементов и групп справочника производится с помощью программного объекта СправочникМенеджер.ИмяСправочника. Данный объект доступен только на сервере.

Создание элементов справочников и групп элементов выполняется по следующему алгоритму:

  • Создание элемента или группы;
  • Заполнение владельца (если справочник подчиненный);
  • Заполнение родителя (если справочник иерархический);
  • Заполнение наименования и реквизитов (если не задана автоматическая нумерация, то и кода);
  • Заполнение табличных частей;
  • Запись элемента.

Программное создание элемента справочника выполняется с применением метода СоздатьЭлемент(). Например:

НовыйЭлемент=Справочники.Номенклатура.СоздатьЭлемент();
	НовыйЭлемент.Наименование=Объект.Название;
	НовыйЭлемент.Артикул=Объект.Артикул;
	НовыйЭлемент.Записать();

Программное создание группы справочника:

НоваяГруппа=Справочники.Номенклатура.СоздатьГруппу();
НоваяГруппа.Наименование="Материалы";
НоваяГруппа.Записать();

Если планируем добавить Элемент Справочника в Группу, то в код вносим строку:

НовыйЭлемент.Родитель=НоваяГруппа.Ссылка;

Справочники 1с программно создаются так:

Создать элемент справочника 1с программно
Полный код создания справочника 1с программно

Поиск элементов справочника 1с

Для поиска элементов справочников в языке программирования 1С предусмотрено несколько методов:

  • НайтиПоКоду(Код, ПоискПоПолномуКоду, Родитель, Владелец)
  • НайтиПоНаименованию(Наименование, ТочноеСоответствие, Родитель, Владелец)
  • НайтиПоРеквизиту(ИмяРеквизита, ЗначениеРеквизита, Родитель, Владелец)

Во всех методах если поиск успешный, то будет возвращена ссылка на найденный элемент.

Для иллюстрации различных видов поиска создадим обработку “Поиск Номенклатуры”

Поиск элементов справочника 1с
Поиск элементов справочника 1с

Поиск элемента справочника 1с по коду.

Во-первых пример кода Поиска элемента справочника 1с по коду:

&НаСервере
Процедура ПоискПоКодуНаСервере()
	Код=Объект.Код;
	Номенклатура=Справочники.Номенклатура0.НайтиПоКоду(Код);
	Объект.Номенклатура=Номенклатура;
	//Объект.Номенклатура=Справочники.Номенклатура0.НайтиПоКоду(Объект.Код);
КонецПроцедуры

&НаКлиенте
Процедура ПоискПоКоду(Команда)
	ПоискПоКодуНаСервере();
КонецПроцедуры

Поиск элемента справочника 1с по наименованию

Во-вторых пример кода поиска элемента справочника 1с по наименованию:

&НаСервере
Процедура ПоискНааименованиюСервере()
	Наименование=Объект.Название;
	Номенклатура=Справочники.Номенклатура0.НайтиПоНаименованию(Наименование);
	Объект.Номенклатура=Номенклатура;
КонецПроцедуры

&НаКлиенте
Процедура ПоискПоНаименованию(Команда)
	ПоискНааименованиюСервере();
КонецПроцедуры

Поиск элемента справочника 1с по реквизиту.

В-третьих пример кода поиска элемента справочника по реквизиту:

&НаСервере
Процедура ПоискПоРеквизитуНаСервере()
	Реквизит=Объект.НазРеквизита;
	Значение=Объект.ЗначРеквизита;
Номенклатура=Справочники.Номенклатура0.НайтиПоРеквизиту(Реквизит,Значение);
	Объект.Номенклатура=Номенклатура;
КонецПроцедуры

&НаКлиенте
Процедура ПоискПоРеквизиту(Команда)
	ПоискПоРеквизитуНаСервере();
КонецПроцедуры

Открытие форм справочника 1с

Открытие любых форм справочников 1с производиться при помощи команды:

ОткрытьФорму(
    ИмяФормы,
    Параметры,
    Владелец,
    Уникальность,
    Окно,
    НавигационнаяСсылка,
    ОписаниеОповещенияОЗакрытии,
    РежимОткрытияОкна);

Для открытия формы элемента или группы справочника также возможно использовать более простой метод. Например:

ПоказатьЗначение(ОписаниеОповещенияОЗавершении, Значение);

Кода открытия формы справочника “Номенклатура”.Например

&НаКлиенте
Процедура ОткрытьНоменклатуру(Команда)
	Открытьформу("Справочник.Номенклатура.Форма.ФормаЭлемента");
КонецПроцедуры
 

Обход элементов справочника 1с програмнно.

Для обхода элементов справочника в языке программирования 1С предусмотрено два метода:

  • Выбрать(Родитель, Владелец, Отбор, Порядок)
  • ВыбратьИерархически(Родитель, Владелец, Отбор, Порядок)

Методы отличаются порядком следования отобранных элементов: при иерархической выборке для каждого элемента сначала выбираются элементы, для которых он является родителем, а затем уже выбираются элементы следующего уровня.

Рассмотрим примеры обхода элементов справочника:

&НаСервере
Процедура ОбходВыборкойНаСервере()
	// Обход всех элементов справочника Номенклатура
Выборка = Справочники.Номенклатура.Выбрать(); // Получение выборки всех элементов справочника
Пока Выборка.Следующий() Цикл
    //действия с очередным элементом
    Сообщить(Выборка.Наименование+"  ");
	Сообщить(Выборка.Артикул);
КонецЦикла;
КонецПроцедуры

В выборке можно использовать:

Справочники 1с удаление элементов программно.

Удаление элементов справочника 1с

Элементы справочника могут быть удалены одним из следующих способов:

Во-первых помечены на удаление. Например:

// Способ 1. Использование метода УстановитьПометкуУдаления()
НайденныйЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000002");
Номенклатура = НайденныйЭлемент.ПолучитьОбъект();
Номенклатура.УстановитьПометкуУдаления(Истина);

// Способ 2. Изменение свойства ПометкаУдаления
НайденныйЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000002");
Номенклатура = НайденныйЭлемент.ПолучитьОбъект();
Номенклатура.ПометкаУдаления = Истина;
Номенклатура.Записать();

Во-вторых непосредственное удаление элемента справочника 1с.

Непосредственное удаление – операция необратимая, в то время как пометку на удаление можно отменить. Пометка на удаление хранится в предопределенном реквизите ПометкаУдаления. В пользовательском режиме помеченные на удаление элементы и группы справочника помечаются красным крестиком.

НайденныйЭлемент = Справочники.Номенклатура.НайтиПоКоду("000000002");
Номенклатура = НайденныйЭлемент.ПолучитьОбъект();
Номенклатура.Удалить();

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *