Боль
Каждый кто разрабатывает и поддерживает микросервисы в 1С (расширения, доп. отчеты обработки) рано или поздно сталкивается с потребностью механизма автоматической поставки и обновления этих самых микросервисов. В официальном облаке 1сфреш это реализовано в виде магазина расширений, где пользователи могут в любой момент установить дополнение в свое приложение, обновить (обновления даже проходят автоматически) и это достаточно удобно. А для локальных версий такого магазина расширений пока нет (точнее он появляется 1С Плюс и 1СStore от Инфостарта, но попасть туда сложно, не каждого берут, да и не всем надо).
"Дорогу осилит идущий."
Сенека. Брежнев.Лоскутов.
Постановка задачи
Итак у нас есть расширение, например Легкий документооборот. Для каждой конфигурации соответственно отдельный файл расширения. А еще для каждой редакции скорее всего будут разные расширения, например для УНФ 1.6 и для УНФ 3.0. И даже на одной редакции УНФ 3.0 могут быть разные расширения для разных версий. Нам нужно чтобы пользователь не задумываясь о версиях мог обновить расширение в своей локальной базе и желательно одной кнопкой, откатиться к прошлой версии если понадобится. И уж совсем жир: пользователь соглашается на автообновление и оно само обновляется по расписанию. И еще хотелось бы ограничить период обновлений для одного пользователя, так как мы продаем подписку на обновления с ограниченным периодом. Ну и, разумеется, так как расширение платное, то мы не должны выкладывать его в открытый доступ.
Доп. обработка-установщик
Чтобы пользователь смог работать с микросервисами прямо в интерфейсе 1С понадобится какой‑то установщик — доп. обработка или расширение, которая сможет:
-
Узнать текущую версию конфигурации
-
Пойти в «нужное место» и проверить доступные версии расширения для текущей конфигурации
-
Подобрать среди доступных версий самую свежую и подходящую
-
Хранить секретный ключ (Токен) с помощью которого мы сможем скачать версию (с ограниченным периодом действия)
-
Скачать его из «нужного места»
-
Установить в информационную базу (ИБ)

"Нужное место" курильщика
Первое что пришло на ум: сделать «нужное место» в облаке. + понадобится там же держать файл (ini) с описанием какая версия расширения для какой конфигурации подходит. Это костыль решение в целом имеет право на жизнь. Но в нем много неудобств и ограничений:
-
Много времени занимает правильное хранение версий с отражением этого в текстовый файл
-
Для каждого микросервиса делать отдельную папку со своим паролем?!
-
Как ограничить доступ по периоду?!

и мы пошли другим путем.
"Нужное место" здорового человека
Итак, нужен какой‑то сервер для хранения версий микросервисов. И чтобы он умел выдавать файлы по запросу (имел REST API). И чтобы его можно было легко и привычно администрировать. И чтобы его легко можно было бы дорабатывать (желательно на привычном языке 1С). И чтобы он сам делал бэкапы. Ну а так как мы 1Сники, то решение пришло само по себе: пусть это будет привычная информационная база (ИБ) 1С в облаке. С облаком вопросов не возникало — мы выбрали ГРМ. С конфигурацией немного пришлось подумать: сначала было желание сделать на «голой» конфигурации с нуля. Но потом все‑же приняли решение использовать одну из передовых конфигураций УНФ — и это правильно.
Примерно вот так это выглядит сейчас






Итоги
-
Система работает уже несколько месяцев достаточно стабильно
-
Можно продавать просто Токены (хоть на Инфостарте хоть на других ресурсах) и отправлять бесплатный установщик
-
Установщик может определить есть ли вообще это решение для конфигурации пользователя
-
Установщик может по расписанию автоматически обновлять расширение
А потом мы подумали что это может быть полезно другим разработчикам решений, и начали пилить доступ в «нужное место» для разработчиков, но это уже в следующей истории.

Александр Манжела
Разработчик, ООО «Манжела»
Автор: manzhela