3 курс (заочка) / Методические пособия / Пособие для ответов на контрольные вопросы
.pdfКраткий справочник разработчика 901
Во-первых, для констант указаны три объекта манипулирования
данными – КонстантаМенеджерЗначения.<имя>, КонстантаМенед-
жер.<имя> и КонстантыНабор. На самом деле манипулирование данными константы осуществляется при помощи объекта
КонстантаМенеджерЗначения.<имя>.
Два других объекта – КонстантаМенеджер.<имя> и Констан-
тыНабор – также позволяют изменять значения констант, хранящиеся в базе данных, однако при выполнении своих методов Установить() и Записать() они вызывают создание объекта КонстантаМенеджерЗначения.<имя>, который и выполняет непосредственное изменение данных.
При выполнении метода Установить() объекта КонстантаМенеджер.<имя> будет вызван модуль менеджера значения и обработчики событий ПриЗаписи() и ПередЗаписью() для изменяемой константы. При выполнении метода Записать() объекта КонстантыНабор модуль менеджера значения и соответствующие обработчики будут вызваны для каждой константы, входящей в набор.
Во-вторых, для регистра сведений указаны два объекта манипулирования данными. В чистом виде манипулирование данными регистра сведений осуществляется при помощи объекта РегистрСведенийНа-
борЗаписей.<имя>.
Однако существует возможность манипулирования записями регистра сведений и при помощи объекта РегистрСведенийМе-
неджерЗаписи.<имя>. Но объект РегистрСведенийМенеджерЗапи-
си.<имя> работает с данными регистра не напрямую, а через объект
РегистрСведенийНаборЗаписей.<имя>. Таким образом, модуль набора записей, а также обработчики событий ПередЗаписью() и ПриЗаписи() набора записей будут отрабатывать и при манипу-
лировании объектом РегистрСведенийМенеджерЗаписи.<имя>.
Однако процедуры и функции, описанные в модуле набора записей с ключевым словом Экспорт, не будут доступны как методы объекта
РегистрСведенийМенеджерЗаписи.<имя>.
902 1С:Предприятие 8.3. Практическое пособие разработчика
Константы
Объекты встроенного языка для работы с константами
На следующей схеме изображено взаимодействие объектов встроенного языка для работы с константами (рис. 29.1).
Рис. 29.1. Объекты встроенного языка для работы с константами
ПРИМЕЧАНИЕ
Заливкой выделен объект манипулирования данными. Метод объекта, от которого идет стрелка, приводится в листинге под соответствующей цифрой, а объект, к которому идет стрелка, – это тип объекта, возвращаемого методом.
Узнай больше!
Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты встроенного языка для работы с прикладными данными» на стр. 896.
КонстантыНабор – предоставляет возможность проведения операций чтения и записи сразу для группы констант, в частном случае – для всех констант. Также используется в форме констант для хранения, записи и считывания констант.
КонстантаМенеджерЗначения.<имя> – используется для доступа к константе. Любая запись константы (интерактивно в форме,
объекты КонстантыНабор и КонстантаМенеджер.<имя>) создает
Краткий справочник разработчика 903
объект этого типа и производит запись с его помощью, что обеспечивает вызов модуля и обработчиков событий этого объекта.
Ниже приведены примеры использования объектов встроенного языка для работы с константами (листинг 29.4).
Листинг 29.4. Примеры использования объектов
1.// Глобальный контекст // Константы
// Пример: установить значение константы. Константы.Бухгалтер.Установить("Сидоров Петр Иванович");
2.// объект КонстантыМенеджер
//.<имя константы>
//[<имя константы>]
//Для Каждого … Из … Цикл … КонецЦикла;
// Пример: прочитать значение константы.
Результат = Константы.ПрефиксНумерации.Получить(); Сообщить("Значение константы ПрефиксНумерации = "+ Результат);
//Пример: установить значение константы ПрефиксНумерации равным ЦБ. Константы["ПрефиксНумерации"].Установить("ЦБ"); Сообщить("Новое значение = " + Константы["ПрефиксНумерации"].Получить());
//Пример: очистить значения всех констант.
Для Каждого ОчереднаяКонстанта Из Константы Цикл ОчереднаяКонстанта.Установить(Неопределено);
КонецЦикла;
3.// объект КонстантыМенеджер // СоздатьНабор()
// Пример: установить новые значения нескольких констант. Набор = Константы.СоздатьНабор("Руководитель, Бухгалтер"); Набор.Руководитель = "Николаев Денис Павлович"; Набор.Бухгалтер = "Николаева Людмила Сергеевна"; Набор.Записать();
4.// объект КонстантаМенеджер.<имя>
//СоздатьМенеджерЗначения()
//Пример: вывести значения всех констант, существующих в конфигурации. Для Каждого ОчереднаяКонстанта Из Константы Цикл
ИмяКонст = ОчереднаяКонстанта.СоздатьМенеджерЗначения().Метаданные().Имя; ЗначениеКонст = ОчереднаяКонстанта.Получить(); Сообщить("Константа "+ ИмяКонст +" = "+ ЗначениеКонст);
КонецЦикла;
906 1С:Предприятие 8.3. Практическое пособие разработчика
ПРИМЕЧАНИЕ
Заливкой выделен объект манипулирования данными. Метод объекта, от которого идет стрелка, приводится в листинге под соответствующей цифрой (например, под цифрой 3 приводится метод НайтиПоКоду() объекта СправочникМенеджер.<имя>), а объект, к которому идет стрелка, – это тип объекта, возвращаемого методом (например,
СправочникСсылка.<имя>).
Узнай больше!
Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты встроенного языка для работы с прикладными данными» на стр. 896.
Ниже приведены примеры использования объектов встроенного языка для работы со справочниками (листинг 29.5).
Листинг 29.5. Примеры использования объектов
1. // Глобальный контекст // Справочники
// Пример: вывести все типы ссылок на элементы справочников, существующие в конфигурации. Массив = Справочники.ТипВсеСсылки().Типы(); Для Каждого ОчереднойТип из Массив Цикл
Сообщить(ОчереднойТип); КонецЦикла;
2. // объект СправочникиМенеджер // .<имя справочника> // [<имя справочника>]
// Для Каждого … Из … Цикл … КонецЦикла;
//Пример: создать новую группу справочника "Номенклатура". НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); НоваяГруппа.Наименование = "Моя новая группа"; НоваяГруппа.Записать();
//Пример: получить ссылку на справочник "Номенклатура". Справочники["Номенклатура"].ПолучитьСсылку();
3.// объект СправочникМенеджер.<Имя справочника>
//НайтиПоКоду()
//НайтиПоНаименованию()
//НайтиПоРеквизиту()
//ПустаяСсылка()
//ПолучитьСсылку()
//.<имя предопределенного элемента справочника>
Краткий справочник разработчика 907
//Пример: проверить, помечен ли на удаление элемент справочника "Номенклатура" с кодом 13. Если Справочники.Номенклатура.НайтиПоКоду(13).ПометкаУдаления Тогда
Сообщить("Элемент с кодом 13 помечен на удаление"); КонецЕсли;
//Пример: является ли элемент справочника "Номенклатура" с наименованием "Услуги" группой. Если Справочники.Номенклатура.НайтиПоНаименованию("Услуги", Истина).ЭтоГруппа Тогда
Сообщить("Элемент Услуги является группой"); КонецЕсли;
//Пример: проверить, что для всех элементов задан вид номенклатуры. ПустаяСсылкаПеречисления = Перечисления.ВидыНоменклатуры.ПустаяСсылка(); Если Не Справочники.Номенклатура.НайтиПоРеквизиту("ВидНоменклатуры",
ПустаяСсылкаПеречисления).Пустая() Тогда Сообщить("Есть элементы, для которых не задан вид номенклатуры");
КонецЕсли;
// Пример: передать пустую ссылку в параметр метода.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка());
4.// объект СправочникМенеджер.<Имя справочника>
//Выбрать()
//ВыбратьИерархически()
// Пример: вывести список элементов, расположенных в корне справочника.
Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка()); Пока Выборка.Следующий() Цикл
Если Не Выборка.ЭтоГруппа тогда Сообщить(Выборка); КонецЕсли;
КонецЦикла;
// Пример: удалить все элементы иерархического справочника. Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока Выборка.Следующий() Цикл
Выборка.Удалить(); КонецЦикла;
5.// объект СправочникМенеджер.<Имя справочника>
//СоздатьГруппу()
//СоздатьЭлемент()
//Пример: создать новый элемент справочника "Сотрудники". НовыйЭлемент = Справочники.Сотрудники.СоздатьЭлемент(); НовыйЭлемент.Наименование = "Смирнов Андрей Анатольевич";
//Заполнить табличную часть "ТрудоваяДеятельность". НоваяСтрокаТабличнойЧасти = НовыйЭлемент.ТрудоваяДеятельность.Добавить(); НоваяСтрокаТабличнойЧасти.Организация = "ООО НТЦ"; НоваяСтрокаТабличнойЧасти.НачалоРаботы = Дата(2013,02,01); НоваяСтрокаТабличнойЧасти.ОкончаниеРаботы = Дата(2013,08,31); НоваяСтрокаТабличнойЧасти.Должность = "Программист"; НовыйЭлемент.Записать();
6.// объект СправочникОбъект.<Имя справочника>, СправочникСсылка.<Имя справочника>
//Владелец
//Родитель
9081С:Предприятие 8.3. Практическое пособие разработчика
//Ссылка
//Пример: запретить изменение подчиненных элементов, если у
//владельца установлено соответствующее свойство
//"ИзмененияЗапрещены" в модуле формы элемента справочника.
Процедура ПередЗаписью(Отказ)
Если Владелец.ИзмененияЗапрещены Тогда Отказ = Истина; КонецЕсли;
КонецПроцедуры
7.// объект СправочникСсылка.<Имя справочника>
//ПолучитьОбъект()
//СправочникОбъект.<Имя справочника>
//Скопировать()
// Пример: изменить наименование элемента справочника.
Элемент = Справочники.Номенклатура.НайтиПоКоду(10).ПолучитьОбъект(); Элемент.Наименование = "Мое новое наименование"; Элемент.Записать();
// Пример: заполнить справочник тестовыми данными. Элемент = Справочники.Номенклатура.СоздатьЭлемент(); Элемент.Наименование = "Тестовый элемент"; Элемент.Записать(); Для ш = 1 по 1000 Цикл
НовыйЭлемент = Элемент.Скопировать(); НовыйЭлемент.Записать();
КонецЦикла;
8.// объект СправочникВыборка.<Имя справочника>
//Ссылка
//Пример: заполнить табличную часть документа
//"ПриходнаяНакладная" всеми элементами из указанной группы справочника "Номенклатура". Выборка = Справочники.Номенклатура.ВыбратьИерархически(ПолеВвода1); Пока Выборка.Следующий() Цикл
СсылкаНаНоменклатуру = Выборка.Ссылка; Если СсылкаНаНоменклатуру.ЭтоГруппа Тогда Продолжить; КонецЕсли; НоваяСтрока = Материалы.Добавить();
НоваяСтрока.Материал = СсылкаНаНоменклатуру; КонецЦикла;
9.// объект СправочникВыборка.<Имя справочника>
//ПолучитьОбъект()
//Пример: пометить все элементы неиерархического справочника на удаление. Выборка = Справочники.Клиенты.Выбрать(); Пока Выборка.Следующий() Цикл
Выборка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина); КонецЦикла;
Краткий справочник разработчика 909
Последовательность событий при записи элемента справочника из формы элемента (записать и закрыть)
Рис. 29.4. Последовательность событий при записи элемента справочника из формы элемента
ПРИМЕЧАНИЕ
Заливкой выделены события, выполняющиеся в транзакции записи.