644 документа
← К списку

Манипулирование данными объектов

страница

Манипулирование данными объектов

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

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

Так вот, модуль объекта манипулирования данными будет всегда выполняться при создании объекта манипулирования данными. Кроме этого, он будет всегда выполняться и при интерактивном обращении пользователя к самой структуре данных, поскольку оно будет вызывать создание соответствующего объекта манипулирования данными. Например, при открытии формы элемента справочника будет создаваться объект СправочникОбъект.<имя>.

В модуле объекта манипулирования данными кроме всего прочего могут быть описаны процедуры с ключевым словом Экспорт, что подразумевает вызов этих процедур как методов соответствующего объекта манипулирования данными. Здесь важно не путать объект манипулирования данными с другими объектами, позволяющими получить доступ к данным этой информационной структуры.

Например, если мы для объекта конфигурации Справочник Клиенты опишем в модуле объекта процедуру (листинг 29.1), то в дальнейшем сможем вызывать ее как метод объекта СправочникОбъект.Клиенты (листинг 29.2).

Листинг 29.1. Процедура «Проверка()» в модуле справочника

Процедура Проверка() Экспорт

…

КонецПроцедуры;

Листинг 29.2. Вызов процедуры как метода объекта «Справочник»

Клиент = Справочники.Клиенты.НайтиПоКоду(1).ПолучитьОбъект();

Клиент.Проверка();

Однако следующий код будет приводить к ошибке, так как объект СправочникСсылка.Клиенты не имеет метода Проверка (листинг 29.3).

Листинг 29.3. Вызов процедуры «Проверка» приведет к ошибке

Клиент = Справочники.Клиенты.НайтиПоКоду(1);

Клиент.Проверка();

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

Таблица 29.1. Работа с данными объектов

Объект конфигурацииБаза данных — структура манипулирования даннымиВстроенный язык — структура манипулирования данными
КонстантаКонстантаКонстантаМенеджерЗначения.<Имя> (КонстантаМенеджер.<Имя>, КонстантыНабор)
СправочникЭлемент справочникаСправочникОбъект.<Имя>
ДокументДокументДокументОбъект.<Имя>
ПоследовательностьНабор записей последовательностиПоследовательностьНаборЗаписей.<Имя>
ПланВидовХарактеристикВид характеристикиПланВидовХарактеристикОбъект.<Имя>
ПланСчетовСчетПланСчетовОбъект.<Имя>
ПланВидовРасчетаВид расчетаПланВидовРасчетаОбъект.<Имя>
РегистрСведенийНабор записей регистра сведенийРегистрСведенийНаборЗаписей.<Имя> (РегистрСведенийМенеджерЗаписей.<Имя>)
РегистрНакопленияНабор записей регистра накопленияРегистрНакопленияНаборЗаписей.<Имя>
РегистрБухгалтерииНабор записей регистра бухгалтерииРегистрБухгалтерииНаборЗаписей.<Имя>
РегистрРасчетаНабор записей регистра расчетаРегистрРасчетаНаборЗаписей.<Имя>

Во-первых, для констант указаны три объекта манипулирования данными — КонстантаМенеджерЗначения.<имя>, КонстантаМенеджер.<имя> и КонстантыНабор. На самом деле манипулирование данными константы осуществляется при помощи объекта КонстантаМенеджерЗначения.<имя>.

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

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

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

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