Skip to content

Собственные аннотации

OneScript могуч. В отличие от материнской платформы, над любым методом может быть любое количество произвольных аннотаций, у них могут быть именованные и неименованные параметры. Аннотации даже могут быть над Переменными модуля и параметрами методов! Как тебе такое, УанЭс Энтерпрайз?

Но с большой силой приходит большая ответственность. Произвольные параметры произвольных аннотаций довольно сложно контролировать и единообразно обрабатывать. Поэтому ОСень с одной стороны немного загоняет Вас в рамки, а с другой - дает возможность проверять корректность использования аннотаций пользователем Вашего приложения или библиотеки. Даже если это Вы сами. Будем честными, больше всего со своим кодом косячим мы сами.

Помимо &Пластилина, &Желудей и прочих осенних продуктов, Вы можете описать собственную аннотацию. Для этого нужно создать новый класс, и навесить на него аннотацию &Аннотация. Здорово, правда? (c)

bsl
&Аннотация("МояХитраяАннотация")
Процедура ПриСозданииОбъекта(Значение = "Трррунь", ОбязательныйПараметр)

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

По аналогии с &Желудем, у &Аннотации можно переопределить имя. Конструктор аннотации может принимать в себя любое количество именованных &Параметров, в том числе "волшебный" параметр с именем Значение. Так же для параметра можно указать значение по умолчанию.

Слышали про дог-фудинг?..

Каждая аннотация в ОСени представлена отдельным классом АннотацияИмя с навешенной &Аннотацией над конструктором.

Да, в ОСени есть аннотация &Аннотация, описание которой расположено в классе с именем АннотацияАннотация.os, над конструктором которого висит аннотация &Аннотация со Значение = Аннотация. Вот такая вот метафизика.

Если вы хотите разрешить пользователю ваших аннотаций указывать несколько значений для одного и того же параметра, его нужно пометить аннотацией &Повторяемый. Например, вот так выглядит описание аннотации &Пластилин:

bsl
&Аннотация("Пластилин")
Процедура ПриСозданииОбъекта(Значение = "", Тип = "", &Повторяемый Блестяшка = Неопределено)

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