CI/CD для 1С: как упростить себе жизнь

09.06.25

Разработка - DevOps и автоматизация разработки

Устали от ручной поддержки версий обработок, отчетов и печатных форм в 1С в разных базах, ошибок и перезаписи важных изменений разными программистами? Автоматизируйте процессы с CI/CD и Jenkins. Читайте статью, скачивайте готовые скрипты и настройки, ставьте плюс и делитесь с коллегами!

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
DevOps_Jenkins_OneC
.zip 12,97Kb
3
3 Скачать (2 SM) Купить за 2 150 руб.

Многие наверняка сталкивались с ручным сведением версий обработок, отчетов и печатных форм: бесконечные, однообразные операции, ошибки из-за человеческого фактора, перезапись важных изменений. Знакомо?

У нас было то же самое, имелось две базы:

  • продуктовая (База1Предприятие) с данными, в которой все обработки, отчеты и ПФ помещены как дополнительные в справочник ДополнительныеОтчетыОбработки;
  • разработческая (База2Разработка) пустая без данных, но все обработки, отчёты и печатные формы хранятся встроенными в конфигурацию подключенную к Хранилищу_Конфигураций.

В остальном обе конфигурации с точки зрения метаданных идентичны. Разработка, учет версий, изменения ведутся в База2Разработка и потом вручную после тестирования разработчик или тестировщик обновляет справочник в База1Предприятие.

Когда количество сущностей перевалило за тысячу, ручной подход стал кошмаром: путаница в версиях, пропущенные обновления, затертые экспериментальные фичи, уведомления об обновлениях поступают с опозданием или вообще не приходят заинтересованным лицам и участникам.

Почему не перейти на Git? Наша конфигурация достаточно старая и использует обычные формы, поэтому переход на EDT и Git посчитали сложным из-за необходимости переработки кода.

Какое решение? Автоматизация через CI/CD. И в этой статье я покажу, как настроить конвейер непрерывной интеграции и доставки для 1С на примере Jenkins. В результате получится автоматический процесс, который сам обновляет продуктовую базу при изменениях в разработческой.

Организация тестирования, проверки анализаторами кода и т.п., которые выполняются перед развертыванием, а также рассылка сообщений и отчетов о событиях участникам в мессенджеры или на почту опущены для упрощения повествования.

 
Установка и настройка Jenkins

 

Скрипты работы с 1С

Во вложенном архиве представлены готовые скрипты, которые выполняют следующие действия:

  1. Обновить разработческую базу из Хранилища_Конфигураций и выгрузить конфигурацию в файлы XML
  2. Заменить теги в файлах XML и конвертировать их в *.epf, *.erf
  3. Вызвать обработку 1С с параметрами запуска для развертывания в продуктовой База1Предприятие.

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

 

 
Преобразование XML в .epf, .erf.

После выгрузки конфигурации 1С в файлы имеем файлы xml в директориях \DataProcessors и \Reports. Если сразу попробовать в Конфигураторе создать новую пустую обработку/отчет и выбрать Загрузить из файлов напрямую указав файл xml, то 1С не дает этого сделать и выдает ошибку: "Ошибка загрузки документа. Отсутствует контейнер метаданных по причине: Отсутствует контейнер метаданных."

Давайте используем особенность 1С: если в XML-файле заменить теги <DataProcessor> на <ExternalDataProcessor> (или <Report> на <ExternalReport> для отчётов), то скрипт успешно конвертирует их в .epf или .erf.

 

 

См. пример конвертации xml файла в *.epf.

 

 

При этом, если Вы попробуете сделать замену тегов XML и загрузку через Конфигуратор вручную, то работать будет через раз - причину мне не удалось найти. И да ошибки, которые могут появляться при ручной загрузке в Конфигураторе не оказывают влияния на успешность конвертации при работе через скрипты.

 

 
 
Обновление продуктовой базы

Запуск обновления в справочнике продуктовой базы производится путем вызова скрипта с передачей ему на вход параметров запуска 1С, с указанием пути к файлу новой версии обработки/отчета .epf, .erf и КодаОбработки в справочнике ДополнительныеОбработки (название измените для своей конфигурации), которую нужно обновить.

Примечания:

  • Проверка что загружаемая версия больше текущей не рассматривается здесь для упрощения, можно легко реализовать дополнительно.
  • У служебного пользователя, под которым в продуктовую База1Предприятие будут загружаться обновления, нужно убрать ограничение “Защита от опасных действий” для предотвращения лишних сообщений.
 
Что в приложенном файле:
  1. Dockerfile - файл для запуска контейнера Jenkins в Докере
  2. Jenkinsfile - Groovy скрипт для Jenkins Pipeline, включая рассылку в мессенджер после выполнения всех стадий
  3. install_plugins.sh - скрипт установки плагинов Jenkins
  4. basic-security.groovy - задание логина/пароля для входа в Jenkins
  5. 1_updateConf.cmd - скрипт обновления конфигурации 1С из хранилища и выгрузки в файлы XML
  6. 2_getVersionFile.ps1 - получает из файла XML версию обработки/отчета для различных интересных сценариев работы
  7. 3_convertFile.ps1 и 3_ReplaceXML.vbs - заменяет теги в XML файлах и конвертирует их в *.epf, *.erf
  8. 4_insert.ps1 - скрипт запуска 1С для обновления обработки в продуктовой базе
  9. UploaderSimple.epf - Обработка 1С, которая вызывается при запуске 1С:Предприятия для обновления версии в целевой продуктовой База1Предприятие (имя справочника в обработке адаптируйте под свою конфигурацию).
 
В заключение

Спасибо, что дочитали до конца. CI/CD для 1С это спасение от рутины и ошибок. С этим конвейером вы сэкономите время, повысите надёжность и ускорите разработку. Несмотря на то, что в примерах я использовал Jenkins и Java-агент, основная сила решения заключается в "чистых" скриптах. Всё, что вам нужно это командная строка и 1С. Никаких EDT, Git, БСП, тяжёлых зависимостей, плагинов, других языков или "кошмаров библиотек": вы можете запускать CI/CD-конвейеры просто по расписанию. Подход полностью конфигурируемый, легко адаптируется под любую инфраструктуру и сохраняет простоту сопровождения. Идеально подходит для устаревших конфигураций с обычными формами и не требует от команды глубоких знаний DevOps.

В дополнение, подробно описан нестандартный процесс конвертации XML-файлов в бинарные форматы 1С (*.epf, *.erf) с заменой тегов, что позволяет автоматизировать задачи, которые обычно требуют ручного вмешательства. Этот подход может быть полезным даже для тех, кто уже использует другие CI/CD-системы.

Скачивайте архив с готовыми скриптами и настройками - там всё готово для старта. Если статья была полезна, ставьте плюс, чтобы не потерять.

Возможно Вас заинтересуют другие публикации:

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 10.3, релизы 10.3.88.3
  • Управление торговлей, редакция 11, релизы 11.5.22.63

1C CI/CD Автоматизация разработки 1С Jenkins и 1С Непрерывная интеграция 1С Развёртывание обработок 1С XML в EPF XML в ERF Внешние обработки 1С Автоматизация бизнес-процессов DevOps 1C

См. также

Тестирование QA DevOps и автоматизация разработки Программист Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.173.37.

2160 руб.

20.01.2022    9176    36    0    

17

DevOps и автоматизация разработки Системный администратор Программист Стажер Бесплатно (free)

Готовим контейнеризированный Microsoft SQL Server в среде Windows

23.05.2025    3124    SerVer1C    35    

30

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) EDT Программист Платформа 1С v8.3 Бесплатно (free)

В процессе использования 1С:EDT и репозитория Git для обновлений релизов доработанных конфигураций появилась необходимость в регулярной загрузке конфигураций от вендора 1С в Git-репозиторий. Описанное в статье решение позволяет автоматизировать эту операцию и может быть полезным специалистам, занимающимися обновлениями с использованием 1C:EDT+Git

21.05.2025    1775    ICL-Soft    3    

17

DevOps и автоматизация разработки Программист Платформа 1С v8.3 Бесплатно (free)

В проектной разработке часто возникают проблемы с однообразностью ландшафта, производительностью и быстрой разверткой инфраструктуры. Об одном из способов избежать или изолировать данные проблемы с помощью контейнеризации расскажем в статье.

18.09.2024    6386    antonov_av    6    

16

DevOps и автоматизация разработки Бесплатно (free)

Когда информационная база «весит» несколько десятков/сотен гигабайт, для разработки и тестирования обычно используют полную копию рабочей базы. Но если информационная база превышает несколько терабайт, такой подход сталкивается с нехваткой места на диске, долгой реструктуризацией, замедленной скоростью работы и другими проблемами, связанными с размером базы. В статье расскажем, как правильно готовить копии больших баз для разработки и тестирования.

28.08.2024    12094    yuraid    32    

61

DevOps и автоматизация разработки Программист Бизнес-аналитик Руководитель проекта Платформа 1С v8.3 1С:Документооборот Россия Бесплатно (free)

В данной инструкции рассмотрим процесс развертывания приложения на Python с использованием фреймворка Flask и Tesseract OCR в контейнере Docker. Узнаем, как использовать Tesseract в связке с Flask и осуществлять обращения к Tesseract для обработки изображений. Рассмотрим пример обращения к приложению Docker из 1С, в том числе для замещения CuneiForm в старых конфигурациях 1С:Документооборот версии 1.4 и ниже.

20.08.2024    5075    romanichenko    2    

9

DevOps и автоматизация разработки Тестирование QA Программист Пользователь Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Зарплата и Управление Персоналом 3 и версии КОРП: 3.1.30.178.

3240 руб.

05.08.2024    2554    17    1    

11

DevOps и автоматизация разработки OneScript Системный администратор Программист Стажер Бесплатно (free)

Рассмотрим создание самоформирующейся документации через комментарии и соглашения: как это сделать и зачем, с описанием полного цикла от исходников конфигурации до странички в интернете

17.06.2024    9884    bayselonarrend    5    

63
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ImHunter 338 09.06.25 14:37 Сейчас в теме
Есть ли что-то про расширения?
3. da_1c 190 09.06.25 18:58 Сейчас в теме
(1) Не используем расширения
2. partizand 140 09.06.25 18:28 Сейчас в теме
Неясно, почему разработчики сразу не делают внешние обработки. Их как раз можно положить в гит. Зачем лишняя конвертация.
4. da_1c 190 09.06.25 19:01 Сейчас в теме
(2) Не понимаю вопрос. Вы предлагаете класть в гит бинарники 1с?
5. partizand 140 09.06.25 20:08 Сейчас в теме
Я предлагаю делать сразу то, что будет в рабочей базе - внешние обработки. Это сильно упростит процесс развертывания.
А внешние обработки уже можно закатывать в гит. Есть там такой пункт "выгрузить в файлы" (если вы не в курсе).
А то выглядит это все как автоматизация хаоса.
triviumfan; +1 Ответить
6. triviumfan 102 10.06.25 00:47 Сейчас в теме
(5) тоже не понял зачем эта дополнительная конвертация
7. Peltik2 10.06.25 01:02 Сейчас в теме
(5) если автоматизировать бардак, то получится автоматизированный бардак :)
8. da_1c 190 10.06.25 02:09 Сейчас в теме
(5) Внешние обработки в Git это хорошо, но без гарантированного захвата объектов в хранилище это превращается в хаос, особенно при работе распределённой команды с разницей во времени до 8 часов.
Git не решает конфликтов, если объект не заблокирован, и в таких случаях возникают накладки и теряются изменения. Поэтому мы используем захват объекта в хранилище и храним обработки в отдельной базе через конфигуратор.
А как у вас решается ситуация, если программист просто забудет выгрузить внешнюю обработку в Git? Или если 10 человек одновременно зальют по одной своей фиче в 1 обработку? В таких случаях разруливать будет сложновато.
Для нашей команды текущая схема надёжнее, управляемее и проверена годами использования.
9. yukon 154 10.06.25 08:23 Сейчас в теме
(8) Все отлично разруливается. Количество разработчиков тут не главное.

В хранилище единицей изменения является объект, в git строка, что на порядки (в сотни и тысячи раз) снижает вероятность конфиликта
А при правильном построении процесса разработки и структурировании кода вообще снижает эту вероятность до единичных значений.
Оставьте свое сообщение