Область применения: управляемое приложение, обычное приложение.
Для задействования возможностей по настройке функциональности библиотеки для работы в конкретной конфигурации-потребителе используются переопределяемые объекты.
Все настройки подсистемы, доступные для изменения разработчикам на внедрении, можно разделить на общие для всех объектов подсистемы (или для группы объектов) и специфичные для конкретных объектов. При выборе места размещения таких настроек следует руководствоваться следующими принципами.
1. Настройки подсистемы, общие для всех объектов или для группы объектов метаданных, рекомендуется задавать в переопределяемом модуле. Для этого создать одну процедуру с именем ПриОпределенииНастроек и параметром Настройки типа Структура, которая предварительно заполнена значениями по умолчанию. Использования структуры в качестве значения параметра позволяет расширять программный интерфейс, добавляя новые свойства в структуру, без нарушения обратной совместимости.
Например, определение настроек подсистемы Варианты отчетов, общих для всех отчетов в общем модуле ВариантыОтчетовПереопределеяемый:
Процедура ПриОпределенииНастроек(Настройки) Экспорт
Настройки.ВыводитьОтчетыВместоВариантов = Истина;
Настройки.ВыводитьОписания = Истина;
Настройки.ДругиеОтчеты.ПоказыватьФлажок = Истина;
КонецПроцедуры
1.1. Для определения списка объектов конфигурации, с которыми работает подсистема, не следует использовать перебор объектов метаданных с конструкцией Попытка Исключение. Вместо этого, рекомендуется создавать отдельную процедуру переопределяемого модуля, в которой перечислять такие объекты. Например, ПриОпределенииПодключенныхОтчетов содержит в себе список отчетов конфигурации, подключенных к подсистеме.
1.2. Процедуры, позволяющие переопределить бизнес-логику сразу для всех объектов, с которыми работает подсистема, также рекомендуется размещать в переопределяемом модуле. Имена процедур рекомендуется выбирать исходя из выполняемого действия. Например: ПриРегистрацииИзмененийКлючейВариантовОтчетов описывает изменения имен вариантов отчетов. Для каждого выполняемого действия рекомендуется создавать отдельную процедуру.
2. Настройки или обработчики, специфичные для отдельного объекта, рекомендуется размещать в модуле менеджера этого объекта. Для процедуры, содержащей в себе информацию о свойствах, реквизитах или о наличии методов объекта рекомендуется использовать имена вида ПриОпределенииНастроек<ИмяПодсистемы>. Например ПриОпределенииНастроекВариантовОтчетов.
Процедуры, задающие переопределяемую бизнес-логику, специфичную для конкретного объекта так же рекомендуется размещать в модуле менеджера этого объекта. Для каждого выполняемого действия рекомендуется создавать отдельную процедуру. При этом наличие той или иной процедуры в модуле менеджера задается в процедуре ПриОпределенииНастроек<ИмяПодсистемы>, что позволяет избежать использования конструкции Попытка Исключение для проверки наличия процедуры. Например, в модуле менеджера отчета заданы процедуры:
Процедура ПриОпределенииНастроекВариантовОтчетов(Настройки) Экспорт
Настройки.ОпределитьНастройкиФормы = Истина;
Настройки.Размещение.Вставить(ВариантыОтчетовКлиентСервер.ИдентификаторНачальнойСтраницы(), "Важный");
Настройки.ПриПолученииДанныхОтчета = Истина; // Наличие процедуры.
КонецПроцедуры
Процедура ПриПолученииДанныхОтчета(Данные) Экспорт
Данные.Очистить();
// Своя процедура получения данных.
КонецПроцедуры
Процедура ПриОпределенииНастроекВариантовОтчетов определяет настройки конкретного отчета и сообщает о наличии процедуры ПриПолученииДанныхОтчета, в которой задана переопределяемая обработка данных отчета.