Ниже в справочник Сотрудники программно добавляется новый сотрудник в группу Работающие. В справочнике заполняется поля Наименование, ДатаПриема и пара периодических реквизитов.
7.7
СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ИспользоватьРодителя(грпРаботающие); СпрСотр.Новый(); СпрСотр.Наименование = "Иванов Иван Иванович"; СпрСотр.ДатаПриема = '01.01.2002'; СпрСотр.Записать(); //установка периодических реквизитов возможна только после записи элемента СпрСотр.Категория.Установить (СпрСотр.ДатаПриема, ктгСовместители); СпрСотр.Должность.Установить (СпрСотр.ДатаПриема, длжПлотник); а можно сделать красивее:
СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ИспользоватьРодителя(грпРаботающие); СпрСотр.ИспользоватьДату(ДатаПриема); //внимание! СпрСотр.Новый(); СпрСотр.Наименование = "Иванов Иван Иванович"; СпрСотр.ДатаПриема = '01.01.2002'; //доступ к периодическим реквизитам становится такой же, как к обычным СпрСотр.Категория = ктгСовместители; СпрСотр.Должность = длжПлотник; СпрСотр.Записать();
Внимание! В Конфигураторе можно задать для реквизита то, что он действителен только для элемента, только для группы или для обоих. Например, поле ДатаПриема не имеет смысла для группы Работающие. Поэтому не стоит обращаться к реквизитам элементов, если вы работаете с группой и наоборот.
При создании множества элементов справочника для ускорения работы можно заключить цикл в транзакцию. При этом реальное создание всех элементов произойдет только по команде ЗафиксироватьТранзакцию(). На время выполнения транзакции справочник блокируется.
7.7
СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); НачатьТранзакцию();
Для Ном = 1 По 100 Цикл .....СпрСотр.Новый(); .....СпрСотр.Наименование = "Новый " + Строка(Ном); .....СпрСотр.Записать(); КонецЦикла;
ЗафиксироватьТранзакцию();
СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); Режим = 0; //выбирать без учета иерархии, 1 - с учетом (по умолч.) СпрСотр.ВыбратьЭлементы(Режим); Пока СпрСотр.ПолучитьЭлемент()=1 Цикл .....<действия с очередным элементом/группой> КонецЦикла;
Фильтрация (отбор)
СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); РежимИерархии = 1; //1- выбирать с учетом иерархии, 0 - без учета РежимГрупп = 0; //0 - не включать в выборку группы, 1 - включать ИмяРеквизита = "Год"; //в Конфигураторе у реквизита должен быть установлен флажок Отбор Значение = 1980; СпрСотр.ВыбратьЭлементыПоРеквизиту(ИмяРеквизита,Значение,РежимИерархии, РежимГрупп); Пока СпрСотр.ПолучитьЭлемент()=1 Цикл .....<действия с очередным элементом> КонецЦикла;