#std554

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

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

1.

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

Пример имени: БазоваяБиблиотекаПереопределяемый.

2.

В библиотеках более высокого уровня реализацию процедур и функций базового переопределяемого модуля доопределяйте при необходимости.

В самом переопределяемом модуле размещайте не реализацию, а только вызов.

Пример: библиотека верхнего уровня «Базовая библиотека»

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

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

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

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

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

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

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

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

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

Пример: конфигурация-потребитель

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

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

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

    // Настройки конфигурации-потребителя.
    // ...

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

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

  • скрыть от библиотек верхнего уровня и конфигураций-потребителей детали реализации библиотек нижних уровней;
  • снизить риск ошибок при обновлении кода переопределяемого общего модуля;
  • при необходимости сохранить возможность отказаться от части библиотечной реализации.
Проверки

#acc:499 #acc:500 #acc:501 #acc:502 #acc:503 #acc:505 #acc:506

Источник

https://its.1c.ru/db/v8std#content:554