Skip to content

Внедрение настроек приложения

Хорошая поделка состоит не только из желудей и пластилина, но и обвешана маленькими приятными глазу детальками. Причем разные поделки, собранные по одному и тому же чертежу, могут только этими детальками и отличаться.

В примере выше мы передавали Обновлятору1С данные авторизации через переменные среды, читающиеся с помощью &Дуба и его &Завязей. Но это не единственный способ работы с настройками приложения.

Осень содержит в себе механизм передачи желудю настроек приложения напрямую из конфигурационного файла. Для этого служит аннотация &Деталька. &Пластилин помогает связать между собой несколько полноценных &Желудей, тогда как &Деталька налепляется сразу на нужный &Желудь.

Поддержка загрузки настроек из переменных окружения и аргументов командной строки в ближайших планах разработки. Еще год-два и точно запилим, честно-честно!

Конфигурационный файл может быть в виде json, yaml или ini файла, называется autumn-properties.json/autumn-properties.yml/autumn-properties.ini соответственно и ищется ОСенью в каталоге запуска приложения или в подкаталоге src.

json
{
    "Логин": "user",
    "Пароль": "pass",
    "ПрочиеНастройки": {
        "Настроение": "Хорошее"
    }
}

А вот так их можно использовать в жёлуде:

bsl
&Деталька
Перем Логин;

&Деталька
Перем Пароль;

&Деталька("ПрочиеНастройки.Настроение")
Перем Настроение;

&Деталька(Значение = "ПрочиеНастройки.ОтветНаГлавныйВопросЖизниВселеннойИВсегоОстального", ЗначениеПоУмолчанию = 42)
Перем Ответ;

&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры

Вы можете добавлять к желудю любые детальки вне зависимости от того, есть они в конфигурационном файле или нет.

По умолчанию "ОСень" будет пытаться найти значение настройки по имени параметра конструктора: в json есть параметры "Логин" и "Пароль", в конструкторе есть параметры "Логин" и "Пароль", искра, буря, безумие!

JSON обычно содержит вложенные объекты и массивы. Путь к настройкам в таких вложенных структурах можно указать в параметре аннотации &Деталька в формате библиотеки configor, используя точки для объектов и квадратные скобки для массивов.

Не обязательно заставлять пользователя указывать все настройки в конфигурационном файле, если ему могут подойти значения настроек по умолчанию. Для указания значения по умолчанию в &Детальке есть параметр ЗначениеПоУмолчанию. Поразительно, не правда ли?