Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3 курс (заочка) / Методические пособия / Пособие для ответов на контрольные вопросы

.pdf
Скачиваний:
159
Добавлен:
15.02.2021
Размер:
46.69 Mб
Скачать

Краткий справочник разработчика 901

Во-первых, для констант указаны три объекта манипулирования

данными – КонстантаМенеджерЗначения.<имя>, КонстантаМенед-

жер.<имя> и КонстантыНабор. На самом деле манипулирование данными константы осуществляется при помощи объекта

КонстантаМенеджерЗначения.<имя>.

Два других объекта – КонстантаМенеджер.<имя> и Констан-

тыНабор – также позволяют изменять значения констант, хранящиеся в базе данных, однако при выполнении своих методов Установить() и Записать() они вызывают создание объекта КонстантаМенеджерЗначения.<имя>, который и выполняет непосредственное изменение данных.

При выполнении метода Установить() объекта КонстантаМенеджер.<имя> будет вызван модуль менеджера значения и обработчики событий ПриЗаписи() и ПередЗаписью() для изменяемой константы. При выполнении метода Записать() объекта КонстантыНабор модуль менеджера значения и соответствующие обработчики будут вызваны для каждой константы, входящей в набор.

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

борЗаписей.<имя>.

Однако существует возможность манипулирования записями регистра сведений и при помощи объекта РегистрСведенийМе-

неджерЗаписи.<имя>. Но объект РегистрСведенийМенеджерЗапи-

си.<имя> работает с данными регистра не напрямую, а через объект

РегистрСведенийНаборЗаписей.<имя>. Таким образом, модуль набора записей, а также обработчики событий ПередЗаписью() и ПриЗаписи() набора записей будут отрабатывать и при манипу-

лировании объектом РегистрСведенийМенеджерЗаписи.<имя>.

Однако процедуры и функции, описанные в модуле набора записей с ключевым словом Экспорт, не будут доступны как методы объекта

РегистрСведенийМенеджерЗаписи.<имя>.

902 1С:Предприятие 8.3. Практическое пособие разработчика

Константы

Объекты встроенного языка для работы с константами

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

Рис. 29.1. Объекты встроенного языка для работы с константами

ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными. Метод объекта, от которого идет стрелка, приводится в листинге под соответствующей цифрой, а объект, к которому идет стрелка, – это тип объекта, возвращаемого методом.

Узнай больше!

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

КонстантыНабор – предоставляет возможность проведения операций чтения и записи сразу для группы констант, в частном случае – для всех констант. Также используется в форме констант для хранения, записи и считывания констант.

КонстантаМенеджерЗначения.<имя> – используется для доступа к константе. Любая запись константы (интерактивно в форме,

объекты КонстантыНабор и КонстантаМенеджер.<имя>) создает

Краткий справочник разработчика 903

объект этого типа и производит запись с его помощью, что обеспечивает вызов модуля и обработчиков событий этого объекта.

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

Листинг 29.4. Примеры использования объектов

1.// Глобальный контекст // Константы

// Пример: установить значение константы. Константы.Бухгалтер.Установить("Сидоров Петр Иванович");

2.// объект КонстантыМенеджер

//.<имя константы>

//[<имя константы>]

//Для Каждого … Из … Цикл … КонецЦикла;

// Пример: прочитать значение константы.

Результат = Константы.ПрефиксНумерации.Получить(); Сообщить("Значение константы ПрефиксНумерации = "+ Результат);

//Пример: установить значение константы ПрефиксНумерации равным ЦБ. Константы["ПрефиксНумерации"].Установить("ЦБ"); Сообщить("Новое значение = " + Константы["ПрефиксНумерации"].Получить());

//Пример: очистить значения всех констант.

Для Каждого ОчереднаяКонстанта Из Константы Цикл ОчереднаяКонстанта.Установить(Неопределено);

КонецЦикла;

3.// объект КонстантыМенеджер // СоздатьНабор()

// Пример: установить новые значения нескольких констант. Набор = Константы.СоздатьНабор("Руководитель, Бухгалтер"); Набор.Руководитель = "Николаев Денис Павлович"; Набор.Бухгалтер = "Николаева Людмила Сергеевна"; Набор.Записать();

4.// объект КонстантаМенеджер.<имя>

//СоздатьМенеджерЗначения()

//Пример: вывести значения всех констант, существующих в конфигурации. Для Каждого ОчереднаяКонстанта Из Константы Цикл

ИмяКонст = ОчереднаяКонстанта.СоздатьМенеджерЗначения().Метаданные().Имя; ЗначениеКонст = ОчереднаяКонстанта.Получить(); Сообщить("Константа "+ ИмяКонст +" = "+ ЗначениеКонст);

КонецЦикла;

904 1С:Предприятие 8.3. Практическое пособие разработчика

Последовательность событий при записи констант из формы констант (записать и закрыть)

Рис. 29.2. Последовательность событий при записи констант из формы констант

Краткий справочник разработчика 905

ПРИМЕЧАНИЕ

Заливкой выделены события, выполняющиеся в транзакции записи.

Работа с формой констант осуществляется при помощи объекта КонстантыНабор, который, в свою очередь, использует объект

КонстантаМенеджерЗначения.<имя>.

Особенности внутренней реализации объекта КонстантыНабор таковы, что при записи набора констант обработчики события Обра-

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

Справочники

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

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

Рис. 29.3. Объекты встроенного языка для работы со справочниками

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. Последовательность событий при записи элемента справочника из формы элемента

ПРИМЕЧАНИЕ

Заливкой выделены события, выполняющиеся в транзакции записи.

910 1С:Предприятие 8.3. Практическое пособие разработчика

Документы

Объекты встроенного языка для работы с документами

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

Рис. 29.5. Объекты встроенного языка для работы с документами

ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными. Метод объекта, от которого идет стрелка, приводится в листинге под соответствующей цифрой, а объект, к которому идет стрелка, – это тип объекта, возвращаемого методом.

Узнай больше!

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

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