helpf.pro
Регистрация
 +3 
Распечатать

1С 8.2 УП : Модуль менеджера объекта

Рассмотрим работу с Модулем менеджера объектов.

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

Создадим функцию, возвращающую список «важных» реквизитов в зависимости от вида контрагента:
Код 1C v 8.2 УП
 Функция ПолучитьВажныеРеквизиты(ВидКонтрагента)

МассивРеквизитов = Новый Массив;

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

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

ИначеЕсли ВидКонтрагента = Перечисления.ВидыКонтрагентов.Банк Тогда
МассивРеквизитов.Добавить("ВидКонтрагента");
МассивРеквизитов.Добавить("ЮрАдрес");
МассивРеквизитов.Добавить("ИНН");
МассивРеквизитов.Добавить("БИК");

ИначеЕсли ВидКонтрагента = Перечисления.ВидыКонтрагентов.Налоговая Тогда
МассивРеквизитов.Добавить("ВидКонтрагента");
МассивРеквизитов.Добавить("ЮрАдрес");
МассивРеквизитов.Добавить("ИНН");
МассивРеквизитов.Добавить("КодИФНС");

КонецЕсли;

КонецФункции

Где же ее правильнее разместить?

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

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

Но! На платформе 8.2 как раз для решения подобной задачи и был создан Модуль менежера. Там и разместим нашу функцию. А обращаться мы будем: «Справочники.Контрагенты.ПолучитьСписокВажныхРеквизитов(ВидКонтрагента)».

Т.о. на ряду с предопределенными методами, мы можем самостоятельно разработать свои процедуры и обращаться к ним как методам Менеджера объекта, через точку. У нас отпадает необходимость создавать «тематические» внешние модули такие как «Работа с Контрагентами», «Процедуры Номенклатуры»...

Обратимся теперь к теории, чтобы «разложить все по полочкам».

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

Отобразим иерархию классов прикладных объектов на примере Справочников:
title

Т.е. мы видим, что появление «Модуля менеджера объекта» логично расширяет свойства класса СправочникМенеджер, так же как экспортные процедуры «Модуля объекта» расширяют методы класса СправочникОбъект. Нужно ли было создавать «Модуль прикладного объекта Справочники (Документы, Перечисления)». Наверное нет. Достаточно трудно придумать какие-либо задачи для единой обработки всех видов справочников.

Кроме возможности расширения методов класса, в модуле менеджера существует предопределенная процедура События
Код 1C v 8.2 УП
 «ОбработкаПолученияДанныхВыбора»   
. Она возникает на сервере перед стандартным формированием списка при вводе по строке, автоподборе текста и быстром выборе, а также при выполнении метода «ПолучитьДанныеВыбора()».

Так же хочу обратить внимание. При использовании конструктора печати прикладного объекта, платформа расположит процедуру формирования табличного документа непосредственно в Модуле менеджера. И это логично. Теперь, чтобы получить табличный документ элемента справочника нет необходимости получать объект. Достаточно кода:
Код 1C v 8.2 УП
 Справочники.Номенклатура.Печать(ТабДок, Ссылка)   
.

Автор: Шумаев Алексей
Разместил:   Версии: | 8.2 УП |  Дата:   Прочитано: 52665
 +3 
Распечатать
Возможно, вас также заинтересует
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Excel файл как Внешний источник данных 16
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . https://helpf.pro/uploads/img
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.