Модуль менеджера і модуль об’єкта в 1с

У нових версіях конфігурацій системи 1С: Підприємство багато функцій і процедури перемістилися з модулів об'єктів (документів, довідників і т.д.) в модулі менеджера. Розглянемо відмінності між цими двома модулями.

Відповідно до теорії об'єктно-орієнтованого програмування, методи об'єктів діляться на дві групи: статичні і прості. Прості методи мають доступ тільки до конкретного екземпляру класу. Статичні методи не мають доступу до даних об'єктів, а працюють з класом в цілому.

Якщо перевести все це в терміни системи 1С: Підприємство, то Модуль об'єкта містить прості методи. Для їх використання необхідно спочатку отримати конкретний об'єкт: елемент довідника, документа і т.п. Модуль менеджера містить статичні методи. Для його використання немає необхідності окремо отримувати кожен конкретний об'єкт, він дозволяє працювати з усією колекцією відразу.

Модуль об'єкта може мати процедури і функції, які можна використовувати ззовні. Для цього така процедура або функція позначається словом Експорт.

Функція Нова функція # 40; # 41; експорт

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

ЕлементСправочніка = Довідники. Номенклатура. НайтіПоКоду # 40; "000000001" # 41; ;
Об'єкт = ЕлементСправочніка. ПолучітьОб'ект # 40; # 41; ;
Пер = Об'єкт. НоваяФункція # 40; # 41; ;

Аналогічно можна створювати нові змінні, які можуть бути використані з різних об'єктів конфігурації.

Перем НоваяПеременная Експорт

ЕлементСправочніка = Довідники. Номенклатура. НайтіПоКоду # 40; "000000001" # 41; ;
Об'єкт = ЕлементСправочніка. ПолучітьОб'ект # 40; # 41; ;
Об'єкт. НоваяПеременная = # 41; ;

Таким чином можна доповнювати стандартні процедури, функції і властивості (змінні) об'єктів. Такі змінні є динамічними, вони не зберігаються в інформаційній базі і існують тільки під час роботи з отриманим об'єктом.

Модуль менеджера має всі ті ж можливості, різниця лише в тому, що для його використання не потрібно отримувати конкретний об'єкт, модуль менеджера дозволяє працювати з усією колекцією об'єктів певного типу.

Процедура Нова процедура # 40; # 41; експорт

ЕлементСправочніка = Довідники. Номенклатура. НоваяПроцедура # 40; # 41; ;

Або для змінної:

Перем НоваяПеременная Експорт

ЕлементСправочніка = Довідники. Номенклатура. НоваяПеременная;

Розглянемо відмінності в застосуванні модуля об'єкта і модуля менеджера на прикладі процедури створення друкованої форми документа.

При використанні модуля об'єкта код буде виглядати наступним чином:

На формі документа потрібно створити процедуру, яка передавала б в функцію друку посилання на документ.

Недолік даного методу полягає в тому, що він дозволяє надрукувати тільки один об'єкт. Якщо ж ви бажаєте надрукувати кілька документів відразу, то потрібно отримувати кожен з них, а потім викликати функцію з модуля об'єкта. Це вимагає значних системних ресурсів, оскільки при отриманні об'єкта він цілком поміщається в оперативну пам'ять.

З точки зору продуктивності набагато краще використовувати модуль менеджера, коли це можливо. У нашому прикладі рішення задачі буде виглядати наступним чином.

функція ПечатьДокумента # 40; МассівОб'ектов # 41; експорт
// В цю функцію необхідно передати посилання на конкретний документ
Повернення ТабДок;
КонецФункціі

-НаКліенте
процедура Друк # 40; команда # 41;
ТабДок = ПечатьНаСервере # 40; # 41; ;
ТабДок. Показати # 40; # 41; ;
КонецПроцедури
-На сервері
функція ПечатьНаСервере # 40; # 41;
Повернення Документи. НашДокумент. ПечатьДокумента # 40; МассівСсилок # 41; ;
КонецФункціі

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

Так коли ж використовувати модуль об'єкта, а коли модуль менеджера?

Все залежить від завдання. Якщо для її виконання досить посилання на об'єкт (наприклад завдання друку), то краще використовувати модуль менеджера. Якщо ж стоїть завдання зміни даних, наприклад заповнення документа, то необхідно його отримати і використовувати модуль об'єкта.

Поділитися в соц. мережах