Skip to content

Условная регистрация компонентов в контексте приложения

Иногда вам может потребоваться выбирать, какие именно классы вы хотите добавлять в свою поделку. Например, вы хотите загружать определенный класс только при выполнении какого-нибудь условия (из-за конфликта имен, к примеру). На помощь придёт объект &Заготовка, который можно расценивать как готовый набор желудей, добавляемый в поделку.

&Заготовка - это очень хитрый &Желудь! В отличие от обычных желудей он автоматически создается на фазе инициализации приложения, а затем у него вызывается метод ПриИнициализацииПоделки(Поделка). Желудёвость заготовки позволяет пользоваться частью возможностей обычных желудей - на нем могут срабатывать &Напильники, добавленные в Поделку до &Заготовки, однако из всего многообразия веществ зависимостей ему доступны только &Детальки с настройками приложения. Ни тебе &Пластилина, ни &Блестяшек навесить на &Заготовку нельзя.

bsl
Перем _ПереопределитьПроверятор;

&Заготовка
Процедура ПриСозданииОбъекта(&Деталька(ЗначениеПоУмолчанию = Ложь) ПереопределитьПроверятор)
    _ПереопределитьПроверятор = ПереопределитьПроверятор;
КонецПроцедуры

Процедура ПриИнициализацииПоделки(Поделка) Экспорт
   
    ПутьКСценарию = "./ОбычныйПроверятор.os";

    Если _ПереопределитьПроверятор Тогда
        ПутьКСценарию = "./НеобычныйПроверятор.os";
    КонецЕсли;

    ПодключитьСценарий(ПутьКСценарию, "Проверятор");

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