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

11.08.21

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

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

Файлы

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

Наименование Скачано Купить файл
Как ускорить перенос изменений между хранилищами 1С?:
.cf 33,72Mb ver:1.0.1.5
19 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 или что можно было бы улучшить

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

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

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

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

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

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

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

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

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

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    14331    124    0    

88

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.3 1С 8.5 Бесплатно (free)

В прошлой статье у ERP оставалось 89 отказов загрузки, у ЗУП — 19. Теперь обе конфигурации совпали с эталонами, а собранные файлы прошли круг через платформу. Развертка выделена в открытый репозиторий cf-unwrapper: библиотека на Rust и консольная утилита. Показываю результаты, объясняю границы «100%» и приглашаю к проверкам и развитию проекта.

02.11.2026    337    oyti    1    

1

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

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

02.11.2026    685    vanya_gonchar    2    

6

Файловый обмен (TXT, XML, DBF), FTP DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.5 Бесплатно (free)

В прошлой статье я выгрузил Бухгалтерию в XML байт в байт и спросил, на чем проверить дальше. Вы ответили: ERP, старые релизы, зарплата. Прогнал пять конфигураций, от клиента ЭДО до ERP на 120 тысяч файлов. Рассказываю, что сломалось после Бухгалтерии, почему эталону платформы нельзя верить на слово, как выгрузить одну конфигурацию в формат трех версий платформы - и почему cf-конвертер становится отдельным продуктом, Разверткой.

02.11.2026    452    oyti    2    

3

Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Стажер 1С 8.3 Абонемент ($m)

Два разработчика, по десять правок «Нано-УТ 2.0» в git: длинные ветки против слияния после каждой правки, 22 слияния с загрузкой main в чистую базу. ConfigDumpInfo.xml конфликтовал в 11 слияниях из 11, построчное объединение ломало XML и модули. Показываю, что убрать строкой в .gitattributes, что разбирать целыми вставками и как увидеть конфликты до слияния. Прилагаются инструмент с 38 тестами и материалы опыта.

1 стартмани

29.10.2026    432    Ninel_S    3    

-1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С 8.5 Бесплатно (free)

Выгрузка типовой Бухгалтерии в XML через базу занимает больше четырёх минут. Я написал движок, который читает файл конфигурации напрямую и выгружает его за 35 секунд, совпадая с выгрузкой платформы байт в байт во всех 90 385 файлах. Загрузка обратно тоже работает: круг через платформу совпадает полностью. Рассказываю, как ускоряли, как проверяем и что при загрузке XML теряет сама платформа. А в конце спрашиваю, нужно ли это кому-то, кроме меня, и на какой конфигурации проверить следующей.

27.10.2026    1016    oyti    20    

16

Рефакторинг и качество кода Групповая разработка (Git, хранилище) Разработчик 1С 8.3 Абонемент ($m)

Скрипт на Python посчитал метрики 2711 общих модулей УТ 11.5: 26 модулей длиннее 10 000 строк кода. Проверила счёт на синтетических модулях и показала, где рейтинг ошибается: самый длинный модуль оказался в нём ниже девяти коротких. Для разработчиков 1С. В архиве скрипт, тесты и журналы.

1 стартмани

26.10.2026    467    Ninel_S    8    

-3

Групповая разработка (Git, хранилище) Разработчик 1С 8.3 Абонемент ($m)

Общие модули 1С вынесла в подмодуль Git и подключила к двум проектам на выгрузке «Нано-УТ» и платформе 8.3.27. Подмодуль на весь каталог CommonModules загружается; клон без --recursive даёт код 1, а забытый указатель и смена ветки молча дают базу не той версии. Переименованная процедура прошла /CheckModules при 28 вызовах. В архиве скрипты, диагностика подмодулей, тесты и журналы.

1 стартмани

26.10.2026    442    Ninel_S    0    

-1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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. Да, механизм переносит объекты целиком. Но у вас есть возможность путем сравнения с конфигурацией ИБ точечно отметить те изменения модулей, которые нужно оставить.
Для отправки сообщения требуется регистрация/авторизация