Манипулирование данными объектов
Несмотря на большое разнообразие объектов встроенного языка, предназначенных для работы с информационными структурами, создаваемыми на основе объектов конфигурации, лишь некоторые из объектов встроенного языка позволяют изменять данные, хранящиеся в этих информационных структурах. Такие объекты мы назовем объектами манипулирования данными.
Каждый тип объектов манипулирования данными имеет в конфигураторе соответствующий модуль, который называется либо модулем объекта, либо модулем набора записей, в зависимости от принадлежности к тому или иному объекту конфигурации. Для констант этот модуль называется модулем менеджера значений.
Так вот, модуль объекта манипулирования данными будет всегда выполняться при создании объекта манипулирования данными. Кроме этого, он будет всегда выполняться и при интерактивном обращении пользователя к самой структуре манипулирования данными, поскольку такое обращение будет вызывать создание соответствующего объекта манипулирования данными. Например, при открытии формы элемента справочника будет создаваться объект СправочникОбъект.<имя>.
В модуле объекта манипулирования данными, кроме всего прочего, могут быть описаны процедуры с ключевым словом Экспорт, что подразумевает вызов этих процедур как методов соответствующего объекта манипулирования данными. Здесь важно не путать объект манипулирования данными с другими объектами, позволяющими получить доступ к данным этой информационной структуры.
Например, если мы, для объекта конфигурации Справочник "Клиенты" опишем в модуле объекта процедуру:
Процедура Проверка() Экспорт
КонецПроцедуры; [561]
то в дальнейшем сможем вызывать ее как метод объекта СправочникОбъект.Клиенты:
Клиент = Справочники.Клиенты.НайтиПоКоду(1).ПолучитьОбъект();
Клиент.Проверка();
Однако следующий код будет приводить к ошибке, т.к. объект СправочникСсылка.Клиенты не имеет метода "Проверка":
Клиент = Справочники.Клиенты.НайтиПоКоду(1);
Клиент.Проверка();
Во-первых, для констант указаны три объекта манипулирования данными КонстантаМенеджерЗначения.<имя>, КонстантаМенеджер.<имя> и КонстантыНабор. На самом деле манипулирование данными константы осуществляется при помощи объекта КонстантаМенеджерЗначения.<имя>.
Два других объекта – КонстантаМенеджер.<имя> и КонстантыНабор – также позволяют изменять значения констант, хранящиеся в базе данных, однако они, при выполнении своих методов Установить() и Записать() вызывают создание объекта КонстантаМенеджер.<имя>, который и выполняет непосредственное изменение данных.
При выполнении метода Установить() объекта КонстантаМенеджер.<имя>, будет вызван модуль менеджера значения и обработчики событий ПриЗаписи() и ПередЗаписью() для изменяемой константы. При выполнении метода Записать() объекта НаборКонстант, модуль менеджера значения и соответствующие обработчики будут вызваны для каждой константы, входящей в набор.
Во-вторых, для регистра сведений указаны два объекта манипулирования данными. "В чистом виде" манипулирование данными регистра сведений осуществляется при помощи объекта РегистрСведенийНаборЗаписей.<имя>. [562]
Однако существует возможность манипулирования записями регистра сведений и при помощи объекта
РегистрСведенийМенеджерЗаписи.<имя>. Но объект РегистрСведенийМенеджерЗаписи.<имя> работает с данными регистра не напрямую, а через объект РегистрСведенийНаборЗаписей.<имя>. Таким образом, модуль набора записей, а также обработчики событий ПередЗаписью() и ПриЗаписи() набора записей, будут отрабатывать и при манипулировании объектом РегистрСведенийМенеджерЗаписи.<имя>. Однако процедуры и функции, описанные в модуле набора записей с ключевым словом Экспорт, не будут доступны как методы объекта РегистрСведенийМенеджерЗаписи.<имя>. [563]
структура манипулирования данными
объект манипулирования данными
(КонстантаМенеджер.<имя>, КонстантыНабор)
(РегистрСведенийМенеджерЗаписи.<имя>)