воскресенье, 27 апреля 2014 г.

Справочники

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


Ниже приведены примеры использования объектов встроенного языка для работы со справочниками.

// 1. Глобальный контекст
//    Справочники

// Пример: вывести все типы ссылок на элементы справочников, существующих в конфигурации.
Массив = Справочники.ТипВсеСсылки().Типы();
Для Каждого
ОчереднойТип из Массив Цикл
   
Сообщить(ОчереднойТип);
КонецЦикла;

// 2. объект СправочникиМенеджер
//    .<имя справочника>
//    [<имя справочника>]
//    Для Каждого ... Из ... Цикл ... КонецЦикла;

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

// Пример: получить ссылку на справочник "Номенклатура".
Справочники["Номенклатура"].ПолучитьСсылку();

// 3. объект СправочникиМенеджер.<Имя справочника>
//    НайтиПоКоду()
//    НайтиПоНаименованию()
//    НайтиПоРеквизиту()
//    ПустаяСсылка()
//    ПолучитьСсылку()
//    .<имя предопределенного элемента справочника>

// Пример: проверить, помечен ли на удаление элемент справочника "Номенклатура" с кодом 13.
Если Справочники.Номенклатура.НайтиПоКоду(13).ПометкаУдаления Тогда
   
Сообщить("Элемент с кодом 13 помечен на удаление");
КонецЕсли;

// Пример: является ли элемент справочника "Номенклатура" с наименованием "Услуги" группой.
Если Справочники.Номенклатура.НайтиПоНаименованию("Услуги", Истина).ЭтоГруппа Тогда
   
Сообщить("Элемент Услуги является группой");
КонецЕсли;

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

// Пример: передать пустую ссылку в параметр метода.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка());

// 4. объект СправочникиМенедежер.<Имя справочника>
//    Выбрать()
//    ВыбратьИерархически()

// Пример: вывести список элементов, расположенных в корне справочника.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка());
Пока
Выборка.Следующий() Цикл
    Если Не
Выборка.ЭтоГруппа Тогда
       
Сообщить(Выборка);
    КонецЕсли;
КонецЦикла;

// Пример: удалить все элементы иерархического справочника.
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока
Выборка.Следующий() Цикл
   
Выборка.Удалить();
КонецЦикла;

// 5. объект СправочникМенеджер.<Имя справочника>
//    СоздатьГруппу()
//    СоздатьЭлемент()

// Пример: создать новый элемент справочника "Сотрудники".
НовыйЭлемент = Справочники.Сотрудники.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Смирнов Андрей Анатольевич";
// Заполнить табличную часть "ТрудоваяДеятельность".
НоваяСтрокаТабличнойЧасти = НовыйЭлемент.ТрудоваяДеятельность.Добавить();
НоваяСтрокаТабличнойЧасти.Организация = "ООО НТЦ";
НоваяСтрокаТабличнойЧасти.НачалоРаботы = Дата(2013,02,01);
НоваяСтрокаТабличнойЧасти.ОкончаниеРаботы = Дата(2013,08,31);
НоваяСтрокаТабличнойЧасти.Должность = "Программист";
НовыйЭлемент.Записать();

// 6. объект СправочникОбъект.<Имя справочника>, СправочникСсылка.<Имя справочника>
//    Владелец
//    Родитель
//    Ссылка

// Пример: запретить изменение подчиненных элементов, если у
// владельца установлено соответствующее свойство
// "ИзмененияЗапрещены" в модуле формы элемента справочника.
Процедура ПередЗаписью(Отказ)
    Если
Владелец.ИзмененияЗапрещены Тогда Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

// 7. объект СправочникСсылка.<Имя справочника>
//    ПолучитьОбъект()
//    СправочникиОбъект.<Имя справочника>
//    Скопировать()

// Пример: изменить наименование элемента справочника.
Элемент = Справочники.Номенклатура.НайтиПоКоду(10).ПолучитьОбъект();
Элемент.Наименование = "Мое новое наименование";
Элемент.Записать();

// Пример: заполнить справочник тестовыми данными.
Элемент = Справочники.Номенклатура.СоздатьЭлемент();
Элемент.Наименование = "Тестовый элемент";
Элемент.Записать();
Для
ш = 1 по 1000 Цикл
   
НовыйЭлемент = Элемент.Скопировать();
   
НовыйЭлемент.Записать();
КонецЦикла;

// 8. объект СправочникВыборка.<Имя справочника>
//    Ссылка

// Пример: заполнить табличную часть документа
// "ПриходнаяНакладная" всеми элементами из указанной группы справочника "Номенклатура".
Выборка = Справочники.Номенклатура.ВыбратьИерархически(ПолеВвода1);
Пока
Выборка.Следующий() Цикл
   
СсылкаНаНоменклатуру = Выборка.Ссылка;
    Если
СсылкаНаНоменклатуру.ЭтоГруппа Тогда Продолжить;
    КонецЕсли;
   
НоваяСтрока = Материалы.Добавить();
   
НоваяСтрока.Материал = СсылкаНаНоменклатуру;
КонецЦикла;

// 9. объект СправочникВыборка.<Имя справочника>
//    ПолучитьОбъект()

// Пример: пометить все элементы неиерархического справочника на удаление.
Выборка = Справочники.Клиенты.Выбрать();
Пока
Выборка.Следующий() Цикл
   
Выборка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина);
КонецЦикла;




ПРИМЕЧАНИЕ. Заливкой выделены события, выполняющиеся в транзакции записи.


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

Комментариев нет :

Отправить комментарий