Вступление
При разработке с нуля, а также доработке (адаптации) "своих" и "чужих" дополнительных обработок, возникают задачи по управлению настройками:
- добавление
- редактирование
- просмотр
- доступ к настройкам из программного кода
Каждый разработчик или команда придумывает свои структуры и интерфейсы для этого, что иногда вызывает определенные сложности.
Например, изменилось API и нужно в настройках обработки поменять путь к методу c /api/v2/supplies на /api/v3/supplies. Возникают вопросы:
- как и где посмотреть текущий путь?
- как безопасно поменять на новый путь и не повредить (зацепить) другие настройки?
- как быстро откатить измененные настройки?
Данный шаблон призван:
- стандартизировать хранение настроек
- упростить просмотр, добавление и изменение настроек
- упростить доступ к настройкам при написании программного кода
- упростить отладку
Актуальная документация, релиз, задачи по развитию и исправлению ошибок
Документация, лицензия, новые релизы, задачи по развитию и исправлению ошибок доступны по ссылке https://github.com/ilko-os/1c-additional-data-processor-template
Ключевые возможности
- Интерфейс для управления настройками команд и обработки в целом. Поддерживает следующие типы:
- Примитивные: Число, Строка, Дата, Булево
- Ссылочные
- Составной тип из ссылочных и примитивных типов
- Массив из ссылочных и примитивных типов, с перечнем возможных типов
- Список значений из ссылочных и примитивных типов, с перечнем возможных типов
- Таблица значений с типизацией колонок
- Упрощение отладки при разработке, внедрении и эксплуатации. Достигается за счет:
- Единого подхода к хранению и доступу к настройкам
- Единая точка входа для отладки
- Логирование событий в журнал регистрации
Внешний вид интерфейса и назначение элементов управления

Управление настройками- содержит команды для экспорта, импорта и очистки настроек. Cм. подробнее в разделе "Экспорт, импорт и очистка настроек".Режим загрузки настроек по умолчанию- определяет правила загрузки настроек по умолчанию описанных в конфигуратореОбновление- если настройка есть в табличной части, то обновляется только полеОписание, а поляТипиЗначениеостаются без изменений. Если нет строки с настройкой, то добавляется строка заполняются все поля из настроек, описанных в конфигуратореДобавление новых- если настройка есть в табличной части, то строка остается без изменений. Если нет строки с настройкой, то добавляется строка заполняются все поля, описанные в конфигуратореЗамещение- очистка настроек и последующая загрузка
Показать значения безопасного хранилища- определяет включен лиРежим Паролядля колонокЗначениена страницах с суффиксом(Безопасное хранилище)Да-Режим ПаролявключенНет-Режим Паролявыключен
Дополнительная обработка- содержит ссылку на сохраненную обработку в информационной базе. При открытии внешней обработки через
Файл -> Открыть...производится поиск по свойствуИмяобработки заданному в конфгураторе и реквизитуИмяОбъектасправочника "ДополнительныеОтчетыИОбработки". Если имя обработки изменилось и не совпадает с ранее сохранным в информационной базе, то следует выбрать ссылку явно и выполнить командуCохранить настройки обработки - управляет настройками обработки в целом с помощью команд:
Загрузить настройки обработки по умолчаниюПрочитать настройки обработкиСохранить настройки обработкиДействие применятся к страницамНастройки обработкииНастройки обработки (Безопасное хранилище)
- содержит ссылку на сохраненную обработку в информационной базе. При открытии внешней обработки через
Идентификатор команды- позволяет выбрать команду указанную в функция
СведенияОВнешнейОбработке - управляет настройками для выбранной команды с помощью команд:
Загрузить настройки команды по умолчаниюПрочитать настройки командыСохранить настройки командыДействие применяется к страницамНастройки командыиНастройки команды (Безопасное хранилище)Выполнить команду- запускает выполнение выбранной команды
- позволяет выбрать команду указанную в функция
- Страницы для 4 групп настроек, см. подробнее
Порядок внедрения
Сохранить актуальный релиз обработки
https://github.com/ilko-os/1c-additional-data-processor-template/releases
В режиме "1С:Конфигуратор"
- Изменить
ИмяиСинонимобработки - В модуле объекта обработки в процедуре
РазрешенныеРолиДляРедактированияНастроекперечислить роли для которых разрешено открытие формы настроек обработки. Если у пользователя отсутствуют роли из этого перечня, то форма настроек не будет открываться. Место для изменения отмечено комментариями// Начало области для модификации {{и// }} Окончание области для модификации - В модуле объекта обработки в процедуре
СведенияОВнешнейОбработке- изменить значения для
ПараметрыРегистрации.ВерсияиПараметрыРегистрации.Информация. Место для изменения отмечено комментариями// Начало области для модификации {{и// }} Окончание области для модификации - добавить (изменить) необходимые команды. Место для изменения отмечено комментариями
// Начало области для модификации {{и// }} Окончание области для модификации
- изменить значения для
- В модуле объекта обработки в процедуре
ВыполнитьКомандуописать реализацию выполнения команд из предыдущего пункта. Место для изменения отмечено комментариями// Начало области для модификации {{и// }} Окончание области для модификации - (Необязательный) В модуле объекта обработки в добавить необходимы параметры в процедурах:
ЗагрузитьНастройкиОбработкиПоУмолчаниюЗагрузитьНастройкиОбработкиБезопасноеХранилищеПоУмолчаниюЗагрузитьНастройкиКомандыПоУмолчаниюЗагрузитьНастройкиКомандыБезопасноеХранилищеПоУмолчанию
Чтобы упростить обновления на новый релиз обработки, желательно следовать правилам из раздела Рекомендации по разработке.
В режиме "1С:Предприятие"
- Загрузить обработку в справочник
ДополнительныеОтчетыИОбработки. - Переоткрыть обработку. Реквизит
Дополнительная обработказаполнится ссылкой на обработку из предыдущего пункта. Сопоставление идет по имени обработки. - Заполнить значения настроек для обработки в целом и команд, сохранить настройки. После сохранения нужно Обязательно переоткрыть обработку
- (Необязательный) Для команд настроить расписание
Работа с настройками
Добавление настроек
Настройки делятся на 4 группы:
Настройки обработки- относятся к обработке в целом. Например,ИмяХоста,Порт,ЗащищенноеСоединениеи т.д.Настройки обработки безопасное хранилище- "чувствительные" настройки, которые относятся к обработке в целом. Например,ЛогиниПароль,КлючAPIи т.д.Настройки команды- относятся к команде. Например,ПутьКРесурсу,Таймаут,РазмерПакетаи т.д.Настройки команды безопасное хранилище- "чувствительные" настройки, которые относятся к команде. Например,ЛогиниПароль,КлючAPIи т.д.
К имени настройки (Колонка Имя в табличной части) применяются правила именования ключей структуры (переменных) встроенного языка 1С:Предприятие.
Поддерживаются 2 подхода добавления настроек:
- Описание настроек в "1С:Конфигуратор", добавление и задание значение настроек в режиме "1С:Предприятие"
- Плюсы:
- Упрощают написание кода с последующим доступам к значениям настроек в режиме "1С:Конфигуратор" за счет предварительного проектирования и прототипирования
- Минусы
- Скорость, т.к. требуется писать дополнительный код
- Плюсы:
- Добавление настроек и задание их значений в режиме "1С:Предприятие"
- Плюсы:
- Простота
- Скорость
- Минусы
- Возможны опечатки в именах настроек, т.к. они независимо добавляются в режиме "1С:Предприятие" и затем используются при написании кода в режиме "1С:Конфигуратор"
- Плюсы:
Описание настроек в "1С:Конфигуратор"
Описание настроек в "1С:Конфигуратор" производится в 4 процедурах модуля объекта обработки:
ЗагрузитьНастройкиОбработкиПоУмолчаниюЗагрузитьНастройкиОбработкиБезопасноеХранилищеПоУмолчаниюЗагрузитьНастройкиКомандыПоУмолчаниюЗагрузитьНастройкиКомандыБезопасноеХранилищеПоУмолчанию
Названия процедур соответствуют одноименным табличным частям (страницам) на форме.
В процедуре ЗагрузитьНастройкиКомандыПоУмолчанию приведены различные примеры параметров для разных типов.

Загрузка настроек и значений по умолчанию в режиме "1С:Предприятие"
Для загрузки настроек служат 2 команды
Загрузить настройки обработки по умолчаниюЗагрузить настройки команды по умолчанию

Добавление и задание значение настроек в режиме "1С:Предприятие"
Порядок действий:
- Добавить строку и задать
Имя, должно соответствовать правилам именования ключей структуры - Выбрать
Тип контейнераиТипдля значения - Выбрать значение
- (Необязательный) Написать комментарий

Загрузка нескольких значений настроек в режиме "1С:Предприятие" из буфера обмена
Поддерживается загрузка нескольких значений примитивного и ссылочного типа для контейнеров:
- Список значений
- Массив
Порядок действий изображен на рисунках ниже


Экспорт, импорт и очистка настроек
Действия доступны в разделе Управление настройками и содержит команды:
Экспортировать настройки- экспорт настроек в файл.Импортировать настройки- импорт ранее сохраненных настроекОчистить настройки- очищает настройки обработки в информационной базе
Предупреждение: Файл с сохраненными настройками может содержать чувствительные данные. Нужно ответственно относиться к его хранению и передаче.

Доступ к настройкам в коде
1. В модуле объекта обработки доступ к настройкам осуществляется через 4 глобальные переменные:
НастройкиОбработки- Структура - содержит параметры с вкладки "Настройки обработки"НастройкиОбработкиБезопасноеХранилище- Структура - содержит параметры с вкладки "Настройки обработки (Безопасное хранилище)"НастройкиКоманды- Структура - содержит параметры с вкладки "Настройки команды"НастройкиКомандыБезопасноеХранилище- Структура - содержит параметры с вкладки "Настройки команды (Безопасное хранилище)"

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

3. Для передачи параметров за пределы обработки и доступа к настройкам других команд служит глобальная переменная НастройкиКомандИОбработки
-
НастройкиКомандИОбработки- Структура - Содержит параметры сохраненные для обработки в режиме предприятиеНастройкиКомандИОбработки.НастройкиОбработки- Структура - содержит параметры с вкладки "Настройки обработки"астройкиКомандИОбработки.НастройкиОбработкиБезопасноеХранилище- Структура - содержит параметры с вкладки "Настройки обработки (Безопасное хранилище)"НастройкиКомандИОбработки[ИдентификаторКоманды].НастройкиКоманды- Структура - содержит параметры с вкладки "Настройки команды" для указанного идентификатора командыНастройкиКомандИОбработки[ИдентификаторКоманды].НастройкиКомандыБезопасноеХранилище- Структура - содержит параметры с вкладки "Настройки команды (Безопасное хранилище)" для указанного идентификатора команды
где ИдентификаторКоманды - Строка - возможные значения описаны в функции СведенияОВнешнейОбработке в Команда.Идентификатор

Приемы отладки
- Выполнить внедрение
- Заполнить и сохранить настройки
- Открыть в режиме 1С:Конфигуратор файл обработки через
Файл -> Открыть...и поставить точку останова. Как правило, это процедураВыполнитьКомандуи строкаЕсли ИдентификаторКоманды = "Команда1" Тогда ... - Открыть обработку в режиме 1С:Предприятие через
Файл -> Открыть... - Выбрать команду и нажать
Выполнить
Предупреждение
После сохранения настроек в режиме 1С:Предприятие нужно переоткрыть обработку через Файл -> Открыть...
Важно
Открывать нужно один и тот же файл обработки в режимах 1С:Конфигуратор 1С:Предприятие.
Выполняется обработка и ее отладка из файла на диске, а настройки используются из элемента справочника Дополнительные отчеты и обработки информационной базы, выбранной в реквизите Дополнительная обработка.
Порядок обновления на новый релиз обработки
Рекомендации по разработке
При разработке рекомендуется придерживаться простых правил:
- Изменения вносить только в модуль объекта обработки
- в функцию
СведенияОВнешнейОбработкев участок обрамленный// Начало области для модификации {{и// }} Окончание области для модификации - в процедуру
ВыполнитьКоманду - в область
ЗагрузкаНастройкиПоУмолчанию - в область
ОбработчикиКоманд
- в функцию
Порядок обновления
- Скачать новый релиз шаблона обработки
- Открыть в конфигураторе 2 обработки
- новый релиз шаблона обработки
- обработку на основе шаблона
- Скопировать из обработки на основе шаблона в обработку нового релиза шаблона:
ИмяобработкиСинонимобработки- в модуле объекта обработки:
- в функции
СведенияОВнешнейОбработкекод обрамленный комментариями// Начало области для модификации {{и// }} Окончание области для модификации - в процедуре
ВыполнитьКомандукод обрамленный комментариями// Начало области для модификации {{и// }} Окончание области для модификации - область
ЗагрузкаНастройкиПоУмолчанию - область
ОбработчикиКоманд - область
РазрешенныеРолиДляРедактированияНастроек
- в функции
- другие измененные участки кода, если были отклонения от рекомендаций
- Сохранить новый релиз шаблона обработки под новым именем
Проверено на следующих конфигурациях и релизах:
- 1С:Комплексная автоматизация 2, релизы 2.5.22.155
- Розница, редакция 2.3, релизы 2.3.24.22
Вступайте в нашу телеграмм-группу Инфостарт