### Configure application with modern builder API Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/СоветДругогоМастера.md Comprehensive example demonstrating environment variables, file providers, and inline configuration setup. ```1script // Create advice with modern builder API Совет = Новый СоветДругогоМастера(); Строитель = Совет.ПолучитьСтроительМенеджераПараметров(); // Clear all defaults if desired Строитель.ОчиститьПровайдеры(); // Add environment variables (with prefix) EnvProvider = Строитель.Провайдер("env"); EnvProvider.Настройки().УстановитьПрефикс("MYAPP_"); // Add file-based configuration FileProvider = Строитель.ПровайдерФайлов("default"); FileProvider.УстановитьИмяФайла("application"); FileProvider.ДобавитьСтандартныеКаталогиПоиска("config"); FileProvider.ДобавитьСтандартныеКаталогиПоиска("src"); // Add inline configuration InlineConfig = Новый Соответствие(); InlineConfig.Вставить("база.хост", "localhost"); InlineConfig.Вставить("база.порт", "5432"); Строитель.ДобавитьПровайдерСоответствие(InlineConfig, 100, "defaults"); // Create application with custom configuration Поделка = Новый Поделка(Совет); ``` -------------------------------- ### Implementation examples for @Напильник Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/annotations-reference.md Complete examples of logging and validation plugins using the @Напильник annotation. ```1script // Logging plugin (applies to all beans) &Напильник("Логирование") Процедура ПриСозданииОбъекта(&Деталька("логирование.включено", ЗначениеПоУмолчанию = Истина) Включено) ЭтотВключен = Включено; КонецПроцедуры Функция ОбработатьЖелудь(Желудь, ОпределениеЖелудя) Экспорт Если ЭтотВключен Тогда Логгер.Информация("Создан бин: %1", ОпределениеЖелудя.Имя()); КонецЕсли; Возврат Желудь; КонецФункции // Validation plugin (applies only to services) &Напильник( "Валидация", ПрименяетсяТолькоНа = "БазаДанных", ПрименяетсяТолькоНа = "КэшСервис", ПрименяетсяТолькоНа = "ЛогирующийСервис" ) Процедура ПриСозданииОбъекта() КонецПроцедуры Функция ОбработатьЖелудь(Желудь, ОпределениеЖелудя) Экспорт Валидатор.Проверить(Желудь); Возврат Желудь; КонецФункции ``` -------------------------------- ### Start application procedure Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Поделка.md Defines the procedure signature for transitioning the application to the execution state. ```1script Процедура ЗапуститьПриложение() Экспорт ``` -------------------------------- ### Complete Module Usage Example Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/modules-reference.md Demonstrates the initialization of application states, validation of bean characters, and retrieval of dependency types. ```1script #Использовать autumn Процедура ПроверитьМодули() // Check application states Инициализация = СостоянияПриложения.Инициализация(); Выполнение = СостоянияПриложения.Выполнение(); ВсеСостояния = СостоянияПриложения.Значения(); Лог.Информация("Состояния: %1", ВсеСостояния); // Состояния: ["Инициализация", "Выполнение"] // Check bean characters Компанейский = ХарактерыЖелудей.Компанейский(); Одиночка = ХарактерыЖелудей.Одиночка(); Если ХарактерыЖелудей.ЭтоХарактерЖелудя(Компанейский) Тогда Лог.Информация("Валидный характер: %1", Компанейский); КонецЕсли; // Check dependency types Деталька = ТипыПрилепляемыхЧастиц.Деталька(); Желудь = ТипыПрилепляемыхЧастиц.Желудь(); Блестяшка = ТипыПрилепляемыхЧастиц.Блестяшка(); Табакерка = ТипыПрилепляемыхЧастиц.Табакерка(); Лог.Информация("Типы частиц:"); Лог.Информация(" - Деталька: %1", Деталька); Лог.Информация(" - Желудь: %1", Желудь); Лог.Информация(" - Блестяшка: %1", Блестяшка); Лог.Информация(" - Табакерка: %1", Табакерка); КонцеПроцедуры ``` -------------------------------- ### Initialize and Run Autumn Application Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/INDEX.md Demonstrates the standard lifecycle for starting an application and retrieving beans from the context. ```1script #Использовать autumn // 1. Create context Поделка = Новый Поделка(); // 2. Beans are auto-registered by scanning for annotations // Just decorate your classes: // &Желудь // &Деталька("config.key") // etc. // 3. Start application Поделка.ЗапуститьПриложение(); // 4. Get beans at runtime МойБин = Поделка.НайтиЖелудь("МойБин"); Параметр = Поделка.НайтиДетальку("конфиг.ключ", "значение-по-умолчанию"); // 5. Inspect definitions ВсеОпределения = Поделка.ПолучитьОпределенияЖелудей(); ``` -------------------------------- ### Retrieve beans using НайтиЖелудь Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Поделка.md Examples of fetching singleton beans, the context itself, and beans with custom dependencies. ```1script // Get a singleton bean МойСервис = Поделка.НайтиЖелудь("МойСервис"); // Get the context itself Контекст = Поделка.НайтиЖелудь("Поделка"); // Get a bean with custom dependencies Зависимость = Новый ПрилепляемаяЧастица(ТипыПрилепляемыхЧастиц.Блестяшка(), "кастомЗначение", АннотацияПути, Неопределено); Массив = Новый Массив(); Массив.Добавить(Зависимость); БинОСЗависимостью = Поделка.НайтиЖелудь("МойСервис", Массив); ``` -------------------------------- ### Accessing Specific Modules Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/modules-reference.md Example of importing the library and invoking specific procedures from the СостоянияПриложения module. ```1script #Использовать autumn Процедура ПроверитьСостояния() Инициализация = СостоянияПриложения.Инициализация(); Выполнение = СостоянияПриложения.Выполнение(); КонцеПроцедуры ``` -------------------------------- ### Define JSON Configuration File Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Example structure for a JSON configuration file used by the library. ```json { "database": { "host": "localhost", "port": 5432, "name": "myapp_db" }, "server": { "timeout": 30, "maxConnections": 100 } } ``` -------------------------------- ### Configure environment variables with prefix Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Namespaced environment variable setup using a prefix. ```bash export MYAPP_LOG_LEVEL=DEBUG export MYAPP_MAX_CONNECTIONS=50 export MYAPP_ENABLE_CACHE=true export OTHER_VAR=ignored ``` ```1script Совет = Новый СоветДругогоМастера(); Строитель = Совет.ПолучитьСтроительМенеджераПараметров(); Строитель.Провайдер("env").Настройки().УстановитьПрефикс("MYAPP_"); Поделка = Новый Поделка(Совет); ЛогЛевел = Поделка.НайтиДетальку("LOG_LEVEL"); // "DEBUG" МаксПодключений = Поделка.НайтиДетальку("MAX_CONNECTIONS"); // "50" ``` -------------------------------- ### Expensive Initialization Deferral Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Табакерка.md Example of delaying the creation of a resource-heavy bean. ```1script &Желудь Процедура ПриСозданииОбъекта(&Табакерка(Значение = "БольшаяБаза") ЛенивыйДатаСет) ЭтаБаза = ЛенивыйДатаСет; КонецПроцедуры Функция ПолучитьДанные(Фильтр) Экспорт // БольшаяБаза инициализируется только если нужны данные БазаДанных = ЭтаБаза.Достать(); Возврат БазаДанных.ПолучитьДанные(Фильтр); КонецФункции ``` -------------------------------- ### Initialize Application Context Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/getting-started.md Initialize the Autumn context and start the application execution phase. ```1script #Использовать autumn // Create and configure the context Поделка = Новый Поделка(); // Transition from initialization to execution phase Поделка.ЗапуститьПриложение(); ``` -------------------------------- ### Configure environment variables without prefix Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Standard environment variable setup and retrieval. ```bash export LOG_LEVEL=DEBUG export MAX_CONNECTIONS=50 export ENABLE_CACHE=true ``` ```1script Совет = Новый СоветДругогоМастера(); Поделка = Новый Поделка(Совет); ЛогЛевел = Поделка.НайтиДетальку("LOG_LEVEL"); // "DEBUG" МаксПодключений = Поделка.НайтиДетальку("MAX_CONNECTIONS"); // "50" ``` -------------------------------- ### Iterate bean properties Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ОпределениеЖелудя.md Example of retrieving and iterating through bean properties and their annotations. ```1script ТаблицаСвойств = Определение.Свойства(); Для Каждого СтрокаСвойства Из ТаблицаСвойств Цикл ИмяСвойства = СтрокаСвойства.Имя; ТаблицаАннотаций = СтрокаСвойства.Аннотации; Лог.Информация("Свойство: %1", ИмяСвойства); КонецЦикла; ``` -------------------------------- ### Implement a Factory Class with @Дуб and @Завязь Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/annotations-reference.md Example of a factory class that uses @Деталька for configuration and provides bean instances via @Завязь methods. ```1script &Дуб("ПроизводствоСервисов") Процедура ПриСозданииОбъекта( &Деталька("сервис.режим") РежимРаботы ) ЭтотРежим = РежимРаботы; КонецПроцедуры &Завязь Функция БазаДанных() Экспорт Возврат Новый БазаДанных(ЭтотРежим); КонецФункции &Завязь Функция КэшСервис() Экспорт Возврат Новый КэшСервис(); КонецФункции ``` -------------------------------- ### Usage of БазоваяПрилепляемаяЧастица Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ПрилепляемаяЧастица.md Examples of retrieving base particles for collection types and lazy dependencies (Табакерка). ```1script // For an array of services МассивСервисов = Частица; // ТипЧастицы = "Желудь", ИмяЧастицы = "МассивСервисов" БазоваяЧастица = МассивСервисов.БазоваяПрилепляемаяЧастица(); // БазоваяЧастица describes the element type // For a lazy dependency (Табакерка) ЛенивыйСервис = Частица; // ТипЧастицы = "Табакерка" ФактическаяЗависимость = ЛенивыйСервис.БазоваяПрилепляемаяЧастица(); // ФактическаяЗависимость describes what's in the box ``` -------------------------------- ### Iterate bean methods Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ОпределениеЖелудя.md Example of retrieving and iterating through bean methods, including parameter counts and function status. ```1script ТаблицаМетодов = Определение.Методы(); Для Каждого СтрокаМетода Из ТаблицаМетодов Цикл ИмяМетода = СтрокаМетода.Имя; КоличествоПараметров = СтрокаМетода.КоличествоПараметров; Если СтрокаМетода.ЭтоФункция Тогда Лог.Информация("Функция: %1 с %2 параметрами", ИмяМетода, КоличествоПараметров); КонецЕсли; КонецЦикла; ``` -------------------------------- ### Retrieve bean collections using НайтиЖелуди Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Поделка.md Examples of fetching multiple beans by name and retrieving the context as a collection. ```1script // Get all beans with name "Обработчик" as an array Обработчики = Поделка.НайтиЖелуди("Обработчик"); // Get the context as an array (only valid collection type for "Поделка") МассивКонтекста = Поделка.НайтиЖелуди("Поделка"); ``` -------------------------------- ### Usage of ЗапуститьПриложение Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Поделка.md Demonstrates initializing the application context and triggering the startup sequence. ```1script Поделка = Новый Поделка(); // ... registration of beans and configuration ... Поделка.ЗапуститьПриложение(); ``` -------------------------------- ### Get initialization state constant Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/modules-reference.md Returns the initialization phase state constant. Use during the setup phase when bean definitions are still mutable. ```1script Функция Инициализация() Экспорт ``` ```1script Если Определение.Спецификация() = СостоянияПриложения.Инициализация() Тогда // This bean is only for setup phase КонецЕсли; ``` -------------------------------- ### Initialize СоветДругогоМастера Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/СоветДругогоМастера.md Creates a new instance of the configuration advice object. ```1script Новый СоветДругогоМастера() ``` -------------------------------- ### Usage of Аннотация Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ПрилепляемаяЧастица.md Example of accessing annotation name and iterating through its parameters. ```1script Аннот = Частица.Аннотация(); Лог.Информация("Аннотация: %1", Аннот.Имя); // Inspect annotation parameters Для Каждого Параметр Из Аннот.Параметры Цикл Лог.Информация("Параметр %1 = %2", Параметр.Имя, Параметр.Значение); КонецЦикла; ``` -------------------------------- ### Initialize Поделка with default configuration Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Demonstrates the default initialization of the Поделка object when no custom configuration builder is provided. ```1script Поделка = Новый Поделка(); // Uses default СоветДругогоМастера with: // - Environment variable provider (no prefix) // - File provider for "autumn-properties" file // - Search paths: "./src", current directory ``` -------------------------------- ### Modern configuration equivalent Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/СоветДругогоМастера.md Recommended approach for configuring file search paths using the builder pattern. ```1script Совет = Новый СоветДругогоМастера(); Строитель = Совет.ПолучитьСтроительМенеджераПараметров(); Строитель.ПровайдерФайлов("default").ДобавитьСтандартныеКаталогиПоиска("config"); Поделка = Новый Поделка(Совет); ``` -------------------------------- ### Initialize Поделка context Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Поделка.md Creates a new application context instance, optionally accepting a configuration object. ```1script Новый Поделка(СоветДругогоМастера = Неопределено) ``` ```1script Совет = Новый СоветДругогоМастера(); Совет.ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек("config"); Поделка = Новый Поделка(Совет); ``` -------------------------------- ### ЗапуститьПриложение() Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Поделка.md Transitions the application context from initialization to execution state and triggers the application launcher. ```APIDOC ## ЗапуститьПриложение() ### Description Transitions the context from initialization state to execution state and starts the application launcher bean. ### Behavior - Changes application state from "Инициализация" to "Выполнение" - Looks up the "ЗапускательПриложения" bean and calls its ЗапуститьПриложение() method ### Throws - Exception if context is not in initialization state ### Example Поделка.ЗапуститьПриложение(); ``` -------------------------------- ### Register Beans Programmatically Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/getting-started.md Adds a factory method to the bean container at runtime before starting the application. ```1script Поделка = Новый Поделка(); // Add a bean factory method at runtime Фабрика = Новый Действие(ЭтотОбъект, "МояФабричнаяФункция"); Завязь = Поделка.ДобавитьЗавязь(Фабрика); Поделка.ЗапуститьПриложение(); Функция МояФабричнаяФункция() Экспорт Возврат Новый МойКласс(); КонецФункции ``` -------------------------------- ### Configure settings using legacy СоветДругогоМастера Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/СоветДругогоМастера.md Use this pattern for backward compatibility. Note that this method triggers deprecation warnings and suggests using the newer builder pattern. ```1script // Old way - still works but logs warnings Совет = Новый СоветДругогоМастера(); Совет.ПрефиксПеременныхСреды("MYAPP_"); Совет.ИмяФайлаСоЗначениямиДеталек("application"); Совет.ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек("config"); Совет.ЗначенияДеталек(Новый Соответствие("ключ", "значение")); Поделка = Новый Поделка(Совет); // Logs: "Метод СоветДругогоМастера.ПрефиксПеременныхСреды(...) устарел. Используйте ПолучитьСтроительМенеджераПараметров()..." ``` -------------------------------- ### Новый СоветДругогоМастера() Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/СоветДругогоМастера.md Initializes a new instance of the configuration advice object with default settings. ```APIDOC ## Новый СоветДругогоМастера() ### Description Initializes a new instance of the configuration advice object. This object is passed to the Поделка constructor to configure how configuration values are discovered and loaded. ### Syntax `Новый СоветДругогоМастера()` ``` -------------------------------- ### Define Configuration Priority Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/getting-started.md Demonstrates how to set default values when resolving configuration priority. ```1script // File has database.host = "localhost" // ENV has DATABASE_HOST = "prod.example.com" // Default = "localhost" &Деталька("DATABASE_HOST", ЗначениеПоУмолчанию = "localhost") Перм ХостБазы; // Result: ХостБазы = "prod.example.com" (from ENV) ``` -------------------------------- ### Usage of ИмяЧастицы Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ПрилепляемаяЧастица.md Examples of retrieving names for different particle types like Деталька, Желудь, and Блестяшка. ```1script // For a Деталька, returns the configuration key КлючКонфига = Частица.ИмяЧастицы(); // "БазаДанных.Адрес" // For a Желудь, returns the bean name ИмяБина = Частица.ИмяЧастицы(); // "МойСервис" // For a Блестяшка, returns the provided name ПроизвольноеИмя = Частица.ИмяЧастицы(); // "кастомЗначение" ``` -------------------------------- ### Override Configuration via Environment Variables Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Demonstrates how environment variables take precedence over file-based configurations based on default priority levels. ```1script // application.json has database.host = "localhost" // ENV var has DATABASE_HOST = "production.example.com" Совет = Новый СоветДругогоМастера(); Строитель = Совет.ПолучитьСтроительМенеджераПараметров(); // Keep env provider (default priority 20) // Keep file provider (default priority 15) Поделка = Новый Поделка(Совет); // Result: database.host = "production.example.com" (from ENV) ХостБазы = Поделка.НайтиДетальку("database.host"); ``` -------------------------------- ### Initialize ПрилепляемаяЧастица Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ПрилепляемаяЧастица.md Constructor for creating a new dependency descriptor instance. ```1script Новый ПрилепляемаяЧастица( ТипЧастицы, ИмяЧастицы, Аннотация, БазоваяПрилепляемаяЧастица = Неопределено ) ``` -------------------------------- ### Use Application State Constants Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/types.md Demonstrates checking the current application state and iterating through available states. ```1script Если Определение.Спецификация() = СостоянияПриложения.Инициализация() Тогда // This bean is only available during setup КонецЕсли; Для Каждого Состояние Из СостоянияПриложения.Значения() Цикл Лог.Информация("Возможное состояние: %1", Состояние); КонецЦикла; ``` -------------------------------- ### Retrieve Dependency Type Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ПрилепляемаяЧастица.md Method to get the type of the dependency, returning one of the predefined types from ТипыПрилепляемыхЧастиц. ```1script Функция ТипЧастицы() Экспорт ``` ```1script Тип = Частица.ТипЧастицы(); Если Тип = ТипыПрилепляемыхЧастиц.Желудь() Тогда Лог.Информация("Это ссылка на другой бин"); КонецЕсли; ``` -------------------------------- ### Configure Environment Variables Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Demonstrates reading environment variables directly or with a specific prefix. ```bash export DATABASE_HOST=localhost export DATABASE_PORT=5432 ``` ```1script &Деталька("DATABASE_HOST") Перем ХостБазы; &Деталька("DATABASE_PORT") Перем ПортБазы; ``` -------------------------------- ### Configure Inline Parameters Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Use a Map to define configuration settings and register them with a specific priority level. ```1script Совет = Новый СоветДругогоМастера(); Строитель = Совет.ПолучитьСтроительМенеджераПараметров(); ПараметрыИспользования = Новый Соответствие(); ПараметрыИспользования.Вставить("database.host", "localhost"); ПараметрыИспользования.Вставить("database.port", 5432); ПараметрыИспользования.Вставить("server.timeout", 60); // Priority: 10 (higher number = higher priority) // Name: "inline" (for logging/debugging) Строитель.ДобавитьПровайдерСоответствие(ПараметрыИспользования, 10, "inline"); Поделка = Новый Поделка(Совет); ``` -------------------------------- ### Get execution state constant Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/modules-reference.md Returns the execution phase state constant. Use when the application is running and configuration is locked. ```1script Функция Выполнение() Экспорт ``` ```1script Если Определение.Спецификация() = СостоянияПриложения.Выполнение() Тогда // This bean is available during app execution КонецЕсли; ``` -------------------------------- ### Usage of НайтиДетальку Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Поделка.md Demonstrates retrieving configuration values for database paths and server timeouts. ```1script ПутьКБазе = Поделка.НайтиДетальку("БазаДанных.Путь", "./data.db"); Таймаут = Поделка.НайтиДетальку("Сервер.Таймаут", 30); ``` -------------------------------- ### Configure custom parameter manager Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Shows how to use the builder to clear existing providers and set a custom environment variable prefix. ```1script Совет = Новый СоветДругогоМастера(); Строитель = Совет.ПолучитьСтроительМенеджераПараметров(); // Configure the builder Строитель.ОчиститьПровайдеры(); Строитель.Провайдер("env").Настройки().УстановитьПрефикс("MYAPP_"); // Pass to Поделка Поделка = Новый Поделка(Совет); ``` -------------------------------- ### ИмяФайлаСоЗначениямиДеталек (Deprecated) Source: https://github.com/autumn-library/autumn/blob/master/docs/api/050-Классы/20-СоветДругогоМастера.md Deprecated method for setting the configuration file name. Use ПолучитьСтроительМенеджераПараметров().ПровайдерФайлов("default").УстановитьИмяФайла(...) instead. ```bsl Функция ИмяФайлаСоЗначениямиДеталек(НовоеЗначение = Неопределено) Экспорт ``` -------------------------------- ### ПриСозданииОбъекта Source: https://github.com/autumn-library/autumn/blob/master/docs/api/020-Желуди/010-Поделка.md Initializes the application context (поделка) by setting up the acorn factory, annotation container, parameter manager, and scanning known types. ```APIDOC ## ПриСозданииОбъекта ### Description Initializes the application context (поделка) by setting up the acorn factory, annotation container, parameter manager, and scanning known types. ### Parameters - **СоветДругогоМастера** (СоветДругогоМастера) - Optional - Settings for creating the object. Defaults to Undefined. ``` -------------------------------- ### Using @Табакерка for Lazy Dependency Resolution Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/annotations-reference.md Illustrates how to defer dependency initialization until access time to break circular dependencies or optimize performance. ```1script &Желудь Процедура ПриСозданииОбъекта() КонецПроцедуры &Табакерка(Значение = "БольшаяБаза") Перм ЛенивыйДатасет; Функция ПолучитьДанные() Экспорт // БольшаяБаза инициализируется здесь, не раньше Сет = ЛенивыйДатасет.Достать(); Возврат Сет.ПолучитьДанные(); КонецФункции ``` ```1script // Service A needs Service B lazily &Желудь("СервисА") Процедура ПриСозданииОбъекта( &Табакерка(Значение = "СервисБ") ЛенивыйБ ) ЭтотБ = ЛенивыйБ; КонецПроцедуры Функция ВызватьБ() Экспорт СервисБ = ЭтотБ.Достать(); Возврат СервисБ.Выполнить(); КонецФункции // Service B needs Service A directly (no circular reference) &Желудь("СервисБ") Процедура ПриСозданииОбъекта(&Желудь(Значение = "СервисА") СервисА) ЭтотА = СервисА; КонецПроцедуры ``` -------------------------------- ### Initialize ОпределениеЖелудя Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ОпределениеЖелудя.md Constructor for creating a new bean definition instance with all required metadata and dependencies. ```1script Новый ОпределениеЖелудя( РазворачивательАннотаций, ТипЖелудя, Имя, Характер, ПрилепляемыеЧастицы, Завязь, Прозвища, Порядок, Верховный, Спецификация, КорневаяАннотация ) ``` -------------------------------- ### СостоянияПриложения.Значения() Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/modules-reference.md Returns all valid application lifecycle states. ```APIDOC ## Function СостоянияПриложения.Значения() ### Description Returns a collection of all valid application states. ### Returns - **ФиксированныйМассив** - An array containing "Инициализация" and "Выполнение" ``` -------------------------------- ### Comparison of Direct vs Lazy Injection Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Табакерка.md Contrasts immediate instantiation with deferred instantiation. ```1script // Direct - expensive initialization happens immediately &Желудь Процедура ПриСозданииОбъекта(&Желудь(Значение = "БольшаяБаза") База) // БольшаяБаза initialized NOW ЭтаБаза = База; КонецПроцедуры // Lazy - expensive initialization deferred &Желудь Процедура ПриСозданииОбъекта(&Табакерка(Значение = "БольшаяБаза") ЛенивыйАксесс) // БольшаяБаза NOT initialized yet ЭтаТабакерка = ЛенивыйАксесс; КонецПроцедуры Функция ПолучитьДанные() База = ЭтаТабакерка.Достать(); // БольшаяБаза initialized HERE Возврат База.ПолучитьДанные(); КонецФункции ``` -------------------------------- ### ПрефиксПеременныхСреды (Deprecated) Source: https://github.com/autumn-library/autumn/blob/master/docs/api/050-Классы/20-СоветДругогоМастера.md Deprecated method for setting environment variable prefixes. Use ПолучитьСтроительМенеджераПараметров().Провайдер("env").Настройки().УстановитьПрефикс(...) instead. ```bsl Функция ПрефиксПеременныхСреды(НовоеЗначение = Неопределено) Экспорт ``` -------------------------------- ### Initialize Завязь Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Завязь.md Constructor signature for creating a new instance of the Завязь class. ```1script Новый Завязь(Родитель, ИмяМетода, ДанныеМетода, Действие, ЭтоКонструктор) ``` -------------------------------- ### ПриСозданииОбъекта Source: https://github.com/autumn-library/autumn/blob/master/docs/api/050-Классы/20-СоветДругогоМастера.md Handles the initialization logic for the object. ```bsl // Советы по созданию поделки, упакованные в объект. // Процедура ПриСозданииОбъекта() ``` -------------------------------- ### Constructor: Новый Поделка Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/Поделка.md Initializes a new instance of the Поделка application context, setting up the bean factory and configuration. ```APIDOC ## Constructor ### Description Initializes the application context by scanning known types, setting up the bean factory, annotation container, and parameter manager. ### Signature `Новый Поделка(СоветДругогоМастера = Неопределено)` ### Parameters - **СоветДругогоМастера** (СоветДругогоМастера) - Optional - Configuration object for parameter management and initialization settings. ### Example ```1script Совет = Новый СоветДругогоМастера(); Совет.ДополнительныйКаталогПоискаФайлаСоЗначениямиДеталек("config"); Поделка = Новый Поделка(Совет); ``` ``` -------------------------------- ### ПрилепляемыеЧастицы() Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ОпределениеЖелудя.md Returns the list of dependencies for the bean. ```APIDOC ## ПрилепляемыеЧастицы() ### Description Returns the list of dependencies to be injected into the bean. ### Returns - **ФиксированныйМассив из ПрилепляемаяЧастица** - Array of dependency particles. ### Example ```1script Зависимости = Определение.ПрилепляемыеЧастицы(); Для Каждого Частица Из Зависимости Цикл Лог.Информация("Зависимость: %1 (%2)", Частица.ИмяЧастицы(), Частица.ТипЧастицы()); КонецЦикла; ``` ``` -------------------------------- ### Constructor: Новый ПрилепляемаяЧастица Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/api-reference/ПрилепляемаяЧастица.md Initializes a new instance of the dependency descriptor. ```APIDOC ## Constructor: Новый ПрилепляемаяЧастица ### Description Creates a new dependency descriptor for a bean. ### Signature Новый ПрилепляемаяЧастица(ТипЧастицы, ИмяЧастицы, Аннотация, БазоваяПрилепляемаяЧастица = Неопределено) ### Parameters - **ТипЧастицы** (Строка) - Required - Particle type from ТипыПрилепляемыхЧастиц - **ИмяЧастицы** (Строка) - Required - Name of the dependency - **Аннотация** (СтрокаТаблицыЗначений) - Required - Annotation row describing the particle - **БазоваяПрилепляемаяЧастица** (ПрилепляемаяЧастица) - Optional - Base particle for collections and deferred particles ``` -------------------------------- ### Implement Lazy Loading Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/getting-started.md Defers dependency initialization until the first access. ```1script &Желудь Процедура ПриСозданииОбъекта() КонецПроцедуры &Табакерка(Значение = "БольшаяБаза") Перм ЛенивыйДатасет; Функция ПолучитьДанные() Экспорт // БольшаяБаза инициализируется только здесь База = ЛенивыйДатасет.Достать(); Возврат База.ПолучитьДанные(); КонецФункции ``` -------------------------------- ### Using @Деталька for Configuration Injection Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/annotations-reference.md Demonstrates various ways to inject configuration values into constructors, fields, and setter methods using the @Деталька annotation. ```1script // Constructor parameter: &Желудь Процедура ПриСозданииОбъекта(&Деталька ПорткаЛи) ЭтотПорт = ПорткаЛи; КонецПроцедуры // Field: &Деталька("server.port", ЗначениеПоУмолчанию = 8080) Перем ПортСервера; // Setter: &Деталька("кэш.размер") Процедура УстановитьРазмерКэша(Значение) Экспорт КонецПроцедуры // With custom key and default: &Деталька(Значение = "database.connection.timeout", ЗначениеПоУмолчанию = 30) Перем ТаймаутПодключения; ``` ```1script &Желудь Процедура ПриСозданииОбъекта( &Деталька("app.name") ИмяПриложения, &Деталька("app.version", ЗначениеПоУмолчанию = "1.0") Версия, &Деталька("app.debug", ЗначениеПоУмолчанию = Ложь) РежимОтладки ) ЭтотНаименование = ИмяПриложения; ЭтаВерсия = Версия; ЭтотРежим = РежимОтладки; КонецПроцедуры ``` -------------------------------- ### Implement a plugin with &Напильник Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/types.md Marks a class as a plugin for post-instantiation bean processing. Requires implementation of ОбработатьЖелудь. ```1script &Напильник Процедура ПриСозданииОбъекта() КонецПроцедуры &Напильник("Логирование", ПрименяетсяТолькоНа = "МойСервис") Процедура ПриСозданииОбъекта() КонецПроцедуры ``` -------------------------------- ### Load File Configuration Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/getting-started.md Reads configuration settings from a JSON file. ```json { "database": { "host": "localhost", "port": 5432, "pool": { "size": 10, "timeout": 30 } } } ``` ```1script &Деталька("database.host") Перем ХостБазы; &Деталька("database.pool.size") Перем РазмерПула; ``` -------------------------------- ### СостоянияПриложения.Инициализация() Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/modules-reference.md Returns the initialization phase state constant for the application lifecycle. ```APIDOC ## Function СостоянияПриложения.Инициализация() ### Description Returns the initialization phase state constant. During this phase, beans can be registered, configured, and definitions modified. ### Returns - **String** - "Инициализация" ``` -------------------------------- ### Define configuration structure Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md JSON structure demonstrating nested configuration keys using dot notation. ```json { "database": { "primary": { "host": "db1.example.com", "port": 5432 }, "replica": { "host": "db2.example.com", "port": 5432 } } } ``` -------------------------------- ### Inject configuration via constructor Source: https://github.com/autumn-library/autumn/blob/master/_autodocs/configuration.md Injecting configuration values as parameters during object construction. ```1script &Желудь Процедура ПриСозданииОбъекта( &Деталька("database.host", ЗначениеПоУмолчанию = "localhost") ХостБазы, &Деталька("database.port", ЗначениеПоУмолчанию = 5432) ПортБазы ) ЭтотХост = ХостБазы; ЭтотПорт = ПортБазы; КонецПроцедуры ``` -------------------------------- ### Инициализация зависимостей Source: https://github.com/autumn-library/autumn/blob/master/CONTRIBUTING.md Установка необходимых пакетов для разработки в папку oscript_modules. ```cmd Opm install -l --dev ```