Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Меркулова_Пособие_РазработкаУправляемыхПриложен...doc
Скачиваний:
15
Добавлен:
01.07.2025
Размер:
18 Мб
Скачать
☆

4.9. Модуль менеджера

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

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

Создадим функцию, возвращающую список «важных» реквизитов в зависимости от вида контрагента:

Функция ПолучитьВажныеРеквизиты(ВидКонтрагента) МассивРеквизитов = Новый Массив; Если ВидКонтрагента = Перечисления.ВидыКонтрагентов.Поставщик Тогда МассивРеквизитов.Добавить("ВидКонтрагента"); МассивРеквизитов.Добавить("ЮрАдрес"); МассивРеквизитов.Добавить("ИНН"); МассивРеквизитов.Добавить("ТипЦен"); МассивРеквизитов.Добавить("ЛимитКледита"); ИначеЕсли ВидКонтрагента = Перечисления.ВидыКонтрагентов.Покупатель Тогда МассивРеквизитов.Добавить("ВидКонтрагента"); МассивРеквизитов.Добавить("ЮрАдрес"); МассивРеквизитов.Добавить("ФактАдрес"); МассивРеквизитов.Добавить("ПроцентБонусов"); ИначеЕсли ВидКонтрагента = Перечисления.ВидыКонтрагентов.Банк Тогда МассивРеквизитов.Добавить("ВидКонтрагента"); МассивРеквизитов.Добавить("ЮрАдрес"); МассивРеквизитов.Добавить("ИНН"); МассивРеквизитов.Добавить("БИК"); ИначеЕсли ВидКонтрагента = Перечисления.ВидыКонтрагентов.Налоговая Тогда МассивРеквизитов.Добавить("ВидКонтрагента"); МассивРеквизитов.Добавить("ЮрАдрес"); МассивРеквизитов.Добавить("ИНН"); МассивРеквизитов.Добавить("КодИФНС"); КонецЕсли; КонецФункции

Где же ее правильнее разместить? Напрашивается вариант - в процедуре Модуля объекта ПередЗаписью(). Тем самым мы на этапе записи будем контролировать правильность заполнения нужных нам реквизитов. С точки зрения создания, изменения элемента справочника, нас все устраивает. Но нам необходимо, чтобы некоторые пользователи нашего приложения заносили контрагентов в ИБ без контроля, а спустя какое-то время мы будем выполнять проверку на корректность заполнения данных в справочнике. Тогда нужно будет написать обработку. И в этой обработке, перебирая элементы, проверять заполнение реквизитов. Таким образом, эту функцию придется разместить в коде обработки. А это получается дублирование кода, со всеми вытекающими проблемами. Можно получать объект каждого элемента, обращаться к функции, расположенной в его Модуле объекта. Но это будет дополнительные обращения к БД, тогда как в обработке нам достаточно только ссылок.

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

РаботаСКонтрагентами.ПолучитьСписокВажныхРеквизитов(ВидКонтрагента)

Но, на платформе 8.2 как раз для решения подобной задачи и был создан Модуль менежера. Там и разместим нашу функцию. А обращаться мы будем:

Справочники.Контрагенты.ПолучитьСписокВажныхРеквизитов(ВидКонтрагента)

Таким образом, наряду с предопределенными методами, мы можем самостоятельно разработать свои процедуры и обращаться к ним как методам Менеджера объекта, через точку.

Выводы

Итак, мы обсудили различные типы данных, которые могут встретиться вам при работе со справочниками. Подведем краткие итоги по их основным особенностям и использованию

СправочникиМенеджер – доступен через свойство глобального контекста Справочники. Предназначен для управления справочниками, позволяет получить доступ к объекту СправочникМенеджер конкретного справочника.

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

СправочникВыборка – объект этого типа предназначен для работы с выборкой элементов справочника, полученной по заданным условиям. Для получения выборки используется метод Выбрать() объекта СправочникМенеджер

СправочникСсылка – основная область применения – использование в реквизитах других объектов для указания ссылки на определенный элемент справочника. Ссылка – это идентификатор элемента. Если имеется объект СправочникСсылка, а элемент справочника нужно редактировать или выполнять с ним другие подобные действия (копирование элемента, например), от ссылки осуществляется переход к объекту типа СправочникОбъект.

СправочникОбъект – предназначен для манипуляций с отдельным элементом справочника, в частности, для чтения, изменения, добавления, удаления элементов.

Для работы с метаданными справочника можно использовать свойство глобального контекста Метаданные, или, например, метод Метаданные() объекта типа СправочникСсылка. Для работы с метаданными справочника применяется тип данных ОбъектМетаданных: Справочник.

Есть еще один тип данных, имеющий отношение к справочникам, о котором мы здесь не упоминали. Это – СправочникСписок – он используется для управления списком элементов справочника в табличных полях.