На следующей схеме изображено взаимодействие объектов встроенного языка для работы со справочниками.
Ниже приведены примеры использования объектов встроенного языка для работы со справочниками.
// 1. Глобальный контекст
// Справочники
// Пример: вывести все типы ссылок на элементы справочников, существующих в конфигурации.
Массив = Справочники.ТипВсеСсылки().Типы();
Для Каждого ОчереднойТип из Массив Цикл
Сообщить(ОчереднойТип);
КонецЦикла;
// 2. объект СправочникиМенеджер
// .<имя справочника>
// [<имя справочника>]
// Для Каждого ... Из ... Цикл ... КонецЦикла;
// Пример: создать новую группу справочника "Номенклатура".
НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
НоваяГруппа.Наименование = "Моя новая группа";
НоваяГруппа.Записать();
// Пример: получить ссылку на справочник "Номенклатура".
Справочники["Номенклатура"].ПолучитьСсылку();
// 3. объект СправочникиМенеджер.<Имя справочника>
// НайтиПоКоду()
// НайтиПоНаименованию()
// НайтиПоРеквизиту()
// ПустаяСсылка()
// ПолучитьСсылку()
// .<имя предопределенного элемента справочника>
// Пример: проверить, помечен ли на удаление элемент справочника "Номенклатура" с кодом 13.
Если Справочники.Номенклатура.НайтиПоКоду(13).ПометкаУдаления Тогда
Сообщить("Элемент с кодом 13 помечен на удаление");
КонецЕсли;
// Пример: является ли элемент справочника "Номенклатура" с наименованием "Услуги" группой.
Если Справочники.Номенклатура.НайтиПоНаименованию("Услуги", Истина).ЭтоГруппа Тогда
Сообщить("Элемент Услуги является группой");
КонецЕсли;
// Пример: проверить, что для всех элементов задан вид номенклатуры.
ПустаяСсылкаПеречисления = Перечисления.ВидыНоменклатуры.ПустаяСсылка();
Если Не Справочники.Номенклатура.НайтиПоРеквизиту("ВидНоменклатуры", ПустаяСсылкаПеречисления).Пустая() Тогда
Сообщить("Есть элементы, для которых не задан вид номенклатуры");
КонецЕсли;
// Пример: передать пустую ссылку в параметр метода.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка());
// 4. объект СправочникиМенедежер.<Имя справочника>
// Выбрать()
// ВыбратьИерархически()
// Пример: вывести список элементов, расположенных в корне справочника.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка());
Пока Выборка.Следующий() Цикл
Если Не Выборка.ЭтоГруппа Тогда
Сообщить(Выборка);
КонецЕсли;
КонецЦикла;
// Пример: удалить все элементы иерархического справочника.
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Выборка.Удалить();
КонецЦикла;
// 5. объект СправочникМенеджер.<Имя справочника>
// СоздатьГруппу()
// СоздатьЭлемент()
// Пример: создать новый элемент справочника "Сотрудники".
НовыйЭлемент = Справочники.Сотрудники.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Смирнов Андрей Анатольевич";
// Заполнить табличную часть "ТрудоваяДеятельность".
НоваяСтрокаТабличнойЧасти = НовыйЭлемент.ТрудоваяДеятельность.Добавить();
НоваяСтрокаТабличнойЧасти.Организация = "ООО НТЦ";
НоваяСтрокаТабличнойЧасти.НачалоРаботы = Дата(2013,02,01);
НоваяСтрокаТабличнойЧасти.ОкончаниеРаботы = Дата(2013,08,31);
НоваяСтрокаТабличнойЧасти.Должность = "Программист";
НовыйЭлемент.Записать();
// 6. объект СправочникОбъект.<Имя справочника>, СправочникСсылка.<Имя справочника>
// Владелец
// Родитель
// Ссылка
// Пример: запретить изменение подчиненных элементов, если у
// владельца установлено соответствующее свойство
// "ИзмененияЗапрещены" в модуле формы элемента справочника.
Процедура ПередЗаписью(Отказ)
Если Владелец.ИзмененияЗапрещены Тогда Отказ = Истина;
КонецЕсли;
КонецПроцедуры
// 7. объект СправочникСсылка.<Имя справочника>
// ПолучитьОбъект()
// СправочникиОбъект.<Имя справочника>
// Скопировать()
// Пример: изменить наименование элемента справочника.
Элемент = Справочники.Номенклатура.НайтиПоКоду(10).ПолучитьОбъект();
Элемент.Наименование = "Мое новое наименование";
Элемент.Записать();
// Пример: заполнить справочник тестовыми данными.
Элемент = Справочники.Номенклатура.СоздатьЭлемент();
Элемент.Наименование = "Тестовый элемент";
Элемент.Записать();
Для ш = 1 по 1000 Цикл
НовыйЭлемент = Элемент.Скопировать();
НовыйЭлемент.Записать();
КонецЦикла;
// 8. объект СправочникВыборка.<Имя справочника>
// Ссылка
// Пример: заполнить табличную часть документа
// "ПриходнаяНакладная" всеми элементами из указанной группы справочника "Номенклатура".
Выборка = Справочники.Номенклатура.ВыбратьИерархически(ПолеВвода1);
Пока Выборка.Следующий() Цикл
СсылкаНаНоменклатуру = Выборка.Ссылка;
Если СсылкаНаНоменклатуру.ЭтоГруппа Тогда Продолжить;
КонецЕсли;
НоваяСтрока = Материалы.Добавить();
НоваяСтрока.Материал = СсылкаНаНоменклатуру;
КонецЦикла;
// 9. объект СправочникВыборка.<Имя справочника>
// ПолучитьОбъект()
// Пример: пометить все элементы неиерархического справочника на удаление.
Выборка = Справочники.Клиенты.Выбрать();
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина);
КонецЦикла;
ПРИМЕЧАНИЕ. Заливкой выделены события, выполняющиеся в транзакции записи.
// Справочники
// Пример: вывести все типы ссылок на элементы справочников, существующих в конфигурации.
Массив = Справочники.ТипВсеСсылки().Типы();
Для Каждого ОчереднойТип из Массив Цикл
Сообщить(ОчереднойТип);
КонецЦикла;
// 2. объект СправочникиМенеджер
// .<имя справочника>
// [<имя справочника>]
// Для Каждого ... Из ... Цикл ... КонецЦикла;
// Пример: создать новую группу справочника "Номенклатура".
НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу();
НоваяГруппа.Наименование = "Моя новая группа";
НоваяГруппа.Записать();
// Пример: получить ссылку на справочник "Номенклатура".
Справочники["Номенклатура"].ПолучитьСсылку();
// 3. объект СправочникиМенеджер.<Имя справочника>
// НайтиПоКоду()
// НайтиПоНаименованию()
// НайтиПоРеквизиту()
// ПустаяСсылка()
// ПолучитьСсылку()
// .<имя предопределенного элемента справочника>
// Пример: проверить, помечен ли на удаление элемент справочника "Номенклатура" с кодом 13.
Если Справочники.Номенклатура.НайтиПоКоду(13).ПометкаУдаления Тогда
Сообщить("Элемент с кодом 13 помечен на удаление");
КонецЕсли;
// Пример: является ли элемент справочника "Номенклатура" с наименованием "Услуги" группой.
Если Справочники.Номенклатура.НайтиПоНаименованию("Услуги", Истина).ЭтоГруппа Тогда
Сообщить("Элемент Услуги является группой");
КонецЕсли;
// Пример: проверить, что для всех элементов задан вид номенклатуры.
ПустаяСсылкаПеречисления = Перечисления.ВидыНоменклатуры.ПустаяСсылка();
Если Не Справочники.Номенклатура.НайтиПоРеквизиту("ВидНоменклатуры", ПустаяСсылкаПеречисления).Пустая() Тогда
Сообщить("Есть элементы, для которых не задан вид номенклатуры");
КонецЕсли;
// Пример: передать пустую ссылку в параметр метода.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка());
// 4. объект СправочникиМенедежер.<Имя справочника>
// Выбрать()
// ВыбратьИерархически()
// Пример: вывести список элементов, расположенных в корне справочника.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка());
Пока Выборка.Следующий() Цикл
Если Не Выборка.ЭтоГруппа Тогда
Сообщить(Выборка);
КонецЕсли;
КонецЦикла;
// Пример: удалить все элементы иерархического справочника.
Выборка = Справочники.Номенклатура.ВыбратьИерархически();
Пока Выборка.Следующий() Цикл
Выборка.Удалить();
КонецЦикла;
// 5. объект СправочникМенеджер.<Имя справочника>
// СоздатьГруппу()
// СоздатьЭлемент()
// Пример: создать новый элемент справочника "Сотрудники".
НовыйЭлемент = Справочники.Сотрудники.СоздатьЭлемент();
НовыйЭлемент.Наименование = "Смирнов Андрей Анатольевич";
// Заполнить табличную часть "ТрудоваяДеятельность".
НоваяСтрокаТабличнойЧасти = НовыйЭлемент.ТрудоваяДеятельность.Добавить();
НоваяСтрокаТабличнойЧасти.Организация = "ООО НТЦ";
НоваяСтрокаТабличнойЧасти.НачалоРаботы = Дата(2013,02,01);
НоваяСтрокаТабличнойЧасти.ОкончаниеРаботы = Дата(2013,08,31);
НоваяСтрокаТабличнойЧасти.Должность = "Программист";
НовыйЭлемент.Записать();
// 6. объект СправочникОбъект.<Имя справочника>, СправочникСсылка.<Имя справочника>
// Владелец
// Родитель
// Ссылка
// Пример: запретить изменение подчиненных элементов, если у
// владельца установлено соответствующее свойство
// "ИзмененияЗапрещены" в модуле формы элемента справочника.
Процедура ПередЗаписью(Отказ)
Если Владелец.ИзмененияЗапрещены Тогда Отказ = Истина;
КонецЕсли;
КонецПроцедуры
// 7. объект СправочникСсылка.<Имя справочника>
// ПолучитьОбъект()
// СправочникиОбъект.<Имя справочника>
// Скопировать()
// Пример: изменить наименование элемента справочника.
Элемент = Справочники.Номенклатура.НайтиПоКоду(10).ПолучитьОбъект();
Элемент.Наименование = "Мое новое наименование";
Элемент.Записать();
// Пример: заполнить справочник тестовыми данными.
Элемент = Справочники.Номенклатура.СоздатьЭлемент();
Элемент.Наименование = "Тестовый элемент";
Элемент.Записать();
Для ш = 1 по 1000 Цикл
НовыйЭлемент = Элемент.Скопировать();
НовыйЭлемент.Записать();
КонецЦикла;
// 8. объект СправочникВыборка.<Имя справочника>
// Ссылка
// Пример: заполнить табличную часть документа
// "ПриходнаяНакладная" всеми элементами из указанной группы справочника "Номенклатура".
Выборка = Справочники.Номенклатура.ВыбратьИерархически(ПолеВвода1);
Пока Выборка.Следующий() Цикл
СсылкаНаНоменклатуру = Выборка.Ссылка;
Если СсылкаНаНоменклатуру.ЭтоГруппа Тогда Продолжить;
КонецЕсли;
НоваяСтрока = Материалы.Добавить();
НоваяСтрока.Материал = СсылкаНаНоменклатуру;
КонецЦикла;
// 9. объект СправочникВыборка.<Имя справочника>
// ПолучитьОбъект()
// Пример: пометить все элементы неиерархического справочника на удаление.
Выборка = Справочники.Клиенты.Выбрать();
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина);
КонецЦикла;
Комментариев нет :
Отправить комментарий