В командной разработке на 1С часто возникает ситуация: несколько программистов работают над разными задачами. Одна часть доработок уже готова и прошла внутреннюю проверку, а другая — еще "сырая" или находится на длительном тестировании у пользователей. При этом возникает необходимость обновить рабочую базу, включив в нее только готовый и проверенный функционал. Как правильно организовать этот процесс, чтобы не перенести в "продакшн" незавершенные изменения и не создать хаос? Рассмотрим несколько подходов, от классических до более современных.
Это самый распространенный и надежный "классический" подход, который позволяет физически разделить среды разработки, тестирования и эксплуатации. Идея заключается в создании нескольких независимых хранилищ конфигурации для каждого этапа.
dev в хранилище test. Чаще всего это делается через выгрузку конфигурации в файл (.cf) и последующую загрузку с объединением. К базе, подключенной к этому хранилищу, получают доступ тестировщики и ключевые пользователи. Это изолированная среда для проверки функционала перед выпуском.test, они таким же образом переносятся в "чистовое" хранилище prod. Рабочая база обновляется только из этого хранилища. Такой подход гарантирует, что в продуктивную среду попадает исключительно оттестированный и одобренный функционал.Преимущества:
dev, тестировщики в test.Недостатки:
Современная платформа 1С предоставляет инструменты, позволяющие избежать многих сложностей с объединением конфигураций. Основной из них — механизм расширений.
Разработка в расширениях:
Вместо изменения основной конфигурации, новый функционал разрабатывается в виде отдельного расширения. Этот подход идеально решает нашу проблему:
"Флаги функциональности" (Feature Toggles):
Этот метод предполагает, что новый код уже находится в основной конфигурации, но его выполнение заблокировано специальными переключателями. Это могут быть:
ИспользоватьНовыйМеханизмРасчетаСебестоимости).Тестировщики получают права или меняют настройку для включения нового функционала в своей базе, в то время как для обычных пользователей он остается выключенным. После успешного тестирования флаг включается для всех. Этот подход хорош тем, что кодовая база остается единой, и не возникает проблем слияния.
Этот подход больше про организацию процесса, чем про технические средства. Он хорошо работает в небольших командах.
Схема работы выглядит так:
.cf и устанавливает обновление на "продакшн", а также закрывает соответствующие задачи в системе трекинга.Этот метод вводит дополнительный контроль и единую точку ответственности за обновления, что снижает риски человеческой ошибки.
Несмотря на то, что нативное хранилище 1С привычно многим, оно имеет ряд ограничений, особенно в сложных проектах. Система контроля версий Git, пришедшая из мира классической разработки, предлагает гораздо большую гибкость. Для работы с 1С конфигурацию выгружают в исходные текстовые файлы, которые и помещаются в Git-репозиторий.
Ключевая идея — ветвление (branching). Процесс строится по схеме GitFlow (или ее упрощенным аналогам):
Как это решает проблему "зависших" задач?
Очень просто. Задача, которая ушла на долгое тестирование, просто "живет" в своей feature-ветке. Она не сливается в `develop` до тех пор, пока не будет полностью одобрена. В это же время другие, более срочные задачи, разрабатываются в своих ветках, проходят ревью, сливаются в `develop` и уходят в релиз. Изоляция веток — главное преимущество Git.
Когда задача готова, создается Pull Request (Запрос на слияние) — это формальный запрос на вливание изменений из ветки задачи в ветку `develop`. Это точка для обязательного code review (проверки кода другим разработчиком) и запуска автоматических тестов (с помощью инструментов вроде Vanessa Automation), что повышает качество кода.
Итог:
Выбор метода зависит от размера команды, сложности проекта и готовности осваивать новые инструменты. Для небольших проектов отлично подойдут схемы с несколькими хранилищами или выделенным интегратором. Для крупных и долгосрочных проектов, где важна гибкость, параллельная работа и высокое качество кода, переход на Git и DevOps-практики является стратегически верным решением.