Можно ли одну конфигурацию 1С подключить к двум хранилищам и как правильно организовать Dev-Test-Prod?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В процессе командной разработки на платформе «1С:Предприятие» часто возникает задача разграничения контуров. Типичный сценарий: разработчик завершает задачу в тестовом контуре, тестировщик проверяет функционал, и после успешной проверки код должен попадать в рабочую (продакшн) базу. Возникает логичный вопрос: можно ли подключить одну и ту же информационную базу сразу к двум хранилищам — тестовому и продакшн? В этой статье мы подробно разберем технические ограничения платформы и рассмотрим лучшие практические схемы организации многоконтурной разработки.

Почему физически нельзя подключить одну базу к двум хранилищам?

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

  1. Точный сетевой или локальный адрес (путь) к хранилищу конфигурации.
  2. Уникальный идентификатор (UUID) связи между базой и хранилищем.
  3. Сведения о захваченных объектах конкретным пользователем в текущий момент.

Если попытаться поочередно отключать базу от одного хранилища и подключать к другому, мы неизбежно столкнемся со следующими критическими проблемами:

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

Решение 1. Классическая схема «Dev – Test – Prod» с ручным переносом через .cf

Этот подход не требует сторонних инструментов и базируется на стандартных возможностях Конфигуратора 1С. Мы разделяем процесс разработки на три независимых контура, у каждого из которых есть своя пара «База + Хранилище»:

  1. Контур разработки (Dev): Здесь программисты ведут активную работу в своих локальных базах, которые подключены к единому хранилищу разработки (Хранилище Dev).
  2. Контур тестирования (Test): Тестовая база подключена к Хранилищу Test. Сюда попадают изменения для проверки тестировщиками или аналитиками.
  3. Контур релиза (Prod): Рабочая база, которая обновляется только из Хранилища Prod.

Рассмотрим по шагам процесс переноса изменений по этой схеме:

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

Решение 2. Автоматизация переноса изменений с помощью скриптов и CLI

Чтобы избавить разработчиков от рутины ручного сравнения и объединения, этот процесс можно автоматизировать. Конфигуратор 1С поддерживает запуск из командной строки с параметрами. Мы можем написать скрипт на языке OneScript или использовать обычный командный файл Windows (bat/cmd), который будет выполнять перенос автоматически.

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

Шаг 1. Выгрузка конфигурации из базы разработки в файл dev_dump.cf:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /F "C:\DB\DevBase" /N "Admin" /P "Pass" /DumpCfg "C:\CF\dev_dump.cf"

Шаг 2. Подключение к тестовой базе, автоматический захват измененных объектов в тестовом хранилище, сравнение и объединение с файлом dev_dump.cf, а также последующее обновление конфигурации базы данных:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" DESIGNER /F "C:\DB\TestBase" /N "Admin" /P "Pass" /ConfigurationRepositoryF "C:\Repositories\TestRepo" /ConfigurationRepositoryN "RepoAdmin" /ConfigurationRepositoryP "RepoPass" /MergeCfg "C:\CF\dev_dump.cf" /UpdateDBCfg

Использование подобных скриптов позволяет значительно сократить время на рутинные операции. Для более продвинутой автоматизации можно использовать готовые утилиты, такие как «Менеджер переноса изменений между хранилищами», доступные на профильных сообществах разработчиков 1С.

Решение 3. Обновление продакшена через файлы поставки

Этот метод часто применяется в крупных проектах и корпоративном секторе. Вместо прямого переноса объектов метаданных между хранилищами используется механизм создания файлов поставки и обновлений (файлы .cfu или готовые дистрибутивы обновлений).

Проанализируем этот сценарий подробнее:

  1. Хранилище разработки используется для накопления всех изменений. На его основе создается конфигурация-поставщик.
  2. При выпуске релиза создается файл обновления поставки.
  3. Продакшн-база обновляется штатным образом через меню «Поддержка» -> «Обновить конфигурацию», используя созданный файл обновления.

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

Решение 4. Кардинальное решение — переход на Git и 1С:EDT

Если ваша команда разработки постоянно страдает от монопольных блокировок объектов в хранилище (например, когда несколько разработчиков одновременно ждут освобождения общих ролей, общих модулей или планов видов характеристик), классическое хранилище 1С становится узким горлышком. В этом случае единственным надежным системным решением является переход на распределенную систему контроля версий Git и использование среды разработки 1С:EDT (Enterprise Development Tools).

Переход на Git полностью решает озвученные проблемы за счет следующих механизмов:

Гибридный сценарий работы (утилита gitsync)

Если ваша команда пока не готова полностью отказаться от привычного Конфигуратора 1С и перейти на требовательную к ресурсам компьютера среду EDT, можно использовать гибридный подход с утилитой gitsync.

Схема работы выглядит так:

  1. Разработчики продолжают кодить в обычном Конфигураторе 1С, подключенном к стандартному хранилищу.
  2. Специальный серверный процесс с запущенной утилитой gitsync непрерывно отслеживает появление новых версий в хранилище 1С.
  3. При появлении новой версии утилита автоматически конвертирует конфигурацию в текстовые файлы (выгрузка исходных кодов) и выполняет коммит в Git-репозиторий.

Это позволяет получить полноценную историю изменений в Git, проводить код-ревью в веб-интерфейсе (например, в GitHub или GitLab) и запускать автоматические тесты, сохраняя привычный процесс работы в Конфигураторе.

Резюме и рекомендации

Подводя итог, выделим ключевые тезисы для выбора оптимальной стратегии организации разработки:

← На главную