Размещение сведений о настройках подсистемы

#std739

Область применения: управляемое приложение, обычное приложение.

Для задействования возможностей по настройке функциональности библиотеки для работы в конкретной конфигурации-потребителе используются переопределяемые объекты.

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

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

Например, определение настроек подсистемы Варианты отчетов, общих для всех отчетов в общем модуле ВариантыОтчетовПереопределеяемый:

Процедура ПриОпределенииНастроек(Настройки) Экспорт
 Настройки.ВыводитьОтчетыВместоВариантов = Истина;
 Настройки.ВыводитьОписания = Истина;
 Настройки.ДругиеОтчеты.ПоказыватьФлажок = Истина;
КонецПроцедуры

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

1.2. Процедуры, позволяющие переопределить бизнес-логику сразу для всех объектов, с которыми работает подсистема, также рекомендуется  размещать в переопределяемом модуле. Имена процедур рекомендуется выбирать исходя из выполняемого действия. Например: ПриРегистрацииИзмененийКлючейВариантовОтчетов описывает изменения имен вариантов отчетов. Для каждого выполняемого действия рекомендуется создавать отдельную процедуру.

2. Настройки или обработчики, специфичные для отдельного объекта, рекомендуется размещать в модуле менеджера этого объекта. Для процедуры, содержащей в себе информацию о свойствах, реквизитах или о наличии методов объекта рекомендуется использовать имена вида ПриОпределенииНастроек<ИмяПодсистемы>. Например ПриОпределенииНастроекВариантовОтчетов.

Процедуры, задающие переопределяемую бизнес-логику, специфичную для конкретного объекта так же рекомендуется размещать в модуле менеджера этого объекта. Для каждого выполняемого действия рекомендуется создавать отдельную процедуру. При этом наличие той или иной процедуры в модуле менеджера задается в процедуре ПриОпределенииНастроек<ИмяПодсистемы>, что позволяет избежать использования конструкции Попытка Исключение для проверки наличия процедуры. Например, в модуле менеджера отчета заданы процедуры:

Процедура ПриОпределенииНастроекВариантовОтчетов(Настройки) Экспорт
 Настройки.ОпределитьНастройкиФормы = Истина;
Настройки.Размещение.Вставить(ВариантыОтчетовКлиентСервер.ИдентификаторНачальнойСтраницы(), "Важный");
Настройки.ПриПолученииДанныхОтчета = Истина; // Наличие процедуры.
КонецПроцедуры

Процедура ПриПолученииДанныхОтчета(Данные) Экспорт
 Данные.Очистить();
 // Своя процедура получения данных.
КонецПроцедуры

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