Манипулирование данными объектов
страницаМанипулирование данными объектов
Несмотря на большое разнообразие объектов встроенного языка, предназначенных для работы с данными, хранящимися в базе данных, лишь некоторые из них позволяют изменять данные, хранящиеся в базе данных. Такие объекты мы назовем объектами манипулирования данными.
Каждый тип объектов манипулирования данными имеет в конфигурации соответствующий модуль. Он называется либо модулем объекта, либо модулем набора записей, в зависимости от принадлежности к тому или иному объекту конфигурации. Для констант этот модуль называется модулем менеджера значений.
Так вот, модуль объекта манипулирования данными будет всегда выполняться при создании объекта манипулирования данными. Кроме этого, он будет всегда выполняться и при интерактивном обращении пользователя к самой структуре данных, поскольку оно будет вызывать создание соответствующего объекта манипулирования данными. Например, при открытии формы элемента справочника будет создаваться объект СправочникОбъект.<имя>.
В модуле объекта манипулирования данными кроме всего прочего могут быть описаны процедуры с ключевым словом Экспорт, что подразумевает вызов этих процедур как методов соответствующего объекта манипулирования данными. Здесь важно не путать объект манипулирования данными с другими объектами, позволяющими получить доступ к данным этой информационной структуры.
Например, если мы для объекта конфигурации Справочник Клиенты опишем в модуле объекта процедуру (листинг 29.1), то в дальнейшем сможем вызывать ее как метод объекта СправочникОбъект.Клиенты (листинг 29.2).
Листинг 29.1. Процедура «Проверка()» в модуле справочника
Процедура Проверка() Экспорт
…
КонецПроцедуры;
Листинг 29.2. Вызов процедуры как метода объекта «Справочник»
Клиент = Справочники.Клиенты.НайтиПоКоду(1).ПолучитьОбъект();
Клиент.Проверка();
Однако следующий код будет приводить к ошибке, так как объект СправочникСсылка.Клиенты не имеет метода Проверка (листинг 29.3).
Листинг 29.3. Вызов процедуры «Проверка» приведет к ошибке
Клиент = Справочники.Клиенты.НайтиПоКоду(1);
Клиент.Проверка();
В следующей таблице представлен перечень объектов, позволяющих манипулировать данными. Как всегда, не бывает правил без исключений, и существует два таких исключения.
Таблица 29.1. Работа с данными объектов
| Объект конфигурации | База данных — структура манипулирования данными | Встроенный язык — структура манипулирования данными |
|---|---|---|
| Константа | Константа | КонстантаМенеджерЗначения.<Имя> (КонстантаМенеджер.<Имя>, КонстантыНабор) |
| Справочник | Элемент справочника | СправочникОбъект.<Имя> |
| Документ | Документ | ДокументОбъект.<Имя> |
| Последовательность | Набор записей последовательности | ПоследовательностьНаборЗаписей.<Имя> |
| ПланВидовХарактеристик | Вид характеристики | ПланВидовХарактеристикОбъект.<Имя> |
| ПланСчетов | Счет | ПланСчетовОбъект.<Имя> |
| ПланВидовРасчета | Вид расчета | ПланВидовРасчетаОбъект.<Имя> |
| РегистрСведений | Набор записей регистра сведений | РегистрСведенийНаборЗаписей.<Имя> (РегистрСведенийМенеджерЗаписей.<Имя>) |
| РегистрНакопления | Набор записей регистра накопления | РегистрНакопленияНаборЗаписей.<Имя> |
| РегистрБухгалтерии | Набор записей регистра бухгалтерии | РегистрБухгалтерииНаборЗаписей.<Имя> |
| РегистрРасчета | Набор записей регистра расчета | РегистрРасчетаНаборЗаписей.<Имя> |
Во-первых, для констант указаны три объекта манипулирования данными — КонстантаМенеджерЗначения.<имя>, КонстантаМенеджер.<имя> и КонстантыНабор. На самом деле манипулирование данными константы осуществляется при помощи объекта КонстантаМенеджерЗначения.<имя>.
Два других объекта — КонстантаМенеджер.<имя> и КонстантыНабор — также позволяют изменять значения констант, хранящиеся в базе данных, однако при выполнении своих методов Установить() и Записать() они вызывают создание объекта КонстантаМенеджерЗначения.<имя>, который и выполняет непосредственное изменение данных.
При выполнении метода Установить() объекта КонстантаМенеджер.<имя> будет вызван модуль менеджера значения и обработчики событий ПриЗаписи() и ПередЗаписью() для изменяемой константы. При выполнении метода Записать() объекта КонстантыНабор модуль менеджера значения и соответствующие обработчики будут вызваны для каждой константы, входящей в набор.
Во-вторых, для регистра сведений указаны два объекта манипулирования данными. В чистом виде манипулирование данными регистра сведений осуществляется при помощи объекта РегистрСведенийНаборЗаписей.<имя>.
Однако существует возможность манипулирования записями регистра сведений и при помощи объекта РегистрСведенийМенеджерЗаписи.<имя>. Но объект РегистрСведенийМенеджерЗаписи.<имя> работает с данными регистра не напрямую, а через объект РегистрСведенийНаборЗаписей.<имя>. Таким образом, модуль набора записей, а также обработчики событий ПередЗаписью() и ПриЗаписи() набора записей будут отрабатывать и при манипулировании объектом РегистрСведенийМенеджерЗаписи.<имя>. Однако процедуры и функции, описанные в модуле набора записей с ключевым словом Экспорт, не будут доступны как методы объекта РегистрСведенийМенеджерЗаписи.<имя>.