Публичный интерфейс библиотеки autumn
Аннотации
Список аннотаций
Желуди
Детальки
Прилепляемые коллекции
Классы
- СоветДругогоМастера
- СтроительМенеджераПараметров
- Завязь
- Табакерка
- ОпределениеЖелудя
- ОпределениеАннотации
- ПрилепляемаяЧастица
Модули
Напильники
Приемки
Перечисления
АннотацияЖелудь
ПриСозданииОбъекта
// Помечает указанный класс как желудь - компонент, жизненным циклом которого управляет фреймворк ОСень.
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя. По умолчанию будет использовано имя типа объекта,
// как оно возвращается функцией `ТипЗнч`.
//
// Пример:
// &Желудь
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Значение = "")АннотацияПластилин
ПриСозданииОбъекта
// Маркерная аннотация для указания, что прилепляемая частица
// является желудем. Основной способ связывания желудей между собой.
//
// Может быть использована над параметром конструктора/метода завязи желудя, полем класса
// или методом установки значения.
//
// Параметры:
// Значение - Строка - Имя прилепляемого желудя. Если не заполнено, используется имя параметра конструктора/поля
// класса или часть имени метода для установки значения.
// Тип - Строка - Тип прилепляемого желудя. В случае передачи значения "Желудь", будет внедрен желудь как таковой.
// Так же может быть указан тип-коллекция: "Массив", "ТаблицаЗначений" и другие. Полный список
// доступных типов см. в библиотеке
// [autumn-collections](https://github.com/autumn-library/autumn-collections).
// Блестяшка - Произвольный - Повторяемый параметр. Передаваемые в прилепляемый желудь произвольные значения.
//
// Пример:
//
// 1.
// &Желудь
// Процедура ПриСозданииОбъекта(&Пластилин ДругойЖелудь)
//
// 2.
// &Желудь
// Процедура ПриСозданииОбъекта(
// . &Пластилин(Значение = "ДругойЖелудь", Тип = "Массив", Блестяшка = "Парам1", Блестяшка = "Парам2") Зависимость
// )
//
// 3.
// &Пластилин
// Перем ДругойЖелудь;
//
// 4.
// &Завязь
// Функция МойЖелудь(&Пластилин ДругойЖелудь) Экспорт
//
// 5.
// &Пластилин
// Процедура УстановитьДругойЖелудь(Зависимость) Экспорт
//
Процедура ПриСозданииОбъекта(Повторяемый = Блестяшка = Неопределено)АннотацияДуб
ПриСозданииОбъекта
// Помечает указанный класс как фабрику компонентов - дуб, из которого появляются желуди.
// `&Дуб` сам по себе тоже является желудем, то есть может запрашивать прилепление частиц,
// является объектом для обработки `&Напильник`ом, может иметь `&Спецификация` и так далее.
//
// Дуб обычно содержит методы, помеченные аннотацией `&Завязь`, которые возвращают желуди, но
// может содержать и другие методы, не связанные непосредственно с созданием желудей.
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя. По умолчанию будет использовано имя типа объекта,
// как оно возвращается функцией `ТипЗнч`.
// Пример:
// &Дуб
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
// .
// &Завязь
// Функция ПользовательскийЖелудь() Экспорт
// . Возврат Новый ПользовательскийЖелудь();
// КонецФункции
//
Процедура ПриСозданииОбъекта(Значение = "")АннотацияЗавязь
ПриСозданииОбъекта
// Помечает функцию как функцию, создающую желудь.
//
// Может иметь параметры, каждый из которых должен быть промаркирован как &Пластилин, &Деталька или &Блестяшка.
// В указанные параметры автоматически будут прилеплены соответствующие частицы при создании желудя.
//
// Может размещаться над экспортной функцией в классе, проаннотированном как `&Дуб`, или над методом-лямбдой,
// передаваемой в качестве параметра в `Поделка.ДобавитьЗавязь()`.
//
// Параметры:
// Значение - Строка - Имя создаваемого желудя. По умолчанию будет использовано имя метода.
// Тип - Строка - Тип создаваемого желудя.
// Требуется если по имени желудя не получается однозначного определить его тип.
//
// Пример:
// &Завязь
// Функция ПользовательскийЖелудь(&Пластилин Зависимость, &Деталька ВажнаяНастройка) Экспорт
// . Возврат Новый ПользовательскийЖелудь(Зависимость, ВажнаяНастройка);
// КонецФункции
//
Процедура ПриСозданииОбъекта(Значение = "", Тип = "")АннотацияДеталька
ПриСозданииОбъекта
// Маркерная аннотация для указания, что прилепляемая частица
// является настройкой приложения.
//
// Может быть использована над параметром конструктора/метода завязи желудя, полем класса
// или методом установки значения.
//
// Параметры:
// Значение - Строка - Ключ настройки. См. библиотеку [configor](https://github.com/oscript-library/configor)
// для полного описания синтаксиса.
// Если не заполнено, используется имя параметра конструктора/поля класса
// или часть имени метода для установки значения.
// ЗначениеПоУмолчанию - Произвольный - Значение, которое принимает деталька, если не задано из-вне.
//
// Пример:
//
// 1.
// &Деталька
// Перем ПутьКФайлу;
//
// 2.
// &Деталька(Значение = "Настройки.ПутьКФайлу", ЗначениеПоУмолчанию = "./file.txt")
// Перем ПутьКФайлу;
//
// 3.
// &Желудь
// Процедура ПриСозданииОбъекта(&Деталька ПутьКФайлу)
//
// 4.
// &Деталька
// Процедура УстановитьПутьКФайлу(Значение) Экспорт
//
// 5.
// &Завязь
// Функция МойЖелудь(&Деталька ПутьКФайлу) Экспорт
//
Процедура ПриСозданииОбъекта(Значение = "", ЗначениеПоУмолчанию = Неопределено)АннотацияБлестяшка
ПриСозданииОбъекта
// Маркерная аннотация для указания, что прилепляемая частица
// является произвольным значением, передаваемым в конструктор желудя.
//
// Может быть использована только над параметром конструктора/метода завязи желудя.
//
// Пример:
//
// 1.
// &Желудь
// Процедура ПриСозданииОбъекта(&Блестяшка ПроизвольноеЗначение)
//
// 2.
// &Завязь
// Функция МойЖелудь(&Блестяшка ПроизвольноеЗначение) Экспорт
//
Процедура ПриСозданииОбъекта()АннотацияТабакерка
ПриСозданииОбъекта
// Пометка, что прилепляемая частица прилепляется не непосредственно, а через специальный объект
// типа `Табакерка`, который позволяет получить частицу программно и отложенно.
//
// Может использоваться для внедрения компанейских желудей, внедрения желудя самого в себя,
// для разрыва циклических зависимостей, для передачи дополнительных параметров прилепляемого желудя и т.п.
//
// Используется совместно с аннотациями `&Пластилин` и `&Деталька`.
//
// Пример:
//
// 1.
// &Табакерка
// &Пластилин("ДругойЖелудь")
// Перем ТабакеркаСДругимЖелудем;
// .
// ДругойЖелудь = ТабакеркаСДругимЖелудем.Достать();
// ДругойЖелудь.КакойТоМетод();
// ...
// 2.
// &Табакерка
// &Пластилин("ДругойЖелудь")
// Перем ТабакеркаСДругимЖелудем;
// .
// МассивБлестяшек = Новый Массив;
// МассивБлестяшек.Добавить("Парам1");
// .
// ДругойЖелудь = ТабакеркаСДругимЖелудем.Достать(МассивБлестяшек);
// ДругойЖелудь.КакойТоМетод();
//
Процедура ПриСозданииОбъекта()АннотацияФинальныйШтрих
ПриСозданииОбъекта
// Процедуры, помеченные аннотацией "ФинальныйШтрих" будут вызваны в конце инициализации желудя,
// после отработки конструктора/метода завязи и всех напильников, применяемых на желуде.
// Во время выполнения процедуры доступны все прилепляемые частицы, прилепленные как через конструктор,
// так и через поля класса и методы-сеттеры.
//
// Желудь может содержать несколько процедур, помеченных аннотацией "ФинальныйШтрих".
// Порядок их вызова не гарантируется.
//
// Процедура должна быть помечена `Экспорт`ная.
//
// Пример:
//
// &ФинальныйШтрих
// Процедура ПостИнициализация() Экспорт
// . Сообщить("Я выполнилась после конструктора объекта");
// КонецПроцедуры
// .
// &Желудь
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта()АннотацияНапильник
ПриСозданииОбъекта
// Специальный тип желудя для дополнительной обработки других желудей в процессе их создания.
//
// Может использоваться для добавления дополнительных действий или свойств создаваемым желудям. Метод `ОбработатьЖелудь`
// **может** возвращать другой объект, который подменит текущий желудь, или обертку-декоратор над текущим желудем.
//
// Каждый `&Напильник` дополнительно имеет `&Прозвище("Напильник")`.
//
// Напильник сам по себе является желудем, однако в силу своей специфики он может запрашивать прилепление только
// &Деталек и Поделки.
//
// Желудь, помеченный аннотацией `&Напильник`, должен реализовать следующий интерфейс:
// * `Функция ОбработатьЖелудь(Желудь, ОпределениеЖелудя) Экспорт`
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя, под которым напильник добавляется в контекст Поделки.
// ПрименяетсяТолькоНа - Строка - Повторяемый параметр. Ограничивает применение напильника только на желудях
// с указанными именами.
//
// Пример:
// &Напильник
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Повторяемый = ПрименяетсяТолькоНа = Неопределено)МожетПрименятьсяНа
// Проверить, может ли текущий напильник применяться на указанном желуде.
//
// Параметры:
// ОпределениеЖелудя - ОпределениеЖелудя - Определение желудя, для которого проверяется
// применимость текущего напильника.
//
// Возвращаемое значение:
// Булево - Истина, если напильник может применяться на указанном желуде, иначе Ложь.
//
Функция МожетПрименятьсяНа(ОпределениеЖелудя)АннотацияЗаготовка
ПриСозданииОбъекта
// Специальный тип желудя для выполнения дополнительных действий в момент помещения класса в контекст Поделки.
//
// Может использоваться для добавления динамической загрузки новых классов в систему типов OneScript или
// дополнительных импортов библиотек через директиву `#Использовать`.
//
// Каждая `&Заготовка` дополнительно имеет `&Прозвище("Заготовка")` и &Спецификация("Инициализация").
//
// Желудь, помеченный аннотацией `&Заготовка`, должен реализовать следующий интерфейс:
// * `Процедура ПриИнициализацииПоделки(Поделка) Экспорт`
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя, под которым заготовка добавляется в контекст Поделки.
//
// Пример:
// &Заготовка
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Значение = "")АннотацияРогатка
ПриСозданииОбъекта
// Специальный тип желудя, автоматически выполняемый при запуске приложения (`Поделка.ЗапуститьПриложение()`).
//
// Желудь, помеченный аннотацией `&Рогатка`, должен реализовать следующий интерфейс:
// * `Процедура ПриЗапускеПриложения() Экспорт`
//
// Каждая `&Рогатка` дополнительно имеет `&Прозвище("Рогатка")`.
//
// `&Рогатка` сама по себе тоже является желудем, то есть может запрашивать прилепление частиц,
// является объектом для обработки `&Напильник`ом, может иметь `&Спецификация` и так далее.
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя, под которым рогатка добавляется в контекст Поделки.
// ЗапускатьВФоне - Булево - Если Истина, то рогатка будет запущена в фоновом задании.
// Если Ложь, то рогатка будет запущена в текущем потоке.
// ОжидатьЗавершения - Булево - Если Истина и `ЗапускатьВФоне` = Истина,
// то после запуска рогатки будет ожидаться её завершение.
// Пример:
// Процедура ПриЗапускеПриложения() Экспорт
// . Сообщить("Привет из рогатки!");
// КонецПроцедуры
// .
// &Рогатка
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Значение = "", ЗапускатьВФоне = Истина, ОжидатьЗавершения = Истина)ЗапускатьВФоне
// Флаг необходимости запуска рогатки в фоновом задании.
//
// Возвращаемое значение:
// Булево
//
Функция ЗапускатьВФоне()ОжидатьЗавершения
// Флаг необходимости ожидания завершения рогатки при ее запуске в фоновом задании.
//
// Возвращаемое значение:
// Булево
//
Функция ОжидатьЗавершения()АннотацияПриемка
ПриСозданииОбъекта
// Специальный тип желудя для обработки определений желудей.
//
// Аналог &Напильника для `ОпределениеЖелудя`. Срабатывает каждый раз, когда в контекст добавляется новое
// определение желудя. При добавлении самой Приемки в контекст, все ранее добавленные определения желудей
// передаются в Приемку для проверки.
//
// Класс, помеченный аннотацией `&Приемка`, должен реализовать следующий интерфейс:
// * `Процедура ПриДобавленииОпределенияЖелудя(ОпределениеЖелудя) Экспорт`
//
// Каждая `&Приемка` так же имеет `&Характер("Компанейский")`, `&Прозвище("Приемка")` и `&Спецификация("Инициализация")`
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя желудя, под которым приемка добавляется в контекст Поделки.
//
// Пример:
//
// Процедура ПриДобавленииОпределенияЖелудя(ОпределениеЖелудя) Экспорт
// . Сообщить("Определение желудя: " + ОпределениеЖелудя.Имя());
// КонецПроцедуры
// .
// &Приемка
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Значение = "")АннотацияПрозвище
ПриСозданииОбъекта
// Добавляет к желудю дополнительный идентификатор, по которому его можно в последствии доставать из Поделки.
// Желудь может иметь несколько прозвищ. Одно и то же прозвище может использоваться для нескольких желудей.
//
// Может быть использовано, например, для группировки желудей и получении их в виде массива.
//
// Размещается над конструктором класса или над методом `&Завязи`.
//
// Параметры:
// Значение - Строка - Задаваемое прозвище.
//
// Пример:
//
// &Прозвище("ПодписчикНаСобытие")
// &Прозвище("ПользовательскийЖелудь")
// &Желудь("МойЖелудь")
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Значение)АннотацияВерховный
ПриСозданииОбъекта
// Помечает желудь как имеющий приоритет среди других желудей с таким же именем или `&Прозвищем`.
// В случае конфликта имен при получении желудей или их регистрации, будет использован желудь с аннотацией `&Верховный`.
//
// При наличии нескольких желудей с одним и тем же прозвищем позволяет определить, какой из них следует возвращать
// при поиске конкретного желудя по его прозвищу.
//
// Если несколько желудей с одним и тем же именем/прозвищем имеют аннотацию `&Верховный`, будет вызвано исключение.
//
// Размещается над определением желудя - конструктором или методом &Завязи.
//
// Пример:
// 1.
// &Верховный
// &Желудь("ПереопределяемыйЖелудь")
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
// .
// 2.
// &Верховный
// &Завязь
// Функция ПереопределяемыйЖелудь() Экспорт
// КонецФункции
//
Процедура ПриСозданииОбъекта()АннотацияПорядок
ПриСозданииОбъекта
// Управляет порядком инициализации и использования желудя. Не может быть меньше 1 или больше 999998.
//
// Если размещается над обычным `&Желудем` или `&Завязью`, то влияет на порядок сортировки, при получении
// коллекции желудей по прозвищу.
//
// Если размещается над `&Напильником`, влияет на порядок применения напильников к желудям.
//
// Если размещается над `&Рогаткой`, влияет на порядок запуска рогаток при старте приложения.
//
// Параметры:
// Значение - Число - Задаваемый порядок.
//
Процедура ПриСозданииОбъекта(Значение = 1)Значение
// Порядок, заданный аннотацией.
//
// Возвращаемое значение:
// Число
//
Функция Значение() ЭкспортАннотацияХарактер
ПриСозданииОбъекта
// Задает способ управления жизненным циклом желудя.
//
// ОСень содержит два базовых характера желудя: "Одиночка" и "Компанейский".
//
// По умолчанию все желуди имеют характер "Одиночка", означающий, что желудь
// инициализируется один раз. При каждом запросе желудя будет возвращаться один и тот же
// экземпляр.
//
// Характер "Компанейский" означает, что каждый раз при запросе желудя будет создаваться
// новый экземпляр.
//
// Размещается над конструктором класса или над методом `&Завязи`.
//
// Параметры:
// Значение - Строка - Характер желудя.
//
// Пример:
// &Характер("Компанейский")
// &Желудь
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Значение)АннотацияОсобоеОбращение
ПриСозданииОбъекта
// Маркерная аннотация, показывающая, что желудь требует изменений в процессе своего создания.
//
// Параметры аннотации конфликтуют между собой. Если отключаются все напильники, то нельзя задавать ограничения на
// применение конкретных напильников или отключение конкретных напильников. Если задано ограничение на применение только
// конкретных напильников, то нельзя задавать ограничение на отключение конкретных напильников (и наоборот).
//
// Размещается над конструктором класса или над методом `&Завязи`.
//
// Параметры:
// ОтключитьВсеНапильники - Булево - Не применять на желуде никакие напильники.
// ПрименятьТолькоНапильник - Строка - Повторяемый параметр. Применять на желуде только напильник с указанным именем.
// НеПрименятьНапильник - Строка - Повторяемый параметр. Не применять на желуде напильник с указанным именем.
//
Процедура ПриСозданииОбъекта(Повторяемый = НеПрименятьНапильник = Неопределено)НапильникМожетПрименяться
// Проверяет, может ли указанный напильник применяться над желудем, помеченным аннотацией `&ОсобоеОбращение`.
//
// Параметры:
// ИмяНапильника - Строка - Имя напильника для проверки применимости.
//
// Возвращаемое значение:
// Булево - Истина, если напильник может применяться на текущем желуде, иначе Ложь.
//
Функция НапильникМожетПрименяться(ИмяНапильника) ЭкспортАннотацияСпецификация
ПриСозданииОбъекта
// Аннотация для указания жизненного цикла приложения, начиная с которого разрешено создавать желудь.
//
// По умолчанию все желуди имеют спецификацию "Выполнение", означающую, что желудь может быть создан только после вызова
// `Поделка.ЗапуститьПриложение()`.
//
// К желудям со спецификацией "Инициализация" не применяются напильники.
//
// Размещается над конструктором класса или над методом `&Завязи`.
//
// Параметры:
// Значение - Строка - Состояние приложения, на котором разрешено создавать желудь. См. СостоянияПриложения.
//
// Пример:
// &Спецификация("Инициализация")
// &Желудь
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Значение = "Выполнение")Значение
// Сохраненное значение спецификации.
//
// Возвращаемое значение:
// Строка
//
Функция Значение() ЭкспортINFO
Документация из библиотеки autumn-collections.
АннотацияПрилепляемаяКоллекция
ПриСозданииОбъекта
// Помечает класс как реализацию прилепляемой коллекции с заданным именем.
//
// Имя используется при запросе коллекции через
// УправляющийПрилепляемымиКоллекциями.ПолучитьПрилепляемуюКоллекцию.
//
// Класс, помеченный аннотацией `&ПрилепляемаяКоллекция`, должен реализовать следующий интерфейс:
// * `Процедура Добавить(Желудь, ОпределениеЖелудя) Экспорт`
// * `Функция Получить() Экспорт`
//
// Размещается над конструктором класса.
//
// Параметры:
// Значение - Строка - Имя регистрируемой прилепляемой коллекции (например, "Массив", "Соответствие").
//
// Пример:
// &ПрилепляемаяКоллекция("МояКоллекция")
// Процедура ПриСозданииОбъекта()
// КонецПроцедуры
//
Процедура ПриСозданииОбъекта(Значение)INFO
Документация из библиотеки annotations.
АннотацияАннотация
ПриСозданииОбъекта
// Базовый объект аннотации.
// Все пользовательские аннотации должны иметь аннотацию &Аннотация с передачей имени аннотации в качестве параметра.
//
// Параметры:
// Значение - Строка - Имя аннотации.
//
Процедура ПриСозданииОбъекта(Значение)INFO
Документация из библиотеки annotations.
АннотацияПовторяемый
ПриСозданииОбъекта
// Аннотация, показывающая что параметр аннотации может быть указан несколько раз.
//
// Применяется к параметрам конструктора аннотации.
//
// Примеры:
//
// &Аннотация("МояАннотация")
// Процедура ПриСозданииОбъекта(Значение, &Повторяемый Параметр)
// КонецПроцедуры
// .
// &МояАннотация(Значение = "Переданное значение", Параметр = "Первый параметр", Параметр = "Второй параметр")
//
Процедура ПриСозданииОбъекта()INFO
Документация из библиотеки annotations.
АннотацияПсевдонимДля
ПриСозданииОбъекта
// Аннотация, объявляющая параметр конструктора аннотации псевдонимом
// для параметра вложенной мета-аннотации.
//
// Применяется к параметрам конструктора аннотации-агрегатора (композитной аннотации).
// При разворачивании композитной аннотации значение помеченного параметра
// переносится в указанный параметр указанной мета-аннотации.
//
// По умолчанию в мета-аннотацию переносится только явно переданное значение параметра.
// Если значение параметра при применении композитной аннотации не указано, его значение
// по умолчанию НЕ переносится — мета-аннотация использует собственное значение по умолчанию.
// Чтобы намеренно переопределить значение по умолчанию мета-аннотации значением по умолчанию
// параметра-псевдонима, укажите ПереноситьЗначениеПоУмолчанию = Истина.
//
// Параметры:
// Аннотация - Строка - Имя мета-аннотации, параметр которой переопределяется.
// Параметр - Строка - Имя параметра мета-аннотации, которому присваивается значение.
// ПереноситьЗначениеПоУмолчанию - Булево - Признак переноса значения по умолчанию параметра-псевдонима
// в мета-аннотацию, когда значение параметра не было передано явно.
// По умолчанию Ложь — переносятся только явно переданные значения.
//
// Примеры:
//
// &Аннотация("Композит")
// &Цель
// Процедура ПриСозданииОбъекта(&ПсевдонимДля(Аннотация = "Цель", Параметр = "Значение") Значение)
// КонецПроцедуры
// .
// &Композит("переданное значение")
// // развернётся в &Композит("переданное значение") + &Цель(Значение = "переданное значение")
// .
// &Композит
// // развернётся в &Композит + &Цель — значение параметра "Значение" не передано,
// // поэтому мета-аннотация &Цель использует собственное значение по умолчанию.
//
// Чтобы переносить значение по умолчанию параметра-псевдонима, используйте
// ПереноситьЗначениеПоУмолчанию = Истина:
//
// &Аннотация("Композит")
// &Цель
// Процедура ПриСозданииОбъекта(
// &ПсевдонимДля(Аннотация = "Цель", Параметр = "Значение", ПереноситьЗначениеПоУмолчанию = Истина)
// Значение = "значение по умолчанию композита"
// )
// КонецПроцедуры
// .
// &Композит
// // развернётся в &Композит + &Цель(Значение = "значение по умолчанию композита")
//
// Параметр-псевдоним может быть одновременно помечен аннотацией &Повторяемый.
// В этом случае при разворачивании в целевую мета-аннотацию переносятся все
// переданные значения параметра.
//
// Примеры:
//
// &Аннотация("Композит")
// &Цель
// Процедура ПриСозданииОбъекта(&Повторяемый &ПсевдонимДля(Аннотация = "Цель", Параметр = "Значение") Значение)
// КонецПроцедуры
// .
// &Композит("первое", "второе")
// // развернётся в &Композит("первое", "второе") + &Цель(Значение = "первое", Значение = "второе")
//
Процедура ПриСозданииОбъекта(Аннотация, Параметр, ПереноситьЗначениеПоУмолчанию = Ложь)Поделка
ПриСозданииОбъекта
// Создаёт контекст приложения (поделку): инициализирует фабрику желудей, контейнер аннотаций,
// менеджер параметров и сканирует известные типы.
//
// Параметры:
// СоветДругогоМастера - СоветДругогоМастера - Настройки создания поделки. По умолчанию Неопределено — используются настройки по умолчанию.
//
Процедура ПриСозданииОбъекта(Знач СоветДругогоМастера = Неопределено)ПолучитьОпределенияЖелудей
// Возвращает определения желудей. Если имя не указано — возвращаются все известные определения.
//
// Параметры:
// Имя - Строка - Имя желудя, определения которого нужно получить. По умолчанию Неопределено — вернутся все определения.
//
// Возвращаемое значение:
// ФиксированноеСоответствие:
// * Ключ - Строка - имя желудя
// * Значение - ОпределениеЖелудя - определение желудя
//
Функция ПолучитьОпределенияЖелудей(Имя = Неопределено) ЭкспортПолучитьОпределенияАннотаций
// Возвращает определения всех зарегистрированных аннотаций.
//
// Возвращаемое значение:
// ФиксированноеСоответствие:
// * Ключ - Строка - имя аннотации
// * Значение - ОпределениеАннотации - определение аннотации
//
Функция ПолучитьОпределенияАннотаций() ЭкспортПолучитьОпределениеЖелудя
// Возвращает определение желудя по его имени.
//
// Параметры:
// Имя - Строка - Имя желудя.
//
// Возвращаемое значение:
// ОпределениеЖелудя, Неопределено - определение желудя либо Неопределено, если желудь не найден.
//
Функция ПолучитьОпределениеЖелудя(Имя) ЭкспортПолучитьОпределениеАннотации
// Возвращает определение аннотации по её имени.
//
// Параметры:
// Имя - Строка - Имя аннотации.
//
// Возвращаемое значение:
// ОпределениеАннотации, Неопределено - определение аннотации либо Неопределено, если аннотация не найдена.
//
Функция ПолучитьОпределениеАннотации(Имя) ЭкспортНайтиЖелудь
// Находит и возвращает экземпляр желудя по его имени.
//
// Параметры:
// Имя - Строка - Имя желудя. Имя "Поделка" возвращает сам контекст.
// ПрилепляемыеЧастицы - Массив из ПрилепляемаяЧастица - Зависимости, передаваемые желудю при создании. По умолчанию Неопределено.
//
// Возвращаемое значение:
// Произвольный - экземпляр желудя.
//
Функция НайтиЖелудь(Имя, ПрилепляемыеЧастицы = Неопределено) ЭкспортНайтиЖелуди
// Находит и возвращает все экземпляры желудей с указанным именем в виде коллекции заданного типа.
//
// Параметры:
// Имя - Строка - Имя желудей. Имя "Поделка" возвращает сам контекст (только для типа "Массив").
// ПрилепляемыеЧастицы - Массив из ПрилепляемаяЧастица - Зависимости, передаваемые желудям при создании. По умолчанию Неопределено.
// ТипЖелудя - Строка - Тип возвращаемой коллекции ("Массив", "Соответствие" и т.п.). По умолчанию "Массив".
//
// Возвращаемое значение:
// Произвольный - коллекция найденных экземпляров желудей указанного типа.
//
Функция НайтиЖелуди(Имя, ПрилепляемыеЧастицы = Неопределено, ТипЖелудя = "Массив") ЭкспортНайтиДетальку
// Возвращает значение детальки (параметра приложения) по её имени.
//
// Параметры:
// ИмяДетальки - Строка - Имя детальки.
// ЗначениеПоУмолчанию - Произвольный - Значение, возвращаемое, если деталька не найдена. По умолчанию Неопределено.
//
// Возвращаемое значение:
// Произвольный - значение детальки либо значение по умолчанию.
//
Функция НайтиДетальку(ИмяДетальки, ЗначениеПоУмолчанию = Неопределено) ЭкспортДобавитьЗавязь
// Регистрирует завязь (метод-фабрику желудя) на основе переданной лямбды.
//
// Параметры:
// Лямбда - Строка, Действие - Лямбда или делегат, создающий желудь.
// Контекст - Произвольный - Контекст выполнения лямбды. По умолчанию Неопределено.
//
// Возвращаемое значение:
// Завязь - созданная завязь.
//
Функция ДобавитьЗавязь(Лямбда, Контекст = Неопределено) ЭкспортЗапуститьПриложение
// Переводит поделку из состояния инициализации в состояние выполнения
// и запускает желудь "ЗапускательПриложения".
//
Процедура ЗапуститьПриложение() ЭкспортINFO
Документация из библиотеки annotations.
РазворачивательАннотаций
ПриСозданииОбъекта
Процедура ПриСозданииОбъекта(КонтейнерАннотаций)РазвернутьАннотацииСвойства
// Развернуть все аннотации переданного свойства рекурсивно.
// Для разворачивания используются данные из определений аннотаций.
//
// Параметры:
// Свойство - Структура - Описание свойства, метода или параметра метода:
// * Имя - Строка - Имя свойства.
// * Аннотации - ТаблицаЗначений - Таблица аннотаций свойства:
// ** Имя - Строка - Имя аннотации.
// ** Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// *** Имя - Строка - Имя параметра аннотации.
// *** Значение - Строка - Значение параметра аннотации.
// ВладелецСвойства - Тип - Тип владельца свойства.
// - Сценарий - Экземпляр владельца свойства.
//
Процедура РазвернутьАннотацииСвойства(Свойство, ВладелецСвойства) ЭкспортРазвернутьАннотацииСвойств
// Развернуть все аннотации переданного свойства рекурсивно.
// Для разворачивания используются данные из определений аннотаций.
//
// Параметры:
// Свойства - Массив Из Структура - Описания свойств, методов или параметров метода:
// * Имя - Строка - Имя свойства.
// * Аннотации - ТаблицаЗначений - Таблица аннотаций свойства:
// ** Имя - Строка - Имя аннотации.
// ** Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// *** Имя - Строка - Имя параметра аннотации.
// *** Значение - Строка - Значение параметра аннотации.
// ВладелецСвойства - Тип - Тип владельца свойства.
// - Сценарий - Экземпляр владельца свойства.
//
Процедура РазвернутьАннотацииСвойств(Свойства, ВладелецСвойства) ЭкспортINFO
Документация из библиотеки annotations.
КонтейнерАннотаций
ПриСозданииОбъекта
// Контейнер аннотаций - объект, который хранит все определения аннотаций.
// При создании контейнера аннотаций в него автоматически добавляется базовая аннотация &Аннотация.
//
Процедура ПриСозданииОбъекта()ПолучитьОпределенияАннотаций
// Получить все определения аннотаций.
//
// Возвращаемое значение:
// ФиксированноеСоответствие - Соответствие, в котором хранятся все определения аннотаций:
// * Ключ - Строка - имя аннотации.
// * Значение - ОпределениеАннотации - определение аннотации.
//
Функция ПолучитьОпределенияАннотаций() ЭкспортПолучитьОпределениеАннотации
// Получить определение аннотации по её имени.
//
// Параметры:
// Имя - Строка - Имя аннотации.
//
// Возвращаемое значение:
// ОпределениеАннотации, Неопределено - Найденное определение аннотаций.
// Неопределено, если аннотация с данным именем не зарегистрирована.
//
Функция ПолучитьОпределениеАннотации(Имя) ЭкспортПолучитьРазворачивательАннотаций
// Получить настроенный разворачиватель аннотаций.
//
// Возвращаемое значение:
// РазворачивательАннотаций - Разворачиватель аннотаций, связанный с данным контейнером аннотаций.
//
Функция ПолучитьРазворачивательАннотаций() ЭкспортДобавитьАннотацию
// Добавить аннотацию в контейнер аннотаций.
//
// Параметры:
// ТипАннотации - Тип - Тип аннотации.
// ПереопределитьЕслиСуществует - Булево - Если Истина, то при добавлении уже существующей аннотации
// она будет переопределена. Если Ложь (по умолчанию),
// то будет вызвано исключение.
//
// Возвращаемое значение:
// ОпределениеАннотации - Определение добавленной аннотации.
//
Функция ДобавитьАннотацию(ТипАннотации, Знач ПереопределитьЕслиСуществует = Ложь) ЭкспортПрилепляторЧастиц
ПриСозданииОбъекта
// @internal
Процедура ПриСозданииОбъекта(пПоделка, пУправляющийПрилепляемымиКоллекциями)ДанныеОПрилепляемойЧастице
Функция ДанныеОПрилепляемойЧастице(Свойство, Знач ИмяСвойства = Неопределено) ЭкспортНайтиПрилепляемуюЧастицу
Функция НайтиПрилепляемуюЧастицу(ДанныеОПрилепляемойЧастице, Знач ПрилепляемыеЧастицы = Неопределено) Экспортcore.ЗапускатьРогатки
Тип
Булево
Описание
Определяет следует ли запускать все рогатки при старте приложения.
INFO
Документация из библиотеки autumn-collections.
ПрилепляемаяКоллекцияМассив
ПриСозданииОбъекта
// Конструктор прилепляемой коллекции на основе массива.
// Регистрируется в УправляющийПрилепляемымиКоллекциями как коллекция "Массив".
//
Процедура ПриСозданииОбъекта()Добавить
// Добавляет очередной желудь в коллекцию.
//
// Параметры:
// Желудь - Произвольный - Добавляемый экземпляр желудя.
// ОпределениеЖелудя - ОпределениеЖелудя - Определение добавляемого желудя.
//
Процедура Добавить(Желудь, ОпределениеЖелудя) ЭкспортПолучить
// Возвращает прилеплённые желуди в виде неизменяемого массива.
//
// Возвращаемое значение:
// ФиксированныйМассив из Произвольный - желуди в порядке прилепления.
//
Функция Получить() ЭкспортINFO
Документация из библиотеки autumn-collections.
ПрилепляемаяКоллекцияТаблицаЗначений
ПриСозданииОбъекта
// Конструктор прилепляемой коллекции на основе таблицы значений с колонками
// «Имя», «Желудь», «ОпределениеЖелудя».
// Регистрируется в УправляющийПрилепляемымиКоллекциями как коллекция "ТаблицаЗначений".
//
Процедура ПриСозданииОбъекта()Добавить
// Добавляет очередной желудь в коллекцию отдельной строкой с именем, экземпляром
// и определением желудя.
//
// Параметры:
// Желудь - Произвольный - Добавляемый экземпляр желудя.
// ОпределениеЖелудя - ОпределениеЖелудя - Определение добавляемого желудя.
//
Процедура Добавить(Желудь, ОпределениеЖелудя) ЭкспортПолучить
// Возвращает прилеплённые желуди в виде копии таблицы значений.
//
// Возвращаемое значение:
// ТаблицаЗначений:
// * Имя - Строка - имя желудя
// * Желудь - Произвольный - экземпляр желудя
// * ОпределениеЖелудя - ОпределениеЖелудя - определение желудя
//
Функция Получить() ЭкспортINFO
Документация из библиотеки autumn-collections.
ПрилепляемаяКоллекцияСоответствие
ПриСозданииОбъекта
// Конструктор прилепляемой коллекции на основе соответствия.
// Регистрируется в УправляющийПрилепляемымиКоллекциями как коллекция "Соответствие".
//
Процедура ПриСозданииОбъекта()Добавить
// Добавляет очередной желудь в коллекцию. Ключом служит имя желудя.
//
// Параметры:
// Желудь - Произвольный - Добавляемый экземпляр желудя.
// ОпределениеЖелудя - ОпределениеЖелудя - Определение добавляемого желудя.
//
Процедура Добавить(Желудь, ОпределениеЖелудя) ЭкспортПолучить
// Возвращает прилеплённые желуди в виде неизменяемого соответствия.
//
// Возвращаемое значение:
// ФиксированноеСоответствие:
// * Ключ - Строка - имя желудя
// * Значение - Произвольный - желудь
//
Функция Получить() ЭкспортINFO
Документация из библиотеки autumn-collections.
ПрилепляемаяКоллекцияКарта
ПриСозданииОбъекта
// Конструктор прилепляемой коллекции на основе карты.
// Регистрируется в УправляющийПрилепляемымиКоллекциями как коллекция "Карта".
//
Процедура ПриСозданииОбъекта()Добавить
// Добавляет очередной желудь в коллекцию. Ключом служит имя желудя.
//
// Параметры:
// Желудь - Произвольный - Добавляемый экземпляр желудя.
// ОпределениеЖелудя - ОпределениеЖелудя - Определение добавляемого желудя.
//
Процедура Добавить(Желудь, ОпределениеЖелудя) ЭкспортПолучить
// Возвращает прилеплённые желуди в виде неизменяемой карты, где ключом служит имя
// желудя (Строка), а значением — экземпляр желудя (Произвольный).
//
// Возвращаемое значение:
// ФиксированнаяКарта - карта прилеплённых желудей.
//
Функция Получить() ЭкспортINFO
Документация из библиотеки autumn-collections.
ПрилепляемаяКоллекцияМножество
ПриСозданииОбъекта
// Конструктор прилепляемой коллекции на основе множества.
// Регистрируется в УправляющийПрилепляемымиКоллекциями как коллекция "Множество".
//
Процедура ПриСозданииОбъекта()Добавить
// Добавляет очередной желудь в коллекцию. Повторное добавление одного и того же
// желудя игнорируется.
//
// Параметры:
// Желудь - Произвольный - Добавляемый экземпляр желудя.
// ОпределениеЖелудя - ОпределениеЖелудя - Определение добавляемого желудя.
//
Процедура Добавить(Желудь, ОпределениеЖелудя) ЭкспортПолучить
// Возвращает прилеплённые желуди в виде неизменяемого множества уникальных элементов.
//
// Возвращаемое значение:
// ФиксированноеМножество из Произвольный - уникальные прилеплённые желуди.
//
Функция Получить() ЭкспортINFO
Документация из библиотеки autumn-collections.
ПрилепляемаяКоллекцияСписок
ПриСозданииОбъекта
// Конструктор прилепляемой коллекции на основе списка.
// Регистрируется в УправляющийПрилепляемымиКоллекциями как коллекция "Список".
//
Процедура ПриСозданииОбъекта()Добавить
// Добавляет очередной желудь в коллекцию.
//
// Параметры:
// Желудь - Произвольный - Добавляемый экземпляр желудя.
// ОпределениеЖелудя - ОпределениеЖелудя - Определение добавляемого желудя.
//
Процедура Добавить(Желудь, ОпределениеЖелудя) ЭкспортПолучить
// Возвращает прилеплённые желуди в виде неизменяемого списка в порядке прилепления.
//
// Возвращаемое значение:
// ФиксированныйСписок из Произвольный - желуди в порядке прилепления.
//
Функция Получить() ЭкспортСоветДругогоМастера
Объект-носитель пользовательских настроек, передаваемый в Поделка при её создании.
С версии 4.4 рекомендуется использовать СтроительМенеджераПараметров, доступный через метод ПолучитьСтроительМенеджераПараметров(). Старые методы (ЗначенияДеталек, ПрефиксПеременныхСреды, ИмяФайлаСоЗначениямиДеталек, ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек) объявлены устаревшими: при их вызове в лог пишется предупреждение, под капотом они модифицируют тот же строитель.
ПолучитьСтроительМенеджераПараметров
// Возвращает строитель с применёнными значениями устаревших полей.
// Используется Поделкой при инициализации МенеджерПараметров.
//
// Возвращаемое значение:
// СтроительМенеджераПараметров - готовый к использованию строитель
//
Функция ПолучитьСтроительМенеджераПараметров() ЭкспортПриСозданииОбъекта
// Советы по созданию поделки, упакованные в объект.
//
Процедура ПриСозданииОбъекта()ЗначенияДеталек устарело
Используйте ПолучитьСтроительМенеджераПараметров().ДобавитьПровайдерСоответствие(...).
Функция ЗначенияДеталек(НовоеЗначение = Неопределено) ЭкспортПрефиксПеременныхСреды устарело
Используйте ПолучитьСтроительМенеджераПараметров().Провайдер("env").Настройки().УстановитьПрефикс(...).
Функция ПрефиксПеременныхСреды(НовоеЗначение = Неопределено) ЭкспортИмяФайлаСоЗначениямиДеталек устарело
Используйте ПолучитьСтроительМенеджераПараметров().ПровайдерФайлов("default").УстановитьИмяФайла(...).
Функция ИмяФайлаСоЗначениямиДеталек(НовоеЗначение = Неопределено) ЭкспортДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек устарело
Используйте ПолучитьСтроительМенеджераПараметров().ПровайдерФайлов("default").ДобавитьСтандартныеКаталогиПоиска(...).
Функция ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек(НовоеЗначение = Неопределено) ЭкспортСтроительМенеджераПараметров
Инкапсулирует создание и настройку МенеджерПараметров (configor) с заранее заданным дефолтным составом провайдеров.
Создаётся лениво при первом обращении к СоветДругогоМастера.ПолучитьСтроительМенеджераПараметров() и кэшируется в СоветДругогоМастера: повторные вызовы возвращают тот же экземпляр, поэтому правки строителя, сделанные клиентским кодом, доходят до Поделки. Все настройки выполняются до передачи СоветДругогоМастера в Поделка.
Дефолтный состав провайдеров
| Идентификатор | Тип | Приоритет |
|---|---|---|
env | ПровайдерПараметровENV | 1 |
default | Файловый метапровайдер (yaml + json + ini)имя файла autumn-properties, поиск с подкаталогом src | 2 |
inline | ПровайдерПараметровСоответствие | 3 |
Файловый метапровайдер регистрирует три физических провайдера в менеджере под идентификаторами <база>-yaml, <база>-json, <база>-ini с одинаковым приоритетом. Настройки, заданные через метапровайдер (имя файла, каталоги поиска и т.п.), транслируются во все три физических провайдера.
Канонический нейминг
Методы добавления провайдеров следуют единой схеме ДобавитьПровайдер<Тип>:
| Метод | Назначение |
|---|---|
ДобавитьПровайдер | универсальный — для произвольного класса-провайдера |
ДобавитьПровайдерСоответствие | inline-значения через Соответствие |
ДобавитьПровайдерENV | переменные среды |
ДобавитьПровайдерФайлов | мета-обёртка над несколькими форматами (yaml/json/ini) |
ДобавитьПровайдерФайлНастроек | один файл с автоопределением формата по расширению |
Пример
Совет = Новый СоветДругогоМастера();
Строитель = Совет.ПолучитьСтроительМенеджераПараметров();
// Заменить дефолтный inline-провайдер своим набором значений
Значения = Новый Соответствие();
Значения.Вставить("моя.настройка", "значение");
Строитель.УдалитьПровайдер("inline");
Строитель.ДобавитьПровайдерСоответствие(Значения, 3, "inline");
// Добавить ещё один файловый метапровайдер
ДопФайлы = Строитель.ДобавитьПровайдерФайлов("dev", 1);
ДопФайлы.УстановитьИмяФайла("autumn-properties.dev");
// Подключить конкретный файл (формат — по расширению)
Строитель.ДобавитьПровайдерФайлНастроек("./config/local.yaml", 0, "local");
// Полностью пересобрать состав с нуля
Строитель.ОчиститьПровайдеры();
Строитель.ДобавитьПровайдерENV("MYAPP_", 1, "env");
Строитель.ДобавитьПровайдерСоответствие(Значения, 2, "inline");
Поделка = Новый Поделка(Совет);МенеджерПараметров
// Возвращает внутренний МенеджерПараметров configor.
//
// Возвращаемое значение:
// МенеджерПараметров
//
Функция МенеджерПараметров() ЭкспортДобавитьПровайдер
// Регистрирует произвольный класс-провайдер в менеджере.
//
// Параметры:
// КлассПровайдера - Объект - класс, реализующий интерфейс провайдера configor
// Приоритет - Число - приоритет
// Идентификатор - Строка - явный идентификатор; при коллизии configor добавит #2, #3, ...
//
// Возвращаемое значение:
// Объект - переданный КлассПровайдера
//
Функция ДобавитьПровайдер(Знач КлассПровайдера, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) ЭкспортДобавитьПровайдерСоответствие
// Регистрирует ПровайдерПараметровСоответствие с заданными значениями.
//
// Параметры:
// Значения - Соответствие - значения параметров (по умолчанию пустое)
// Приоритет - Число
// Идентификатор - Строка
//
// Возвращаемое значение:
// ПровайдерПараметровСоответствие
//
Функция ДобавитьПровайдерСоответствие(Знач Значения = Неопределено, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) ЭкспортДобавитьПровайдерENV
// Регистрирует ПровайдерПараметровENV.
//
// Параметры:
// Префикс - Строка - префикс переменных среды
// Приоритет - Число
// Идентификатор - Строка
//
// Возвращаемое значение:
// ПровайдерПараметровENV
//
Функция ДобавитьПровайдерENV(Знач Префикс = "", Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) ЭкспортДобавитьПровайдерФайлов
// Регистрирует файловый метапровайдер — обёртку над несколькими физическими
// файловыми провайдерами (yaml/json/ini) с одинаковым приоритетом.
//
// Параметры:
// Идентификатор - Строка - базовый идентификатор метапровайдера
// Приоритет - Число
// Форматы - Строка - список форматов через пробел (по умолчанию "yaml json ini")
//
// Возвращаемое значение:
// ФайловыйМетапровайдер
//
Функция ДобавитьПровайдерФайлов(Знач Идентификатор, Знач Приоритет, Знач Форматы = "yaml json ini") ЭкспортДобавитьПровайдерФайлНастроек
// Регистрирует один файловый провайдер по конкретному пути к файлу.
// Формат определяется по расширению (.yaml/.yml — yaml, .json — json, .ini — ini).
//
// Параметры:
// ПутьКФайлу - Строка - полный или относительный путь к файлу настроек
// Приоритет - Число
// Идентификатор - Строка
//
// Возвращаемое значение:
// Объект - класс-провайдер (ПровайдерПараметровYAML/JSON/INI)
//
Функция ДобавитьПровайдерФайлНастроек(Знач ПутьКФайлу, Знач Приоритет = Неопределено, Знач Идентификатор = Неопределено) ЭкспортУдалитьПровайдер
// Удаляет (отключает) провайдер по идентификатору.
//
// Если идентификатор соответствует файловому метапровайдеру —
// отключает все его физические провайдеры и удаляет метапровайдер из реестра.
//
// Параметры:
// Идентификатор - Строка
//
Процедура УдалитьПровайдер(Знач Идентификатор) ЭкспортОчиститьПровайдеры
// Полностью очищает состав провайдеров: пересоздаёт МенеджерПараметров
// и сбрасывает реестр файловых метапровайдеров.
//
// Полезно когда нужно собрать собственную композицию с нуля,
// не наследуя дефолтный состав (env / default / inline).
//
Процедура ОчиститьПровайдеры() ЭкспортПровайдер
// Возвращает обёртку ПровайдерПараметров (configor) по идентификатору.
//
// Параметры:
// Идентификатор - Строка
//
// Возвращаемое значение:
// ПровайдерПараметров (обёртка configor) или Неопределено
//
Функция Провайдер(Знач Идентификатор) ЭкспортПровайдерФайлов
// Возвращает зарегистрированный файловый метапровайдер.
//
// Параметры:
// Идентификатор - Строка
//
// Возвращаемое значение:
// ФайловыйМетапровайдер
//
Функция ПровайдерФайлов(Знач Идентификатор) ЭкспортНастройкаПоискаФайла
// Возвращает глобальный объект настроек поиска файлов МенеджерПараметров
// (общий fallback для всех файловых провайдеров).
//
// Возвращаемое значение:
// НастройкиФайловогоПровайдера
//
Функция НастройкаПоискаФайла() ЭкспортФайловый метапровайдер
Возвращается методами ДобавитьПровайдерФайлов / ПровайдерФайлов. Проксирует настройки сразу в физические провайдеры (<база>-yaml, <база>-json, <база>-ini).
Доступные методы:
Идентификатор()— базовый идентификаторИдентификаторыФизическихПровайдеров()— фиксированный массив идентификаторовФорматы()— фиксированный массив форматовНастройки(Формат)—НастройкиФайловогоПровайдераконкретного физического провайдераУстановитьПриоритет(Приоритет)УстановитьИмяФайла(Имя)УстановитьФайлПараметров(Путь)ДобавитьСтандартныеКаталогиПоиска(ВложенныйКаталог = "")ДобавитьКаталогПоиска(Каталог)ОчиститьПутиПоиска()УстановитьВложенныйКаталогПоиска(ВложенныйКаталог)Отключить()/Включить()
Табакерка
ПриСозданииОбъекта
// Конструктор объекта.
//
// Параметры:
// ПрилепляторЧастиц - ПрилепляторЧастиц - Прилеплятор частиц, который будет использоваться для поиска.
// БазоваяПрилепляемаяЧастица - ПрилепляемаяЧастица - Прилепляемая частица, в которой описано то, что должно
// доставаться из Табакерки.
//
Процедура ПриСозданииОбъекта(ПрилепляторЧастиц, БазоваяПрилепляемаяЧастица)Достать
// Достать частицу из табакерки
//
// Параметры:
// ПрилепляемыеЧастицы - Массив - массив прилепляемых частиц, которые передадутся как зависимости доставаемой частицы.
//
// Возвращаемое значение:
// Произвольный - Желудь, блестяшка или деталька, хранимая в табакерке.
//
Функция Достать(ПрилепляемыеЧастицы = Неопределено) ЭкспортОпределениеЖелудя
ПриСозданииОбъекта
// Описывает желудь (компонент) и способ его создания.
//
// Параметры:
// РазворачивательАннотаций - РазворачивательАннотаций - Разворачиватель аннотаций для свойств и методов типа.
// ТипЖелудя - Тип - Тип, экземпляры которого создаёт желудь.
// Имя - Строка - Имя желудя. Не может быть пустым.
// Характер - Строка - Характер желудя, одно из значений модуля ХарактерыЖелудей.
// ПрилепляемыеЧастицы - Массив из ПрилепляемаяЧастица - Зависимости, передаваемые желудю при создании.
// Завязь - Завязь - Способ создания желудя (метод-фабрика или конструктор).
// Прозвища - Массив из Строка - Дополнительные имена желудя. Должен содержать хотя бы одно значение.
// Порядок - Число - Порядок инициализации желудя.
// Верховный - Булево - Признак верховного (приоритетного) желудя.
// Спецификация - Строка - Фаза жизненного цикла, одно из значений модуля СостоянияПриложения.
// КорневаяАннотация - Неопределено, Произвольный - Объект корневой аннотации желудя либо Неопределено.
//
Процедура ПриСозданииОбъекта(РазворачивательАннотаций, ТипЖелудя, Имя, Характер, ПрилепляемыеЧастицы, Завязь, Прозвища, Порядок, Верховный, Спецификация, КорневаяАннотация)Имя
// Имя желудя.
//
// Возвращаемое значение:
// Строка
//
Функция Имя() ЭкспортТипЖелудя
// Тип, экземпляры которого создаёт желудь.
//
// Возвращаемое значение:
// Тип
//
Функция ТипЖелудя() ЭкспортХарактер
// Характер желудя, определяющий способ его создания и хранения (одиночка или компанейский).
//
// Возвращаемое значение:
// Строка - один из значений модуля ХарактерыЖелудей.
//
Функция Характер() ЭкспортПрилепляемыеЧастицы
// Список прилепляемых частиц (зависимостей), которые нужно передать желудю при создании.
//
// Возвращаемое значение:
// ФиксированныйМассив из ПрилепляемаяЧастица
//
Функция ПрилепляемыеЧастицы() ЭкспортЗавязь
// Завязь, описывающая способ создания желудя (метод-фабрика или конструктор).
//
// Возвращаемое значение:
// Завязь
//
Функция Завязь() ЭкспортПрозвища
// Прозвища (дополнительные имена), по которым может быть найден желудь.
//
// Возвращаемое значение:
// Массив из Строка
//
Функция Прозвища() ЭкспортПорядок
// Порядок инициализации желудя. Чем меньше число, тем раньше создаётся желудь.
//
// Возвращаемое значение:
// Число
//
Функция Порядок() ЭкспортВерховный
// Признак того, что желудь является верховным (приоритетным) среди желудей с тем же именем.
//
// Возвращаемое значение:
// Булево
//
Функция Верховный() ЭкспортСпецификация
// Спецификация (фаза жизненного цикла приложения), на которой доступен желудь.
//
// Возвращаемое значение:
// Строка - один из значений модуля СостоянияПриложения.
//
Функция Спецификация() ЭкспортКорневаяАннотация
// Объект корневой аннотации типа, на основе которой построено определение желудя
// (например, объект аннотации Дуб, Желудь или Напильник).
//
// Возвращаемое значение:
// Неопределено, Произвольный - объект корневой аннотации желудя
// либо Неопределено, если корневая аннотация отсутствует.
//
Функция КорневаяАннотация() ЭкспортСвойства
// Таблица свойств типа желудя с развёрнутыми аннотациями.
//
// Возвращаемое значение:
// ТаблицаЗначений - таблица свойств типа:
// * Имя - Строка - имя свойства
// * Аннотации - ТаблицаЗначений - аннотации свойства:
// ** Имя - Строка - имя аннотации
// ** Параметры - ТаблицаЗначений - параметры аннотации:
// *** Имя - Строка - имя параметра аннотации
// *** Значение - Строка - значение параметра аннотации
//
Функция Свойства() ЭкспортМетоды
// Таблица методов типа желудя с развёрнутыми аннотациями.
//
// Возвращаемое значение:
// ТаблицаЗначений - таблица методов типа:
// * Имя - Строка - имя метода
// * КоличествоПараметров - Число - число параметров метода
// * ЭтоФункция - Булево - признак, что метод является функцией
// * Экспорт - Булево - признак, что метод экспортный
// * Аннотации - ТаблицаЗначений - аннотации метода:
// ** Имя - Строка - имя аннотации
// ** Параметры - ТаблицаЗначений - параметры аннотации:
// *** Имя - Строка - имя параметра аннотации
// *** Значение - Строка - значение параметра аннотации
// * Параметры - ТаблицаЗначений - параметры метода:
// ** Имя - Строка - имя параметра
// ** ПоЗначению - Булево - признак передачи по значению
// ** ЕстьЗначениеПоУмолчанию - Булево - признак наличия значения по умолчанию
// ** Аннотации - ТаблицаЗначений - аннотации параметра:
// *** Имя - Строка - имя аннотации
// *** Параметры - ТаблицаЗначений - параметры аннотации:
// **** Имя - Строка - имя параметра аннотации
// **** Значение - Строка - значение параметра аннотации
//
Функция Методы() ЭкспортРефлекторОбъекта
// Рефлектор объекта типа желудя, используемый для получения метаданных типа.
//
// Возвращаемое значение:
// РефлекторОбъекта
//
Функция РефлекторОбъекта() ЭкспортНайтиМетодыСАннотациями
// Находит методы типа желудя, помеченные указанной аннотацией. Результат кешируется.
//
// Параметры:
// АннотацияФильтр - Строка - Имя аннотации, по которой выполняется отбор методов.
//
// Возвращаемое значение:
// Массив из СтрокаТаблицыЗначений - найденные методы с указанной аннотацией.
// Колонки строки соответствуют таблице, возвращаемой методом Методы().
//
Функция НайтиМетодыСАннотациями(АннотацияФильтр) ЭкспортINFO
Документация из библиотеки annotations.
ОпределениеАннотации
ПриСозданииОбъекта
Процедура ПриСозданииОбъекта(Знач _Имя, Знач _ИмяТипаАннотации, Знач _Параметры, Знач _Аннотации)Имя
// Имя аннотации.
//
// Возвращаемое значение:
// Строка
//
Функция Имя() ЭкспортИмяТипаАннотации
// Имя типа, к которому применяется аннотация.
//
// Возвращаемое значение:
// Строка
//
Функция ИмяТипаАннотации() ЭкспортПараметры
// Параметры аннотации - разобранные параметры конструктора класса аннотации.
// Метод возвращает копию таблицы.
//
// Возвращаемое значение:
// ТаблицаЗначений - таблица параметров аннотации:
// * Имя - Строка - Имя параметра.
// * ПоЗначению - Булево - Признак получения пораметра по значению.
// * ЕстьЗначениеПоУмолчанию - Булево - Признак наличия значения по умолчанию.
// * ЗначениеПоУмолчанию - Произвольный - Значение по умолчанию.
// * Аннотации - ТаблицаЗначений - Таблица аннотаций со следующими колонками:
// ** Имя - Строка - Имя аннотации.
// ** Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// *** Имя - Строка - Имя параметра аннотации.
// *** Значение - Строка - Значение параметра аннотации.
// * Экспорт - Булево - Признак экспорта параметра.
//
Функция Параметры() ЭкспортАннотации
// Подчиненные аннотации - список аннотаций над конструктором класса-аннотации.
// Метот возвращает глубокую копию таблицы.
//
// Возвращаемое значение:
// ТаблицаЗначений - Таблица аннотаций:
// * Имя - Строка - Имя аннотации.
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// ** Имя - Строка - Имя параметра аннотации.
// ** Значение - Строка - Значение параметра аннотации.
//
Функция Аннотации() ЭкспортПроверить
// Выполнить проверку корректности аннотации.
//
// Выбрасывает исключение:
// * Когда аннотация не содержит параметр, у которого нет значения по умолчанию.
// * Когда аннотация содержит параметр, которого нет в списке параметров аннотации.
// * Когда аннотация содержит несколько параметров без имени или с именем "Значение".
//
// Параметры:
// Аннотация - СтрокаТаблицыЗначений - Данные аннотации:
// * Имя - Строка - Имя аннотации.
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// ** Имя - Строка - Имя параметра аннотации.
// ** Значение - Строка - Значение параметра аннотации.
// ПредставлениеВладельцаАннотации - Строка - Строковое представление типа или объекта
// к которому применяется аннотация.
//
Процедура Проверить(Аннотация, ПредставлениеВладельцаАннотации) ЭкспортСоздатьОбъектАннотации
// Создать объект класса аннотации по параметрам аннотации.
//
// Параметры:
// Аннотация - СтрокаТаблицыЗначений - Данные аннотации:
// * Имя - Строка - Имя аннотации.
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// ** Имя - Строка - Имя параметра аннотации.
// ** Значение - Строка - Значение параметра аннотации.
//
// Возвращаемое значение:
// Произвольный - Объект аннотации с заданными параметрами.
//
Функция СоздатьОбъектАннотации(Аннотация) ЭкспортЗавязь
ПриСозданииОбъекта
// Дата-класс для хранения данных о способе создания жёлудя.
//
// Параметры:
// Родитель - Сценарий - Класс, содержащий указанный метод завязи.
// ИмяМетода - Строка - Имя метода, которым можно создать жёлудь.
// ДанныеМетода - Структура - Данные метода, как из возвращает рефлектор.
// Действие - Действие - Делегат, который можно вызвать, чтобы создать жёлудь.
// ЭтоКонструктор - Булево - Флаг, что делегат ведет на конструктор класса, а не на &Завязь-метод.
//
Процедура ПриСозданииОбъекта(Родитель, ИмяМетода, ДанныеМетода, Действие, ЭтоКонструктор)Родитель
// Класс, содержащий указанный метод завязи.
//
// Возвращаемое значение:
// Сценарий
//
Функция Родитель() ЭкспортИмяМетода
// Имя метода, которым можно создать жёлудь.
//
// Возвращаемое значение:
// Строка
//
Функция ИмяМетода() ЭкспортДанныеМетода
// Данные метода, как из возвращает рефлектор.
//
// Возвращаемое значение:
// Структура
//
Функция ДанныеМетода() ЭкспортДействие
// Делегат, который можно вызвать, чтобы создать жёлудь.
//
// Возвращаемое значение:
// Действие
//
Функция Действие() ЭкспортЭтоКонструктор
// Флаг, что делегат ведет на конструктор класса, а не на &Завязь-метод.
//
// Возвращаемое значение:
// Булево
//
Функция ЭтоКонструктор() ЭкспортПрилепляемаяЧастица
ПриСозданииОбъекта
// Описывает зависимость (частицу), которую нужно прилепить к желудю.
//
// Параметры:
// ТипЧастицы - Строка - Тип частицы, один из значений модуля ТипыПрилепляемыхЧастиц.
// ИмяЧастицы - Строка - Имя прилепляемой частицы.
// Аннотация - СтрокаТаблицыЗначений - Аннотация поля или параметра, описывающая частицу:
// * Имя - Строка - имя аннотации
// * Параметры - ТаблицаЗначений - параметры аннотации:
// ** Имя - Строка - имя параметра аннотации
// ** Значение - Строка - значение параметра аннотации
// БазоваяПрилепляемаяЧастица - ПрилепляемаяЧастица - Базовая частица для коллекций и табакерок. По умолчанию Неопределено.
//
Процедура ПриСозданииОбъекта(ТипЧастицы, ИмяЧастицы, Аннотация, БазоваяПрилепляемаяЧастица = Неопределено)ТипЧастицы
// Тип прилепляемой частицы (желудь, деталька, блестяшка или табакерка).
//
// Возвращаемое значение:
// Строка - один из типов модуля ТипыПрилепляемыхЧастиц.
//
Функция ТипЧастицы() ЭкспортИмяЧастицы
// Имя прилепляемой частицы.
//
// Возвращаемое значение:
// Строка
//
Функция ИмяЧастицы() ЭкспортАннотация
// Аннотация поля или параметра, описывающая прилепляемую частицу.
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - строка таблицы аннотаций:
// * Имя - Строка - имя аннотации
// * Параметры - ТаблицаЗначений - параметры аннотации:
// ** Имя - Строка - имя параметра аннотации
// ** Значение - Строка - значение параметра аннотации
//
Функция Аннотация() ЭкспортБазоваяПрилепляемаяЧастица
// Базовая прилепляемая частица, на основе которой построена текущая.
// Используется при прилеплении коллекций и табакерок.
//
// Возвращаемое значение:
// ПрилепляемаяЧастица, Неопределено - базовая частица либо Неопределено, если её нет.
//
Функция БазоваяПрилепляемаяЧастица() ЭкспортINFO
Документация из библиотеки annotations.
РаботаСАннотациями
ПолучитьАннотации
// Получить все аннотации свойства с указанным именем аннотации.
//
// Параметры:
// Свойство - СтрокаТабличнойЧасти, Структура - Описание свойства/метода:
// * Аннотации - ТаблицаЗначений - Таблица аннотаций свойства/метода:
// * Имя - Строка - Имя аннотации.
// ИмяАннотации - Строка - Имя аннотации.
//
// Возвращаемое значение:
// Массив из СтрокаТабличнойЧасти - Массив найденных аннотаций.
//
Функция ПолучитьАннотации(Свойство, ИмяАннотации)ПолучитьАннотацию
// Получить первую аннотацию свойства с указанным именем аннотации.
//
// Параметры:
// Свойство - СтрокаТабличнойЧасти, Структура - Описание свойства/метода:
// * Аннотации - ТаблицаЗначений - Таблица аннотаций свойства/метода:
// * Имя - Строка - Имя аннотации.
// ИмяАннотации - Строка - Имя аннотации.
//
// Возвращаемое значение:
// СтрокаТабличнойЧасти - Найденная аннотация.
//
Функция ПолучитьАннотацию(Свойство, ИмяАннотации)НайтиАннотации
// Получить все аннотации с указанным именем аннотации.
//
// Параметры:
// Аннотации - ТаблицаЗначений - Таблица аннотаций:
// * Имя - Строка - Имя аннотации.
// ИмяАннотации - Строка - Имя аннотации.
//
// Возвращаемое значение:
// Массив из СтрокаТабличнойЧасти - Массив найденных аннотаций.
//
Функция НайтиАннотации(Аннотации, ИмяАннотации)НайтиАннотацию
// Получить первую аннотацию с указанным именем аннотации.
//
// Параметры:
// Аннотации - ТаблицаЗначений - Таблица аннотаций:
// * Имя - Строка - Имя аннотации.
// ИмяАннотации - Строка - Имя аннотации.
//
// Возвращаемое значение:
// СтрокаТабличнойЧасти - Найденная аннотация.
//
Функция НайтиАннотацию(Аннотации, ИмяАннотации)НайтиМетодыСАннотацией
// Получить все методы с указанной аннотацией.
//
// Параметры:
// Методы - ТаблицаЗначений, Массив - Список методов:
// * Аннотации - ТаблицаЗначений - Таблица аннотаций метода:
// * Имя - Строка - Имя аннотации.
// ИмяАннотации - Строка - Имя аннотации.
//
// Возвращаемое значение:
// Массив из СтрокаТабличнойЧасти - Массив найденных методов.
//
Функция НайтиМетодыСАннотацией(Методы, ИмяАннотации)ПолучитьПараметрыАннотации
// Получить параметры аннотации с указанным именем параметра.
//
// Параметры:
// Аннотация - СтрокаТабличнойЧасти,Структура - Аннотация:
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// * Имя - Строка - Имя параметра.
// ИмяПараметра - Строка - Имя параметра.
//
// Возвращаемое значение:
// Массив из СтрокаТабличнойЧасти - Массив найденных параметров.
//
Функция ПолучитьПараметрыАннотации(Аннотация, ИмяПараметра)ПолучитьПараметрАннотации
// Получить параметр аннотации с указанным именем параметра.
//
// Параметры:
// Аннотация - СтрокаТабличнойЧасти,Структура - Аннотация:
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// * Имя - Строка - Имя параметра.
// ИмяПараметра - Строка - Имя параметра.
//
// Возвращаемое значение:
// СтрокаТабличнойЧасти - Найденный параметр.
//
Функция ПолучитьПараметрАннотации(Аннотация, ИмяПараметра)ПолучитьЗначенияПараметровАннотации
// Получить значения параметров аннотации с указанным именем параметра.
//
// Параметры:
// Аннотация - СтрокаТабличнойЧасти,Структура - Аннотация:
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// * Имя - Строка - Имя параметра.
// * Значение - Произвольный - Значение параметра.
// ИмяПараметра - Строка - Имя параметра.
//
// Возвращаемое значение:
// Массив из Произвольный - Массив найденных значений параметров.
//
Функция ПолучитьЗначенияПараметровАннотации(Аннотация, ИмяПараметра)ПолучитьЗначениеПараметраАннотации
// Получить значение параметра аннотации с указанным именем параметра.
//
// Параметры:
// Аннотация - СтрокаТабличнойЧасти,Структура - Аннотация:
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// * Имя - Строка - Имя параметра.
// * Значение - Произвольный - Значение параметра.
// ИмяПараметра - Строка - Имя параметра.
// ЗначениеПоУмолчанию - Произвольный - Значение параметра по умолчанию.
// НеопределеноЭтоКорректноеЗначениеПараметра - Булево - Признак того,
// что Неопределено является корректным значением параметра.
//
// Возвращаемое значение:
// Произвольный - Значение параметра.
//
Функция ПолучитьЗначениеПараметраАннотации(Аннотация, ИмяПараметра = "Значение", ЗначениеПоУмолчанию = Неопределено, НеопределеноЭтоКорректноеЗначениеПараметра = Ложь)УстановитьЗначениеПараметраАннотации
// Установить значение параметра аннотации с указанным именем параметра.
//
// Параметры:
// Аннотация - СтрокаТабличнойЧасти,Структура - Аннотация:
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// * Имя - Строка - Имя параметра.
// * Значение - Произвольный - Значение параметра.
// ИмяПараметра - Строка - Имя параметра.
// ЗначениеПараметра - Произвольный - Значение параметра.
//
Процедура УстановитьЗначениеПараметраАннотации(Аннотация, ИмяПараметра, ЗначениеПараметра)ДобавитьЗначениеПараметраАннотации
// Добавить ещё одно значение параметра аннотации с указанным именем параметра.
// В отличие от УстановитьЗначениеПараметраАннотации не перезаписывает существующее
// значение, а добавляет новую строку параметра. Используется для повторяемых параметров.
//
// Параметры:
// Аннотация - СтрокаТабличнойЧасти,Структура - Аннотация:
// * Параметры - ТаблицаЗначений - Таблица параметров аннотации:
// * Имя - Строка - Имя параметра.
// * Значение - Произвольный - Значение параметра.
// ИмяПараметра - Строка - Имя параметра.
// ЗначениеПараметра - Произвольный - Значение параметра.
//
Процедура ДобавитьЗначениеПараметраАннотации(Аннотация, ИмяПараметра, ЗначениеПараметра)ОбработкаНапильникомПластилинаНаПолях
ПриСозданииОбъекта
Процедура ПриСозданииОбъекта(&Пластилин ПрилепляторЧастиц)ОбработатьЖелудь
Функция ОбработатьЖелудь(Желудь, ОпределениеЖелудя) ЭкспортОбработкаНапильникомФинальныйШтрих
ПриСозданииОбъекта
Процедура ПриСозданииОбъекта()ОбработатьЖелудь
Функция ОбработатьЖелудь(Желудь, ОпределениеЖелудя) ЭкспортТипыПрилепляемыхЧастиц
Деталька
// Тип прилепляемой частицы — деталька (значение параметра приложения).
//
// Возвращаемое значение:
// Строка
//
Функция Деталька() ЭкспортЖелудь
// Тип прилепляемой частицы — желудь (компонент).
//
// Возвращаемое значение:
// Строка
//
Функция Желудь() ЭкспортБлестяшка
// Тип прилепляемой частицы — блестяшка (произвольное значение, передаваемое извне
// в момент запроса желудя в качестве параметра).
//
// Возвращаемое значение:
// Строка
//
Функция Блестяшка() ЭкспортТабакерка
// Тип прилепляемой частицы — табакерка (отложенное получение частицы).
//
// Возвращаемое значение:
// Строка
//
Функция Табакерка() ЭкспортХарактерыЖелудей
Компанейский
// Компанейский характер: новый экземпляр желудя создаётся при каждом обращении.
//
// Возвращаемое значение:
// Строка
//
Функция Компанейский() ЭкспортОдиночка
// Характер одиночки: желудь создаётся один раз и переиспользуется при последующих обращениях.
//
// Возвращаемое значение:
// Строка
//
Функция Одиночка() ЭкспортЭтоХарактерЖелудя
// Проверяет, является ли переданная строка известным характером желудя.
//
// Параметры:
// Характер - Строка - Проверяемое значение характера.
//
// Возвращаемое значение:
// Булево - Истина, если значение является известным характером желудя.
//
Функция ЭтоХарактерЖелудя(Характер) ЭкспортСостоянияПриложения
Инициализация
// Состояние инициализации приложения: идёт настройка контекста и регистрация желудей.
//
// Возвращаемое значение:
// Строка
//
Функция Инициализация() ЭкспортВыполнение
// Состояние выполнения приложения: контекст настроен, желуди создаются и используются.
//
// Возвращаемое значение:
// Строка
//
Функция Выполнение() ЭкспортЗначения
// Возвращает список всех возможных состояний приложения.
//
// Возвращаемое значение:
// ФиксированныйМассив из Строка
//
Функция Значения() Экспорт