diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\221\320\273\320\265\321\201\321\202\321\217\321\210\320\272\320\260.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\221\320\273\320\265\321\201\321\202\321\217\321\210\320\272\320\260.os" index df6f9f0..986ef69 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\221\320\273\320\265\321\201\321\202\321\217\321\210\320\272\320\260.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\221\320\273\320\265\321\201\321\202\321\217\321\210\320\272\320\260.os" @@ -1,3 +1,18 @@ +// Маркерная аннотация для указания, что прилепляемая частица +// является произвольным значением, передаваемым в конструктор желудя. +// +// Может быть использована только над параметром конструктора/метода завязи желудя. +// +// Пример: +// +// 1. +// &Желудь +// Процедура ПриСозданииОбъекта(&Блестяшка ПроизвольноеЗначение) +// +// 2. +// &Завязь +// Функция МойЖелудь(&Блестяшка ПроизвольноеЗначение) Экспорт +// &Аннотация("Блестяшка") Процедура ПриСозданииОбъекта() diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\222\320\265\321\200\321\205\320\276\320\262\320\275\321\213\320\271.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\222\320\265\321\200\321\205\320\276\320\262\320\275\321\213\320\271.os" index a799870..d5e62d7 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\222\320\265\321\200\321\205\320\276\320\262\320\275\321\213\320\271.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\222\320\265\321\200\321\205\320\276\320\262\320\275\321\213\320\271.os" @@ -1,3 +1,26 @@ +// Помечает желудь как имеющий приоритет среди других желудей с таким же именем или `&Прозвищем`. +// В случае конфликта имен при получении желудей или их регистрации, будет использован желудь с аннотацией `&Верховный`. +// +// При наличии нескольких желудей с одним и тем же прозвищем позволяет определить, какой из них следует возвращать +// при поиске конкретного желудя по его прозвищу. +// +// Если несколько желудей с одним и тем же именем/прозвищем имеют аннотацию `&Верховный`, будет вызвано исключение. +// +// Размещается над определением желудя - конструктором или методом &Завязи. +// +// Пример: +// 1. +// &Верховный +// &Желудь("ПереопределяемыйЖелудь") +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// . +// 2. +// &Верховный +// &Завязь +// Функция ПереопределяемыйЖелудь() Экспорт +// КонецФункции +// &Аннотация("Верховный") Процедура ПриСозданииОбъекта() diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\224\320\265\321\202\320\260\320\273\321\214\320\272\320\260.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\224\320\265\321\202\320\260\320\273\321\214\320\272\320\260.os" index 60f29c3..bc0754b 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\224\320\265\321\202\320\260\320\273\321\214\320\272\320\260.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\224\320\265\321\202\320\260\320\273\321\214\320\272\320\260.os" @@ -1,3 +1,38 @@ +// Маркерная аннотация для указания, что прилепляемая частица +// является настройкой приложения. +// +// Может быть использована над параметром конструктора/метода завязи желудя, полем класса +// или методом установки значения. +// +// Параметры: +// Значение - Строка - Ключ настройки. См. библиотеку [configor](https://github.com/oscript-library/configor) +// для полного описания синтаксиса. +// Если не заполнено, используется имя параметра конструктора/поля класса +// или часть имени метода для установки значения. +// ЗначениеПоУмолчанию - Произвольный - Значение, которое принимает деталька, если не задано из-вне. +// +// Пример: +// +// 1. +// &Деталька +// Перем ПутьКФайлу; +// +// 2. +// &Деталька(Значение = "Настройки.ПутьКФайлу", ЗначениеПоУмолчанию = "./file.txt") +// Перем ПутьКФайлу; +// +// 3. +// &Желудь +// Процедура ПриСозданииОбъекта(&Деталька ПутьКФайлу) +// +// 4. +// &Деталька +// Процедура УстановитьПутьКФайлу(Значение) Экспорт +// +// 5. +// &Завязь +// Функция МойЖелудь(&Деталька ПутьКФайлу) Экспорт +// &Аннотация("Деталька") Процедура ПриСозданииОбъекта(Значение = "", ЗначениеПоУмолчанию = Неопределено) diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\224\321\203\320\261.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\224\321\203\320\261.os" index 17efbf5..6ae61eb 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\224\321\203\320\261.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\224\321\203\320\261.os" @@ -1,3 +1,25 @@ +// Помечает указанный класс как фабрику компонентов - дуб, из которого появляются желуди. +// `&Дуб` сам по себе тоже является желудем, то есть может запрашивать прилепление частиц, +// является объектом для обработки `&Напильник`ом, может иметь `&Спецификация` и так далее. +// +// Дуб обычно содержит методы, помеченные аннотацией `&Завязь`, которые возвращают желуди, но +// может содержать и другие методы, не связанные непосредственно с созданием желудей. +// +// Размещается над конструктором класса. +// +// Параметры: +// Значение - Строка - Имя желудя. По умолчанию будет использовано имя типа объекта, +// как оно возвращается функцией `ТипЗнч`. +// Пример: +// &Дуб +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// . +// &Завязь +// Функция ПользовательскийЖелудь() Экспорт +// . Возврат Новый ПользовательскийЖелудь(); +// КонецФункции +// &Аннотация("Дуб") Процедура ПриСозданииОбъекта(Значение = "") diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\226\320\265\320\273\321\203\320\264\321\214.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\226\320\265\320\273\321\203\320\264\321\214.os" index 00651f4..65329ae 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\226\320\265\320\273\321\203\320\264\321\214.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\226\320\265\320\273\321\203\320\264\321\214.os" @@ -1,3 +1,16 @@ +// Помечает указанный класс как желудь - компонент, жизненным циклом которого управляет фреймворк ОСень. +// +// Размещается над конструктором класса. +// +// Параметры: +// Значение - Строка - Имя желудя. По умолчанию будет использовано имя типа объекта, +// как оно возвращается функцией `ТипЗнч`. +// +// Пример: +// &Желудь +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("Желудь") Процедура ПриСозданииОбъекта(Значение = "") diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\227\320\260\320\262\321\217\320\267\321\214.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\227\320\260\320\262\321\217\320\267\321\214.os" index d5b5ce8..53eb4df 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\227\320\260\320\262\321\217\320\267\321\214.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\227\320\260\320\262\321\217\320\267\321\214.os" @@ -1,3 +1,22 @@ +// Помечает функцию как функцию, создающую желудь. +// +// Может иметь параметры, каждый из которых должен быть промаркирован как &Пластилин, &Деталька или &Блестяшка. +// В указанные параметры автоматически будут прилеплены соответствующие частицы при создании желудя. +// +// Может размещаться над экспортной функцией в классе, проаннотированном как `&Дуб`, или над методом-лямбдой, +// передаваемой в качестве параметра в `Поделка.ДобавитьЗавязь()`. +// +// Параметры: +// Значение - Строка - Имя создаваемого желудя. По умолчанию будет использовано имя метода. +// Тип - Строка - Тип создаваемого желудя. +// Требуется если по имени желудя не получается однозначного определить его тип. +// +// Пример: +// &Завязь +// Функция ПользовательскийЖелудь(&Пластилин Зависимость, &Деталька ВажнаяНастройка) Экспорт +// . Возврат Новый ПользовательскийЖелудь(Зависимость, ВажнаяНастройка); +// КонецФункции +// &Аннотация("Завязь") Процедура ПриСозданииОбъекта(Значение = "", Тип = "") diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\227\320\260\320\263\320\276\321\202\320\276\320\262\320\272\320\260.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\227\320\260\320\263\320\276\321\202\320\276\320\262\320\272\320\260.os" index 7b5d8e4..0d18875 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\227\320\260\320\263\320\276\321\202\320\276\320\262\320\272\320\260.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\227\320\260\320\263\320\276\321\202\320\276\320\262\320\272\320\260.os" @@ -1,3 +1,23 @@ +// Специальный тип желудя для выполнения дополнительных действий в момент помещения класса в контекст Поделки. +// +// Может использоваться для добавления динамической загрузки новых классов в систему типов OneScript или +// дополнительных импортов библиотек через директиву `#Использовать`. +// +// Каждая `&Заготовка` дополнительно имеет `&Прозвище("Заготовка")` и &Спецификация("Инициализация"). +// +// Желудь, помеченный аннотацией `&Заготовка`, должен реализовать следующий интерфейс: +// * `Процедура ПриИнициализацииПоделки(Поделка) Экспорт` +// +// Размещается над конструктором класса. +// +// Параметры: +// Значение - Строка - Имя желудя, под которым заготовка добавляется в контекст Поделки. +// +// Пример: +// &Заготовка +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("Заготовка") &Прозвище("Заготовка") &Спецификация("Инициализация") diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\235\320\260\320\277\320\270\320\273\321\214\320\275\320\270\320\272.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\235\320\260\320\277\320\270\320\273\321\214\320\275\320\270\320\272.os" index c0e4ff9..c288b7a 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\235\320\260\320\277\320\270\320\273\321\214\320\275\320\270\320\272.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\235\320\260\320\277\320\270\320\273\321\214\320\275\320\270\320\272.os" @@ -3,6 +3,15 @@ Перем _ПрименяетсяТолькоНа; +// Проверить, может ли текущий напильник применяться на указанном желуде. +// +// Параметры: +// ОпределениеЖелудя - ОпределениеЖелудя - Определение желудя, для которого проверяется +// применимость текущего напильника. +// +// Возвращаемое значение: +// Булево - Истина, если напильник может применяться на указанном желуде, иначе Ложь. +// Функция МожетПрименятьсяНа(ОпределениеЖелудя) Экспорт НапильникМожетПрименяться = Ложь; @@ -24,6 +33,31 @@ КонецФункции +// Специальный тип желудя для дополнительной обработки других желудей в процессе их создания. +// +// Может использоваться для добавления дополнительных действий или свойств создаваемым желудям. Метод `ОбработатьЖелудь` +// **может** возвращать другой объект, который подменит текущий желудь, или обертку-декоратор над текущим желудем. +// +// Каждый `&Напильник` дополнительно имеет `&Прозвище("Напильник")`. +// +// Напильник сам по себе является желудем, однако в силу своей специфики он может запрашивать прилепление только +// &Деталек и Поделки. +// +// Желудь, помеченный аннотацией `&Напильник`, должен реализовать следующий интерфейс: +// * `Функция ОбработатьЖелудь(Желудь, ОпределениеЖелудя) Экспорт` +// +// Размещается над конструктором класса. +// +// Параметры: +// Значение - Строка - Имя желудя, под которым напильник добавляется в контекст Поделки. +// ПрименяетсяТолькоНа - Строка - Повторяемый параметр. Ограничивает применение напильника только на желудях +// с указанными именами. +// +// Пример: +// &Напильник +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("Напильник") &Прозвище("Напильник") Процедура ПриСозданииОбъекта(Значение = "", &Повторяемый ПрименяетсяТолькоНа = Неопределено) diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\236\321\201\320\276\320\261\320\276\320\265\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\320\265.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\236\321\201\320\276\320\261\320\276\320\265\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\320\265.os" index af09401..91f1ef3 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\236\321\201\320\276\320\261\320\276\320\265\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\320\265.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\236\321\201\320\276\320\261\320\276\320\265\320\236\320\261\321\200\320\260\321\211\320\265\320\275\320\270\320\265.os" @@ -4,6 +4,14 @@ Перем _ПрименятьТолькоНапильники; Перем _НеПрименятьНапильники; +// Проверяет, может ли указанный напильник применяться над желудем, помеченным аннотацией `&ОсобоеОбращение`. +// +// Параметры: +// ИмяНапильника - Строка - Имя напильника для проверки применимости. +// +// Возвращаемое значение: +// Булево - Истина, если напильник может применяться на текущем желуде, иначе Ложь. +// Функция НапильникМожетПрименяться(ИмяНапильника) Экспорт Если _ОтключитьВсеНапильники Тогда @@ -18,6 +26,19 @@ КонецФункции +// Маркерная аннотация, показывающая, что желудь требует изменений в процессе своего создания. +// +// Параметры аннотации конфликтуют между собой. Если отключаются все напильники, то нельзя задавать ограничения на +// применение конкретных напильников или отключение конкретных напильников. Если задано ограничение на применение только +// конкретных напильников, то нельзя задавать ограничение на отключение конкретных напильников (и наоборот). +// +// Размещается над конструктором класса или над методом `&Завязи`. +// +// Параметры: +// ОтключитьВсеНапильники - Булево - Не применять на желуде никакие напильники. +// ПрименятьТолькоНапильник - Строка - Повторяемый параметр. Применять на желуде только напильник с указанным именем. +// НеПрименятьНапильник - Строка - Повторяемый параметр. Не применять на желуде напильник с указанным именем. +// &Аннотация("ОсобоеОбращение") Процедура ПриСозданииОбъекта( ОтключитьВсеНапильники = Ложь, diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\273\320\260\321\201\321\202\320\270\320\273\320\270\320\275.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\273\320\260\321\201\321\202\320\270\320\273\320\270\320\275.os" index 8927d09..360a41a 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\273\320\260\321\201\321\202\320\270\320\273\320\270\320\275.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\273\320\260\321\201\321\202\320\270\320\273\320\270\320\275.os" @@ -1,3 +1,42 @@ +// Маркерная аннотация для указания, что прилепляемая частица +// является желудем. Основной способ связывания желудей между собой. +// +// Может быть использована над параметром конструктора/метода завязи желудя, полем класса +// или методом установки значения. +// +// Параметры: +// Значение - Строка - Имя прилепляемого желудя. Если не заполнено, используется имя параметра конструктора/поля +// класса или часть имени метода для установки значения. +// Тип - Строка - Тип прилепляемого желудя. В случае передачи значения "Желудь", будет внедрен желудь как таковой. +// Так же может быть указан тип-коллекция: "Массив", "ТаблицаЗначений" и другие. Полный список +// доступных типов см. в библиотеке +// [autumn-collections](https://github.com/autumn-library/autumn-collections). +// Блестяшка - Произвольный - Повторяемый параметр. Передаваемые в прилепляемый желудь произвольные значения. +// +// Пример: +// +// 1. +// &Желудь +// Процедура ПриСозданииОбъекта(&Пластилин ДругойЖелудь) +// +// 2. +// &Желудь +// Процедура ПриСозданииОбъекта( +// . &Пластилин(Значение = "ДругойЖелудь", Тип = "Массив", Блестяшка = "Парам1", Блестяшка = "Парам2") Зависимость +// ) +// +// 3. +// &Пластилин +// Перем ДругойЖелудь; +// +// 4. +// &Завязь +// Функция МойЖелудь(&Пластилин ДругойЖелудь) Экспорт +// +// 5. +// &Пластилин +// Процедура УстановитьДругойЖелудь(Зависимость) Экспорт +// &Аннотация("Пластилин") Процедура ПриСозданииОбъекта(Значение = "", Тип = "", &Повторяемый Блестяшка = Неопределено) diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\200\321\217\320\264\320\276\320\272.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\200\321\217\320\264\320\276\320\272.os" index 70539d6..5ed92b5 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\200\321\217\320\264\320\276\320\272.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\320\276\321\200\321\217\320\264\320\276\320\272.os" @@ -1,10 +1,27 @@ Перем _Значение; +// Порядок, заданный аннотацией. +// +// Возвращаемое значение: +// Число +// Функция Значение() Экспорт Возврат _Значение; КонецФункции +// Управляет порядком инициализации и использования желудя. Не может быть меньше 1 или больше 999998. +// +// Если размещается над обычным `&Желудем` или `&Завязью`, то влияет на порядок сортировки, при получении +// коллекции желудей по прозвищу. +// +// Если размещается над `&Напильником`, влияет на порядок применения напильников к желудям. +// +// Если размещается над `&Рогаткой`, влияет на порядок запуска рогаток при старте приложения. +// +// Параметры: +// Значение - Число - Задаваемый порядок. +// &Аннотация("Порядок") Процедура ПриСозданииОбъекта(Значение = 1) _Значение = Значение; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\321\200\320\270\320\265\320\274\320\272\320\260.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\321\200\320\270\320\265\320\274\320\272\320\260.os" index 09ed5b9..45801b9 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\321\200\320\270\320\265\320\274\320\272\320\260.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\321\200\320\270\320\265\320\274\320\272\320\260.os" @@ -1,3 +1,29 @@ +// Специальный тип желудя для обработки определений желудей. +// +// Аналог &Напильника для `ОпределениеЖелудя`. Срабатывает каждый раз, когда в контекст добавляется новое +// определение желудя. При добавлении самой Приемки в контекст, все ранее добавленные определения желудей +// передаются в Приемку для проверки. +// +// Класс, помеченный аннотацией `&Приемка`, должен реализовать следующий интерфейс: +// * `Процедура ПриДобавленииОпределенияЖелудя(ОпределениеЖелудя) Экспорт` +// +// Каждая `&Приемка` так же имеет `&Характер("Компанейский")`, `&Прозвище("Приемка")` и `&Спецификация("Инициализация")` +// +// Размещается над конструктором класса. +// +// Параметры: +// Значение - Строка - Имя желудя, под которым приемка добавляется в контекст Поделки. +// +// Пример: +// +// Процедура ПриДобавленииОпределенияЖелудя(ОпределениеЖелудя) Экспорт +// . Сообщить("Определение желудя: " + ОпределениеЖелудя.Имя()); +// КонецПроцедуры +// . +// &Приемка +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("Приемка") &Прозвище("Приемка") &Характер("Компанейский") diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\321\200\320\276\320\267\320\262\320\270\321\211\320\265.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\321\200\320\276\320\267\320\262\320\270\321\211\320\265.os" index 4c530cd..2159ae3 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\321\200\320\276\320\267\320\262\320\270\321\211\320\265.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\237\321\200\320\276\320\267\320\262\320\270\321\211\320\265.os" @@ -1,3 +1,21 @@ +// Добавляет к желудю дополнительный идентификатор, по которому его можно в последствии доставать из Поделки. +// Желудь может иметь несколько прозвищ. Одно и то же прозвище может использоваться для нескольких желудей. +// +// Может быть использовано, например, для группировки желудей и получении их в виде массива. +// +// Размещается над конструктором класса или над методом `&Завязи`. +// +// Параметры: +// Значение - Строка - Задаваемое прозвище. +// +// Пример: +// +// &Прозвище("ПодписчикНаСобытие") +// &Прозвище("ПользовательскийЖелудь") +// &Желудь("МойЖелудь") +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("Прозвище") Процедура ПриСозданииОбъекта(Значение) diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\240\320\276\320\263\320\260\321\202\320\272\320\260.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\240\320\276\320\263\320\260\321\202\320\272\320\260.os" index 7d1d483..51df069 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\240\320\276\320\263\320\260\321\202\320\272\320\260.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\240\320\276\320\263\320\260\321\202\320\272\320\260.os" @@ -1,14 +1,51 @@ Перем _ЗапускатьВФоне; Перем _ОжидатьЗавершения; +// Флаг необходимости запуска рогатки в фоновом задании. +// +// Возвращаемое значение: +// Булево +// Функция ЗапускатьВФоне() Экспорт Возврат _ЗапускатьВФоне; КонецФункции +// Флаг необходимости ожидания завершения рогатки при ее запуске в фоновом задании. +// +// Возвращаемое значение: +// Булево +// Функция ОжидатьЗавершения() Экспорт Возврат _ОжидатьЗавершения; КонецФункции +// Специальный тип желудя, автоматически выполняемый при запуске приложения (`Поделка.ЗапуститьПриложение()`). +// +// Желудь, помеченный аннотацией `&Рогатка`, должен реализовать следующий интерфейс: +// * `Процедура ПриЗапускеПриложения() Экспорт` +// +// Каждая `&Рогатка` дополнительно имеет `&Прозвище("Рогатка")`. +// +// `&Рогатка` сама по себе тоже является желудем, то есть может запрашивать прилепление частиц, +// является объектом для обработки `&Напильник`ом, может иметь `&Спецификация` и так далее. +// +// Размещается над конструктором класса. +// +// Параметры: +// Значение - Строка - Имя желудя, под которым рогатка добавляется в контекст Поделки. +// ЗапускатьВФоне - Булево - Если Истина, то рогатка будет запущена в фоновом задании. +// Если Ложь, то рогатка будет запущена в текущем потоке. +// ОжидатьЗавершения - Булево - Если Истина и `ЗапускатьВФоне` = Истина, +// то после запуска рогатки будет ожидаться её завершение. +// Пример: +// Процедура ПриЗапускеПриложения() Экспорт +// . Сообщить("Привет из рогатки!"); +// КонецПроцедуры +// . +// &Рогатка +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("Рогатка") &Прозвище("Рогатка") Процедура ПриСозданииОбъекта(Значение = "", ЗапускатьВФоне = Истина, ОжидатьЗавершения = Истина) diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\241\320\277\320\265\321\206\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\241\320\277\320\265\321\206\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217.os" index c417d7a..1b8da2f 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\241\320\277\320\265\321\206\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\241\320\277\320\265\321\206\320\270\321\204\320\270\320\272\320\260\321\206\320\270\321\217.os" @@ -1,17 +1,36 @@ Перем _Значение; +// Сохраненное значение спецификации. +// +// Возвращаемое значение: +// Строка +// Функция Значение() Экспорт Возврат _Значение; КонецФункции +// Аннотация для указания жизненного цикла приложения, начиная с которого разрешено создавать желудь. +// +// По умолчанию все желуди имеют спецификацию "Выполнение", означающую, что желудь может быть создан только после вызова +// `Поделка.ЗапуститьПриложение()`. +// +// К желудям со спецификацией "Инициализация" не применяются напильники. +// +// Размещается над конструктором класса или над методом `&Завязи`. +// +// Параметры: +// Значение - Строка - Состояние приложения, на котором разрешено создавать желудь. См. СостоянияПриложения. +// +// Пример: +// &Спецификация("Инициализация") +// &Желудь +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("Спецификация") -Процедура ПриСозданииОбъекта(Значение) +Процедура ПриСозданииОбъекта(Значение = "Выполнение") - Если Значение = Неопределено Тогда - _Значение = "Выполнение"; - Иначе - _Значение = Значение; - КонецЕсли; + _Значение = Значение; Если СостоянияПриложения.Значения().Найти(_Значение) = Неопределено Тогда ТекстСообщения = СтрШаблон( diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\260\320\261\320\260\320\272\320\265\321\200\320\272\320\260.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\260\320\261\320\260\320\272\320\265\321\200\320\272\320\260.os" index cad7ba5..aa08c8a 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\260\320\261\320\260\320\272\320\265\321\200\320\272\320\260.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\242\320\260\320\261\320\260\320\272\320\265\321\200\320\272\320\260.os" @@ -1,3 +1,32 @@ +// Пометка, что прилепляемая частица прилепляется не непосредственно, а через специальный объект +// типа `Табакерка`, который позволяет получить частицу программно и отложенно. +// +// Может использоваться для внедрения компанейских желудей, внедрения желудя самого в себя, +// для разрыва циклических зависимостей, для передачи дополнительных параметров прилепляемого желудя и т.п. +// +// Используется совместно с аннотациями `&Пластилин` и `&Деталька`. +// +// Пример: +// +// 1. +// &Табакерка +// &Пластилин("ДругойЖелудь") +// Перем ТабакеркаСДругимЖелудем; +// . +// ДругойЖелудь = ТабакеркаСДругимЖелудем.Достать(); +// ДругойЖелудь.КакойТоМетод(); +// ... +// 2. +// &Табакерка +// &Пластилин("ДругойЖелудь") +// Перем ТабакеркаСДругимЖелудем; +// . +// МассивБлестяшек = Новый Массив; +// МассивБлестяшек.Добавить("Парам1"); +// . +// ДругойЖелудь = ТабакеркаСДругимЖелудем.Достать(МассивБлестяшек); +// ДругойЖелудь.КакойТоМетод(); +// &Аннотация("Табакерка") Процедура ПриСозданииОбъекта() diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\244\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\271\320\250\321\202\321\200\320\270\321\205.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\244\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\271\320\250\321\202\321\200\320\270\321\205.os" index 3c324ed..cd7afad 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\244\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\271\320\250\321\202\321\200\320\270\321\205.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\244\320\270\320\275\320\260\320\273\321\214\320\275\321\213\320\271\320\250\321\202\321\200\320\270\321\205.os" @@ -1,3 +1,24 @@ +// Процедуры, помеченные аннотацией "ФинальныйШтрих" будут вызваны в конце инициализации желудя, +// после отработки конструктора/метода завязи и всех напильников, применяемых на желуде. +// Во время выполнения процедуры доступны все прилепляемые частицы, прилепленные как через конструктор, +// так и через поля класса и методы-сеттеры. +// +// Желудь может содержать несколько процедур, помеченных аннотацией "ФинальныйШтрих". +// Порядок их вызова не гарантируется. +// +// Процедура должна быть помечена `Экспорт`ная. +// +// Пример: +// +// &ФинальныйШтрих +// Процедура ПостИнициализация() Экспорт +// . Сообщить("Я выполнилась после конструктора объекта"); +// КонецПроцедуры +// . +// &Желудь +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("ФинальныйШтрих") Процедура ПриСозданииОбъекта() diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\245\320\260\321\200\320\260\320\272\321\202\320\265\321\200.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\245\320\260\321\200\320\260\320\272\321\202\320\265\321\200.os" index b9e6cae..c794416 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\245\320\260\321\200\320\260\320\272\321\202\320\265\321\200.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\275\320\275\320\276\321\202\320\260\321\206\320\270\321\217\320\245\320\260\321\200\320\260\320\272\321\202\320\265\321\200.os" @@ -1,3 +1,25 @@ +// Задает способ управления жизненным циклом желудя. +// +// ОСень содержит два базовых характера желудя: "Одиночка" и "Компанейский". +// +// По умолчанию все желуди имеют характер "Одиночка", означающий, что желудь +// инициализируется один раз. При каждом запросе желудя будет возвращаться один и тот же +// экземпляр. +// +// Характер "Компанейский" означает, что каждый раз при запросе желудя будет создаваться +// новый экземпляр. +// +// Размещается над конструктором класса или над методом `&Завязи`. +// +// Параметры: +// Значение - Строка - Характер желудя. +// +// Пример: +// &Характер("Компанейский") +// &Желудь +// Процедура ПриСозданииОбъекта() +// КонецПроцедуры +// &Аннотация("Характер") Процедура ПриСозданииОбъекта(Значение) diff --git "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\270\320\273\320\265\320\277\320\273\321\217\321\202\320\276\321\200\320\247\320\260\321\201\321\202\320\270\321\206.os" "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\270\320\273\320\265\320\277\320\273\321\217\321\202\320\276\321\200\320\247\320\260\321\201\321\202\320\270\321\206.os" index 60fb1e5..b797d06 100644 --- "a/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\270\320\273\320\265\320\277\320\273\321\217\321\202\320\276\321\200\320\247\320\260\321\201\321\202\320\270\321\206.os" +++ "b/src/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\321\200\320\270\320\273\320\265\320\277\320\273\321\217\321\202\320\276\321\200\320\247\320\260\321\201\321\202\320\270\321\206.os" @@ -89,7 +89,7 @@ ИначеЕсли УправляющийПрилепляемымиКоллекциями.ЕстьПрилепляемаяКоллекция(ТипЖелудя) Тогда ПрилепляемаяЧастица = Поделка.НайтиЖелуди(ИмяЧастицы, ПрилепляемыеЧастицы, ТипЖелудя); Иначе - ВызватьИсключение "Неизвестный тип внедряемого через &Пластилин значения"; + ВызватьИсключение "Неизвестный тип прилепляемого через &Пластилин значения"; КонецЕсли; ИначеЕсли ТипЧастицы = ТипыПрилепляемыхЧастиц.Деталька() Тогда diff --git "a/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" similarity index 97% rename from "src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" rename to "src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index cc22e9a..83c83d2 100644 --- "a/src/internal/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/\320\234\320\276\320\264\321\203\320\273\320\270/\320\241\320\276\321\201\321\202\320\276\321\217\320\275\320\270\321\217\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -1,20 +1,20 @@ -Перем Значения; - -Функция Инициализация() Экспорт - Возврат "Инициализация"; -КонецФункции - -Функция Выполнение() Экспорт - Возврат "Выполнение"; -КонецФункции - -Функция Значения() Экспорт - Возврат Значения; -КонецФункции - -Значения = Новый Массив; - -Значения.Добавить(Инициализация()); -Значения.Добавить(Выполнение()); - -Значения = Новый ФиксированныйМассив(Значения); +Перем Значения; + +Функция Инициализация() Экспорт + Возврат "Инициализация"; +КонецФункции + +Функция Выполнение() Экспорт + Возврат "Выполнение"; +КонецФункции + +Функция Значения() Экспорт + Возврат Значения; +КонецФункции + +Значения = Новый Массив; + +Значения.Добавить(Инициализация()); +Значения.Добавить(Выполнение()); + +Значения = Новый ФиксированныйМассив(Значения);