Переопределение общих модулей в условиях иерархии библиотек

#std554

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

Методическая рекомендация (полезный совет)

При разработке нескольких библиотек, стоящих на поддержке друг у друга, следует минимизировать трудоемкость по обновлению кода переопределяемых общих модулей в каждой из библиотек. Для этого рекомендуется использовать следующую методику:

1. В библиотеке нижнего уровня иерархии (самой базовой) объявляется переопределяемый модуль по правилам создания общих модулей.
Например: БазоваяБиблиотекаПереопределяемый.

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

Например, в общем модуле БазоваяБиблиотекаПереопределяемый в библиотеке верхнего уровня «Базовая библиотека» реализация фактически размещается в модуле МодульБазовойБиблиотеки:

Процедура НастроитьИнтерфейс(Знач ПараметрыРаботы) Экспорт

// Начало: Базовая библиотека
МодульБазовойБиблиотеки.НастроитьИнтерфейс(ПараметрыРаботы);
// Конец: Базовая библиотека

КонецПроцедуры

в этом же общем модуле БазоваяБиблиотекаПереопределяемый в следующей библиотеке верхнего уровня «Библиотека второго уровня»:

Процедура НастроитьИнтерфейс(Знач ПараметрыРаботы) Экспорт

// Начало: Базовая библиотека
МодульБазовойБиблиотеки.НастроитьИнтерфейс(ПараметрыРаботы);
// Конец: Базовая библиотека

// Начало: Библиотека второго уровня
МодульБиблиотекиВторогоУровня.НастроитьИнтерфейс(ПараметрыРаботы);
// Конец: Библиотека второго уровня

КонецПроцедуры

и т.д.

3. Таким образом, в конечной конфигурации-потребителе реализация переопределяемого модуля имеет вид:

Процедура НастроитьИнтерфейс(Знач ПараметрыРаботы) Экспорт

// Начало: Базовая библиотека
МодульБазовойБиблиотеки.НастроитьИнтерфейс(ПараметрыРаботы);
// Конец: Базовая библиотека

// Начало: Библиотека второго уровня
МодульБиблиотекиВторогоУровня.НастроитьИнтерфейс(ПараметрыРаботы);
// Конец: Библиотека второго уровня

// а теперь выполняем настройки так, как это надо нашей конфигурации
// ...

КонецПроцедуры

Такой подход позволяет