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




Ниже в справочник Сотрудники программно добавляется новый сотрудник в группу Работающие. В справочнике заполняется поля Наименование, ДатаПриема и пара периодических реквизитов.

7.7 СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ИспользоватьРодителя(грпРаботающие); СпрСотр.Новый(); СпрСотр.Наименование = "Иванов Иван Иванович"; СпрСотр.ДатаПриема = '01.01.2002'; СпрСотр.Записать(); //установка периодических реквизитов возможна только после записи элемента СпрСотр.Категория.Установить (СпрСотр.ДатаПриема, ктгСовместители); СпрСотр.Должность.Установить (СпрСотр.ДатаПриема, длжПлотник); а можно сделать красивее: СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.ИспользоватьРодителя(грпРаботающие); СпрСотр.ИспользоватьДату(ДатаПриема); //внимание! СпрСотр.Новый(); СпрСотр.Наименование = "Иванов Иван Иванович"; СпрСотр.ДатаПриема = '01.01.2002'; //доступ к периодическим реквизитам становится такой же, как к обычным СпрСотр.Категория = ктгСовместители; СпрСотр.Должность = длжПлотник; СпрСотр.Записать();  
8.0 Нов = Справочники.Сотрудники.СоздатьЭлемент(); Нов.Родитель = грпРаботающие; Нов.Наименование = "Иванов Иван Иванович"; Нов.ДатаПриема = '01.01.2002'; Нов.Записать(); //в версии 8.0 нет периодических реквизитов

Программное создание групп

7.7 СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); СпрСотр.НоваяГруппа(); СпрСотр.Наименование = "Работающие"; СпрСотр.Записать(); СпрСотр.НоваяГруппа(); СпрСотр.Наименование = "Уволенные"; СпрСотр.Записать();  
8.0 Нов = Справочники.Сотрудники.СоздатьГруппу(); Нов.Наименование = "Работающие"; Нов.Записать(); Нов = Справочники["Сотрудники"].СоздатьГруппу(); Нов.Наименование = "Работающие"; Нов.Записать();

Внимание! В Конфигураторе можно задать для реквизита то, что он действителен только для элемента, только для группы или для обоих. Например, поле ДатаПриема не имеет смысла для группы Работающие. Поэтому не стоит обращаться к реквизитам элементов, если вы работаете с группой и наоборот.

Транзакции

При создании множества элементов справочника для ускорения работы можно заключить цикл в транзакцию. При этом реальное создание всех элементов произойдет только по команде ЗафиксироватьТранзакцию(). На время выполнения транзакции справочник блокируется.

7.7 СпрСотр = СоздатьОбъект("Справочник.Сотрудники"); НачатьТранзакцию(); Для Ном = 1 По 100 Цикл.....СпрСотр.Новый();.....СпрСотр.Наименование = "Новый " + Строка(Ном);.....СпрСотр.Записать(); КонецЦикла; ЗафиксироватьТранзакцию();
8.0 СпрСотр = Справочники.Сотрудники; НачатьТранзакцию(); Для Ном = 1 По 100 Цикл.....Нов = СпрСотр.СоздатьЭлемент();.....Нов.Наименование = "Новый " + Строка(Ном);.....Нов.Записать(); КонецЦикла; ЗафиксироватьТранзакцию();

 

Перебор элементов

Простой перебор

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
Режим = 0; //выбирать без учета иерархии, 1 - с учетом (по умолч.)
СпрСотр. ВыбратьЭлементы (Режим);
Пока СпрСотр. ПолучитьЭлемент ()=1 Цикл
.....<действия с очередным элементом/группой>
КонецЦикла;

Фильтрация (отбор)

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

Фильтрация в цикле

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр. ВыбратьЭлементы ();
Пока СпрСотр. ПолучитьЭлемент ()=1 Цикл

Если СпрСотр.Должность <> длжПлотник Тогда
....Продолжить; //этого сотрудника пропускаем, перейти в начало цикла
КонецЕсли;

<действия с очередным элементом>

КонецЦикла;

Порядок сортировки

Перед выборкой можно задать порядок сортировки следующими методами:

ПорядокКодов()
ПорядокНаименований()
ПорядокРеквизита(ИмяРекв) //у реквизита должен быть установлен флажок Сортировка в Конфигураторе
ОбратныйПорядок()

Например, ниже открывается выборка сотрудников, отсортированных по номерам по убыванию:

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

Запрос к справочнику

Перебор элементов справочника можно организовать через Запрос. Часто это бывает удобнее, если применяется сложное условие отбора или группировка элементов. Подробнее см. Запросы

Поиск элемента

Поиск элемента

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
Если СпрСотр. НайтиЭлемент (ВыбрСотр)=1 Тогда
....//элемент становится текущим
....СпрСотр.Родитель = грпРаботающие;
....СпрСотр.Записать();
КонецЕсли;

Поиск по коду

Если СпрСотр. НайтиПоКоду (1) = 1 Тогда
....ЭлементИлиГруппа = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск по наименованию

Если СпрСотр. НайтиПоНаименованию ("Работающие")=1 Тогда
....грпРаботающие = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Режим = 1; // 1 - поиск внутри установленного подчинения (родителя) (по умолч.); 0 - поиск во всем справочнике
ФлагПоиска = 0; //1 - найти точное соответствие; 0 - найти наименование по первым символам (по умолч)
СпрСотр.ИспользоватьРодителя(грпРаботающие);
Если СпрСотр.НайтиПоНаименованию("Ив",Режим,ФлагПоиска)=1 Тогда
....ПервыйРаботающийИв = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск по реквизиту

ИмяРекв = "Год"; //у реквизита должен быть установлен флажок Сортировка в Конфигураторе
ФлагГлобПоиска = 1; // 1- искать во всем справочнике, 0 - искать в пределах подчинения
Если СпрСотр. НайтиПоРеквизиту (ИмяРекв,1980,ФлагГлобПоиска)=1 Тогда
.....НайденныйЭлемент = СпрСотр.ТекущийЭлемент();
КонецЕсли;

Поиск элемента в цикле

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр. ВыбратьЭлементы ();
Пока СпрСотр. ПолучитьЭлемент ()=1 Цикл

Если СпрСотр.Должность = длжПлотник Тогда
....Прервать; //нашли работающего плотника! выйти из цикла
КонецЕсли;

КонецЦикла;
<действия с найденным элементом>

Запрос к справочнику

Поиск элемента справочника можно организовать через Запрос. Часто это бывает удобнее, если применяется сложное условие отбора. Подробнее см. Запросы

Удаление элементов



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: