Для чего модуль менеджера

Модуль менеджера в 1С 8.3

Для чего модуль менеджера. Смотреть фото Для чего модуль менеджера. Смотреть картинку Для чего модуль менеджера. Картинка про Для чего модуль менеджера. Фото Для чего модуль менеджера

Менеджер справочника

У каждого прикладного объекта (справочники, документы и т.п.) есть менеджер, который позволяет управлять им: создавать новые объекты, работать с формами и макетами. Чтобы обратиться к менеджеру прикладного объекта нужно указать имя вида объекта метаданных и через точку имя конкретного объекта метаданных. К менеджеру объекта можно обращаться только на сервере.

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

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

Для открытия модуля менеджера нужно перейти на закладку «Прочее» и нажать кнопку «Модуль менеджера»:

Для чего модуль менеджера. Смотреть фото Для чего модуль менеджера. Смотреть картинку Для чего модуль менеджера. Картинка про Для чего модуль менеджера. Фото Для чего модуль менеджера

Или через контекстное меню в дереве объектов:

Для чего модуль менеджера. Смотреть фото Для чего модуль менеджера. Смотреть картинку Для чего модуль менеджера. Картинка про Для чего модуль менеджера. Фото Для чего модуль менеджера

Или через меню Действия:

Для чего модуль менеджера. Смотреть фото Для чего модуль менеджера. Смотреть картинку Для чего модуль менеджера. Картинка про Для чего модуль менеджера. Фото Для чего модуль менеджера

Для примера откроем модуль менеджера справочника «Номенклатура» и добавим туда 2 функции:

Из модуля формы обработки вызовем обе функции модуля менеджера:

При обращении к функции АртикулПоУмолчанию будет ошибка «Метод объекта не обнаружен (АртикулПоУмолчанию)», потому что у данного метода нет ключевого слова Экспорт, он доступен только в рамках модуля менеджера. А функция НаименованиеПоУмолчанию отработала и вернула строку «Новый товар».

Если сравнивать с другими языками программирования, то ближайшим аналогом методов модуля менеджера будут статические методы класса.

Обработчики событий

Как и в модуле объекта, в модуле менеджера есть обработчики событий:

Более подробно данные обработчики будут рассмотрены нами позднее.

Источник

Модуль менеджера и модуль объекта в 1С

В новых версиях конфигураций системы 1С:Предприятие многие функции и процедуры переместились из модулей объектов (документов, справочников и т.д.) в модули менеджера. Рассмотрим различия между этими двумя модулями.

Согласно теории объектно-ориентированного программирования, методы объектов делятся на две группы: статические и простые. Простые методы имеют доступ только к конкретному экземпляру класса. Статические методы не имеют доступа к данным объектов, а работают с классом в целом.

Если перевести все это в термины системы 1С:Предприятие, то Модуль объекта содержит простые методы. Для их использования необходимо сначала получить конкретный объект: элемент справочника, документа и т.п. Модуль менеджера содержит статические методы. Для его использования нет необходимости отдельно получать каждый конкретный объект, он позволяет работать со всей коллекцией сразу.

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

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

Аналогично можно создавать новые переменные, которые могут быть использованы из различных объектов конфигурации.

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

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

Или для переменной:

Рассмотрим отличия в применении модуля объекта и модуля менеджера на примере процедуры создания печатной формы документа.

При использовании модуля объекта код будет выглядеть следующим образом:

На форме документа нужно создать процедуру, которая передавала бы в функцию печати ссылку на документ.

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

С точки зрения производительности гораздо лучше использовать модуль менеджера, когда это возможно. В нашем примере решение задачи будет выглядеть следующим образом.

В случае использования модуля менеджера, процедуру печати можно вызывать как из формы документа, так и из формы списка, передавая в массиве ссылки на несколько документов. При этом системе не нужно получать каждый документ из массива, что значительно экономит системные ресурсы.

Так когда же использовать модуль объекта, а когда модуль менеджера?

Все зависит от задачи. Если для ее выполнения достаточно ссылки на объект (например задача печати), то лучше использовать модуль менеджера. Если же стоит задача изменения данных, например заполнения документа, то необходимо его получить и использовать модуль объекта.

Модуль менеджера и модуль объекта в 1С : 2 комментария

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

элемент = Справочники.Номенклатура.найтиПоКоду(123);
элемент.ПечатьВсякого(); // ПечатьВсякого — экспортная функция в менеджере справочника.

Цитата:
«При использовании модуля объекта код будет выглядеть следующим образом:
Функция ПечатьДокумента (Ссылка) Экспорт
//В эту функцию необходимо передать ссылку на конкретный документ
Возврат ТабДок;
КонецФункции».

При использовании модуля объекта, ссылку передавать излишне, она и так есть в контексте.

Источник

Модуль объекта и модуль менеджера. Отличия


Предисловие

Для чего модуль менеджера. Смотреть фото Для чего модуль менеджера. Смотреть картинку Для чего модуль менеджера. Картинка про Для чего модуль менеджера. Фото Для чего модуль менеджера

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

Понимание в различии их назначения позволяет писать более правильный по структуре программный код, а в некоторых случаях сэкономить ресурсы сервера 1С и увеличить производительность прикладного решения.

В статье рассмотрим принципиальные различия между этими модулями как с теоретической стороны, так и на конкретном практическом примере.

Теория

Для чего модуль менеджера. Смотреть фото Для чего модуль менеджера. Смотреть картинку Для чего модуль менеджера. Картинка про Для чего модуль менеджера. Фото Для чего модуль менеджера

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

От теории перейдем к практике.

Практика

Перейдем к практическому примеру. Предположим, что нам нужно решить задачу по печати списка товаров.Пользотель выводит на печать товар либо непосредственно из элемента справочника, либо из форму списка товаров. Рассмотрим два способа выполнения поставленной задачи.

Процедура печати в модуле объекта

В модуле объекта справочника добавим следующую функцию:

Для чего модуль менеджера. Смотреть фото Для чего модуль менеджера. Смотреть картинку Для чего модуль менеджера. Картинка про Для чего модуль менеджера. Фото Для чего модуль менеджера

Программный код для вызова метода объекта «ПечатьВыбранныхТоваров» по команде формы «Печать» представлен на следующем листинге:

Таким образом, мы распечатали текущий элемент справочника, работая с его объектом. Но в задаче было сказано распечатать список товаров, которые пользователь сам должен выбрать. При работе с объектом дать пользователю такую возможность простым путем не представляется возможным. Наиболее правильно было бы выполнять печать из списка элементов справочника «Товары».

Процедура печати в модуле менеджера

В модуль менеджера справочника добавим следующую экспортную процедуру:

Программный код модуля команды формы «Печать» выглядит следующим образом:

При этом результат выполнения команды в режиме 1С:Предприятия будет следующим:

Для чего модуль менеджера. Смотреть фото Для чего модуль менеджера. Смотреть картинку Для чего модуль менеджера. Картинка про Для чего модуль менеджера. Фото Для чего модуль менеджера

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

Что же использовать?

В типовой конфигурации «Управление торговлей» версии 11 повсеместно используетмся модуль менеджера для печати документов. Если посмотреть на конфигурацию «Управление производственным предприятием», то модуль менеджера практически не используется, так как конфигурация писалась в старых версиях платформы, где полноценной поддержки этого механизма не было.

Конфигурация с примерами из статьи.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *