Как ускорить перенос изменений между хранилищами 1С?

11.08.21

Разработка - Групповая разработка (Git, хранилище)

Зачастую в рамках одной системы нам приходится работать с двумя хранилищами - хранилищем разработки (ХР) и хранилищем обновления (ХО). И перенос изменений из ХР в ХО, по крайней мере у меня, зачастую превращается в боль - нужно сделать много рутинных операций, в ходе которых приходится тратить время на ожидание (например, на этапах сохранения конфигурации в файл или сравнения, объединения конфигураций с файлом). Поэтому в один прекрасный день я сел и написал инструмент по автоматизации этого переноса.

Файлы

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

Наименование Скачано Купить файл
Как ускорить перенос изменений между хранилищами 1С?:
.cf 33,72Mb ver:1.0.1.5
18 3 000 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Предпосылки автоматизации

На момент написания статьи в моем направлении работало порядка 70 сотрудников - специалистов, ведущих специалистов и их руководителей, которые занимались разработкой на платформе 1С. Каждый из них ежедневно проводил разработку, тестирование и внедрение функционала.

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

Вот последовательность типовых операций, которые нужно было выполнить сотруднику:

  1. В Источнике: Обновить конфигурацию из хранилища. Время этого шага - от 1 до 20 минут (в зависимости от нагрузки на хранилище, оборудование и объема изменений).

  2. В Источнике: Сохранить конфигурацию в файл. Время этого шага - от 5 до 15 минут.

  3. В Приемнике: Обновить конфигурацию из хранилища. Время этого шага - от 1 до 10 минут.

  4. В Приемнике: Захватить объекты в хранилище. Время этого шага измеряется количеством объектов и зависит от нагрузки на хранилище. Например, если нужно захватить 100 объектов и хранилище работает идеально, то время захвата составляет порядка 60 минут интенсивной ручной работы.

  5. В Приемнике: Обновить ИБ. Время этого шага - от 1 до 20 минут.

  6. В Приемнике: Сравнить/объединить конфигурацию с файлом, выгруженным на шаге 2. Время этого шага от 10 до 60 минут.

  7. Просмотр всех изменений и отметка галочками по каждому объекту, что конкретно нужно перенести. Время этого шага измеряется количеством объектов и сложностью изменений. Например, если нужно сравнить между собой 100 объектов, то время сравнения составляет порядка 2 часов интенсивной ручной работы.

  8. В Приемнике: Обновить ИБ. Время этого шага - от 1 до 20 минут.

  9. В Приемнике: Выполнить синтаксическую проверку модулей. Время этого шага - от 1 до 10 минут.

  10. В Приемнике: Выполнить помещение изменений в хранилище. Время этого шага - от 1 до 30 минут. В статистику не включены такие ситуации, как удаление объектов из хранилища, т.к. эти операции довольно редкие. Но если они используются, то помещение может идти часами.

Идея возникла в том, чтобы ускорить этот процесс:

  1. За счет автоматизации рутинных операций. Сотруднику остается указать базы источника и получателя, выбрать объекты для переноса, а после переноса - проверить результат.

  2. За счет использования пакетного режима 1С:Конфигуратора. Некоторые шаги в этом режиме работают значительно быстрее.

Те сотрудники, кто начал использовать инструмент, получили следующие эффекты:

  1. Трудозатраты на выполнение рутинных операций сократились от 20% до 90%. Вот конкретный пример: в рамках задачи обновления "1С:Библиотеки стандартных подсистем" потребовалось поместить изменения в два отдельных хранилища тестовой среды. Объектов было порядка 1000. В случае ручного переноса на каждое помещение потребовалось бы около 6 часов непрерывной работы сотрудника. В случае автоматизации время каждого переноса составило не более 30 минут.

  2. Снизился риск “человеческого фактора” что-нибудь забыть перенести.

Итак, ниже описана краткая инструкция по использованию этого инструмента.

 

Начинаем работу

Развертывание базы

Инструмент представляет из себя небольшую конфигурацию, разработанную на базе "1С:Библиотеки стандартных подсистем" от "Фирмы 1С". Базу лучше развернуть в файловом режиме. Для корректной работы необходимо использовать платформу не ниже 8.3.10.

Почему файловый режим? Причин несколько:

  1. Большая часть операций требуют прямого доступа к конфигуратору. А это значит, что для выполнения синхронизации придется либо закрывать конфигуратор базы источника и базы приемника, что не всегда бывает удобно; либо сделать отдельные копии баз источника и приемника в клиент-серверном варианте работы.

  2. Для загрузки метаданных из базы потребуется установить COM-соединение, а для него важно, чтобы версии клиента и сервера совпадали.

  3. Интерактивные операции, такие как “Запуск Конфигуратора”, в клиент-серверном варианте работают некорректно - конфигуратор откроется на сервере :) Руки починить это пока не дошли.

 

Создание источника, приемника и сценария синхронизации

Для примера рассмотрим классический сценарий переноса изменений из хранилища разработки в хранилище обновления. Запускаем режим Предприятия. На рабочем столе появляется окно “Синхронизации хранилищ”.

 

 

Создаем базы для синхронизации.

 

 

 

Для удобства дальнейшей работы прописываем сценарий синхронизации.

 

 

Каждый шаг процесса имеет собственную настройку атрибутов.

 

 

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

Атрибут "Требует список объектов" означает, что указанный шаг для своего выполнения потребует указание списка объектов. Если список объектов указан не будет, то сценарий будет остановлен.

 

Настройка сценария

В форме “Синхронизация хранилищ” заполняем таблицу шагов (кнопка "Заполнить").

 

 

Задаем общие параметры сценария (гиперссылка "Установить параметры сценария"). По умолчанию каждый шаг наследует общие параметры сценария, но если это необходимо, то параметры конкретного шага можно поменять. Здесь реализовано четыре вкладки:

  • Выбранные объекты

  • Помещение в хранилище

  • Комплект поставки

  • Параметры запуска

 

Выбор объектов метаданных

Первая вкладка позволяет установить отбор объектов в шагах "Захватить объекты в хранилище", "Объединить конфигурацию с файлом", "Отпустить объекты в хранилище" и "Поместить объекты в хранилище".

Есть несколько способов подбора объектов:

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

 

2) Подбор по дереву метаданных.

Форма подбора открывается по кнопке "Отобрать по дереву метаданных". В открывшейся форме потребуется указать базу-источник, из которой будут взяты метаданные, и нажать кнопку с пиктограммой подключения. Альтернативный вариант - загрузить метаданные базы заранее и обращаться к ним.

 

 

После некоторого времени в форме отобразится дерево метаданных базы-источника. Здесь можно отметить галками нужные объекты.

 

 

Если при подключении у вас возникает ошибка “Недопустимая строка с указанием класса”, то это значит, что на вашем ПК не установлена библиотека comcntr.dll. Чтобы установить библиотеку, нужно под учетной записью администратора через cmd выполнить вот такую команду:

regsvr32 "C:\Program Files\1cv8\8.3.15.1869\bin\comcntr.dll" -i

 

3) Подбор по списку.

Этот вариант доступен по кнопке с пиктограммой OpenOffice Calc. Здесь можно задать произвольный список объектов. При переносе объекты будут стыковаться по полному имени.

 

 

4) Подбор по подсистемам.

Этот вариант доступен по кнопке с пиктограммой подсистемы. Объекты будут отбираться в иерархии выбранных подсистем.

 

5) Подбор по истории помещения в хранилище.

Форма подбора открывается по кнопке "Отобрать по коммитам". Открывшаяся форма позволяет выбрать объекты по истории помещения в хранилище базы-источника. В появившемся окне нужно выбрать начальный и конечный номер версии коммита и нажать кнопку "Выбрать коммиты".

 

 

Настройка помещения в хранилище

На этой вкладке можно указать комментарий к помещению, а также оставить объекты захваченными, если это требуется.

 

 

Настройка создания комплекта поставки

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

 

 

Установка параметров запуска

На этой вкладке есть несколько галок. Они применяются на шаге "Запустить Конфигуратор" и "Запустить Предприятие".

 

 

Сохранение изменений

Для сохранения параметров синхронизации нужно нажать на кнопку "Сохранить".

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

 

 

Выполнение сценария

Внимание! Помещать изменения в хранилище без предварительной проверки глазами не рекомендуется.

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

Еще одна причина проверить глазами - человеческий фактор. Вдруг кто-то из разработчиков нарушил регламент и не поместил свои изменения в ХО, а объекты в ХР отпустил? В этом случае его изменения будут видны на этапе сравнения-объединения конфигураций.

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

 

Запуск сценария

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

 

 

Состояние выполнения отображается в колонке "Состояние". Если на шаге произошла ошибка, то сценарий будет прерван.

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

Некоторые шаги, такие как "Сравнить конфигурацию с файлом (только просмотр)" могут возвращать результат в виде отчета.

 

Сохранение настроек сценария

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

Для сохранения и восстановления настроек предусмотрены вот эти кнопки командной панели.

 

 

ToDo или что можно было бы улучшить

В текущей реализации пока не хватает:

  • Древовидного сценария для возможности параллельного выполнения его шагов.

  • Возможности не закрывать хранилище, когда получаешь историю его изменения. Но это можно обойти путем создания отдельного пользователя хранилища.

  • Возможности не закрывать Конфигуратор источника и приемника в процессе выполнения сценария.

  • Возможности использовать интерактивные шаги в клиент-серверном варианте работы базы.

  • Инструмент не тестировался на базе с расширениями и хранилищами, к которым они подключены. Здесь могут быть нюансы.

Пожелания по доработке пишите в комментариях.

Вступайте в нашу телеграмм-группу Инфостарт

Конфигурация автоматизация переноса изменений между хранилищами ускорение работы

См. также

DevOps и автоматизация разработки Linux HighLoad оптимизация Групповая разработка (Git, хранилище) Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С 8.3 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Беларусь Россия Казахстан Абонемент ($m)

Системный анализ архитектурных границ масштабирования учетных систем «1С:Предприятие 8.3» под управлением PostgreSQL в ОС Linux. Формулирование инженерной методологии сквозного проекта «Торговый контур», определение измеримых целевых показателей (p95, MTTR, APDEX) и стратегии поэтапной модернизации эксплуатационного контура без остановки промышленных учетных процессов.

1 стартмани

вчера в 17:42    114    Ninel_S    0    

1

Linux Групповая разработка (Git, хранилище) Администрирование СУБД Системный администратор Программист 1С 8.3 Абонемент ($m)

Декларативный pipeline в GitHub Actions, тонкости лицензирования в Docker (--net=host), изоляция RUN_ID и интеграция со сборочным конвейером 1C:SRE-Suite. Вторая часть практического руководства (https://infostart.ru/public/2779597): от первого коммита до детерминированного синтаксического гейта на headless-раннере Linux

1 стартмани

03.09.2026    582    Ninel_S    0    

3

DevOps и автоматизация разработки Тестирование QA Групповая разработка (Git, хранилище) Программист 1С:Предприятие 8 Бесплатно (free)

Четыре года в интеграторе я работал с git и EDT. Git после хранилища полюбил сразу: видно, кто и что менял. С EDT сложнее: тормозит, ошибки при обновлении ERP, автономный сервер внутри него работает только с файловой базой. На новой работе команда захотела перейти на git, я развернул EDT, и оно на второй день разрушило проект при загрузке расширения. Тогда я решил дать команде git с привычным Конфигуратором и инструмент, который за минуту доносит коммит до базы через ibcmd, вместо получасовой загрузки из файлов. На новой работе разрешили ИИ, и я написал это приложение с его помощью: от чтения документации и первого ТЗ до идей в электричке. Впервые за годы снова почувствовал себя творцом, а не закрывателем задач. По дороге приросли выгрузка, объединение и проверка конфигурации по коммитам, YAxUnit и режим MCP-сервера. В статье: схемы, скриншоты, грабли и честный список ограничений. Ссылки пока нет: хочу понять, нужно ли это кому-то, кроме меня.

03.09.2026    8814    KatanaDragon511    26    

35

Linux Групповая разработка (Git, хранилище) Администрирование СУБД Системный администратор Программист 1С 8.3 Бесплатно (free)

Пакетный запуск Конфигуратора 1С на Linux таит опасную ловушку: при критических ошибках утилита DESIGNER завершается с кодом возврата 0 - «всё хорошо». Дефект уходит на продуктив. Мы открываем проект 1C:SRE-Suite - набор проверенных инструментов для надёжной эксплуатации 1С на Linux: • пятислойный сборочный скрипт с защитой от False Success (BOM, кодировки, lock-файлы, diff с Git) • Мягкая ротация процессов "rphost" через RAS API без обрыва сеансов • EDT ; Конфигуратор: CLI-мост для CI/CD на Node.js • Готовые конфиги logcfg.xml и nethasp.ini для боевого сервера • systemd-шаблоны для фонового мониторинга кластера Проект в активной разработке, лицензия MIT. Ждём ваших тест-репортов и PR.

03.09.2026    573    Ninel_S    0    

1

Групповая разработка (Git, хранилище) EDT Программист 1С:Предприятие 8 Россия Бесплатно (free)

Синхронизируйте свой проект EDT с хранилищем конфигурации так же легко, как в git клиенте. По кнопке Pull в проект EDT подтягиваются изменения из хранилища, по кнопке Push ваш коммит из git репозитория проекта EDT улетает в хранилище конфигурации.

09.07.2026    6330    DmitryShehovtsev    14    

26

Архивирование (backup) Групповая разработка (Git, хранилище) Системный администратор Программист Бесплатно (free)

Как дать возможность каждому разработчику 1С вести разработку, тестирование и оптимизацию на собственной полноразмерной копии базы и при этом не тратить миллиарды рублей и тысячи часов на развертывание тестового окружения, а так же экономить дисковое пространство? Расскажем о том, как с помощью инструмента Database Lab получать полноразмерные копии базы 1C на СУБД PostgreSQL за считанные секунды (даже в случае использования многотерабайтных баз).

15.12.2025    13133    nasonkin    19    

31
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. 7OH 90 11.08.21 10:58 Сейчас в теме
Есть пара вопросов ?
1. А не проще ли во второй базе всегда держать всё захваченным ?
2. Как можно автоматизировать процесс объединения, особенно когда переносить надо не всё ? Я так понимаю данный момент только для идеальных вариантов - когда спринт закончен и до релиза никто ничего не пушит ?
2. kabanoff 50 11.08.21 11:28 Сейчас в теме
(1)
1. Это возможно, если с хранилищем работает 1 человек. Но тогда и смысла в двух хранилищах нет. А вот если это команда из 10, 30, 50 человек, тогда держать всё захваченным просто не получится.
2. Это как раз-таки и описано в статье.
3. 7OH 90 11.08.21 12:08 Сейчас в теме
(2)
1. с релизным хранилищем и должен работать один. в него же переносятся наработки из дев, с которым работает сколько угодно человек.
2. не увидел, как забрать только одну процедуру из модуля объекта, а вторую объединить частично. Если корректно понял, то забирается объект (по имени) целиком, считая, что ничего лишнего не успели поместить.
MrsMastersan; +1 Ответить
4. kabanoff 50 11.08.21 12:33 Сейчас в теме
(3)
1. В нашей команде в релизном хранилище работают все и изменения переносят в него самостоятельно. В вашем случае можно также захватить только то, что нужно по задаче, чтобы не перенести ничего лишнего.
2. Да, механизм переносит объекты целиком. Но у вас есть возможность путем сравнения с конфигурацией ИБ точечно отметить те изменения модулей, которые нужно оставить.
Для отправки сообщения требуется регистрация/авторизация