Переопределение компонента по имени
Сила Верховного желудя настолько велика, что он может вытеснить данные о более слабом желуде из Поделки.
Вспомним любимые "типовые". Представьте, что есть некая типовая форма документа, которая нам почему-то не нравится. Например, хотим ее упростить для пользователя. Или как-нибудь ее покорежить. Можно влезть в код формы, но не всегда хочется так делать, а иногда и просто нельзя (привет, расширения и базовые конфигурации). На помощь нам может прийти копирование формы (с последующей модификацией) и/или подмена базовой формы собственной реализацией. Причем тут желуди?
От "типовой" нам пришла реализация некоего "важного компонента".
// важная, но все еще ненужная логика класса.
&Желудь("ВажныйКомпонент")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Но она нам не нравится, и мы хотим подменить этот желудь собственной реализацией.
// важная, но все еще ненужная логика класса.
&Верховный
&Желудь("ВажныйКомпонент")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Обратите внимание, что оба желудя описывают себя как "ВажныйКомпонент", то есть имеют одинаковое имя. В обычной ситуации ОСень выкинула бы исключение, т. к. не может быть двух желудей с одним именем.
Но использование аннотации &Верховный
подсказывает ОСени, что наша собственная реализация должна превалировать над типовой реализацией и позволит заместить желудь "ВажныйКомпонент" нашей версией.
Два &Верховных желудя с одинаковым именем ожидаемо выкинут исключение.
There can be only one!