Страницы: 1
RSS
Что такое модуль менеджера и модуль объекта, в чем разница и что лучше использовать в 1С УТ
 
Коллеги, здравствуйте. Объясните разницу между модулем менеджера и модулем объекта? В теории все понятно, на практике пока не удается применять для написания более правильного по структуре программного кода. Какой из этих модулей лучше всего использовать в УТ? Заранее спасибо!
 
Модуль объекта предназначен для реализации поведения отдельного экземпляра объекта (СправочникОбъект, ДокументОбъект и т.п.). В модуле объекта размещаются процедуры и функции, которые работают с данными объекта (ЭтотОбъект и переменные модуля объекта), в том числе когда он еще не записан в информационную базу.
Например, в нем могут размещаться обработчики событий объекта или процедуры заполнения экземпляра объекта.
Следует иметь в виду, что для вызова экспортных процедур и функций модуля объекта из других модулей может потребоваться предварительно получить сам экземпляр объекта из информационной базы с помощью метода ПолучитьОбъект. При этом происходит загрузка объекта из базы целиком, вместе с его табличными частями, что достаточно ресурсоемко.
 
Расскажу про модуль менеджера. Он предназначен для размещения «статической» функциональности, которая логически неразрывно связана с объектом метаданных, но не зависит от состояния конкретного экземпляра объекта данных. Это могут быть процедуры и функции:
относящиеся не к одному, а сразу к некоторой совокупности объектов. Например, это функции для вывода на печать списка объектов; функции, возвращающие информацию, общую для всех экземпляров объекта метаданных; процедуры обновления данных информационной базы, которые связаны с объектом метаданных; и т.п.
которые работают с объектом, записанным в ИБ. В таких функциях входным параметром является ссылка на объект. Например, это функции для получения печатной формы по ссылке на объект, процедуры формирования движений по ссылке на объект и т.п.
Для выполнения функций модуля менеджера объекта не должен требоваться экземпляр объекта данных (СправочникОбъект, ДокументОбъект и т.п.).
 
Если функциональность невозможно однозначно отнести к тому или иному объекту метаданных, то она является логически общей для нескольких объектов. В этом случае ее следует размещать в общем модуле.
В модуле объекта платформа хранит процедуры и функции, которые могут быть вызваны только при работе с конкретным объектом, например, с объектом элемента справочника «Номенклатура». В модуле менеджера содержатся процедуры и функции, которые могут быть применены ко всем объектам данного типа, но с первоначальным созданием экземпляра этого объекта. То есть для изменения элемента номенклатуры из этого модуля первоначально для ссылки на элемент выполнить метод «ПолучитьОбъект()» и в дальнейшем уже работать с ним.
 
В случае использования метода из модуля менеджера можно обращаться к данным справочника «Товары» без получения объекта для каждой ссылки. Поскольку получения объекта означает получение всех данных из базы данных по элементу справочника и помещение полученных данных в оперативную память, то реализация задачи вторым способом положительно повлияет на производительность. Ведь в таком случае нужно использовать минимум ресурсов (оперативной памяти) серверной машины.
Если вы не можете решить, какой модуль вам использовать, то смотрите на конкретную задачу.
Вообще модули объекта  характерны для справочников, документов, планов видов расчетов, планов счетов и многих других объектов. Модуль объекта предназначен для обработки стандартных событий. Например, событие на ввод элемента справочника, событие на запись элемента, удаление, проведение документа и т.д.
В принципе, событие записи существует и в Модуле формы. Но событие записи в Модуле формы возникает в процессе интерактивной записи, при работе с конкретной формой.
Модуль данного объекта можно вызывать через контекстное меню, из Палитры свойств объекта и из окна редактирования объекта.
 
Да, кстати, если нужно выполнить печать документа, то более оптимальный вариант - использовать модуль менеджера. Если нужно заполнять объект, например, внешней обработкой заполнения табличных частей, то в таком случае процедуры и функции лучше располагать в модуле объекта, поскольку их работа предполагает именно с объектом.
В типовой конфигурации «Управление торговлей» повсеместно используется модуль менеджера для печати документов. Если посмотреть на конфигурацию «Управление производственным предприятием», то модуль менеджера практически не используется, так как конфигурация писалась в старых версиях платформы, где полноценной поддержки этого механизма не было.
Модуль менеджера открывается либо через контекстное меню для объекта, либо через Палитру свойств, либо через окно редактирования. В нем можно переопределить некоторые стандартные события. Например, в ОбработкеПолученияДанныхВыбора, когда выбирается элемент из справочника, можно сделать какую-то дополнительную фильтрацию или проверку.
Страницы: 1