В современной разработке на платформе 1С:Предприятие вопрос выбора системы контроля версий (VCS) стоит особенно остро. С одной стороны, мы имеем проверенное годами Хранилище конфигурации, которое интегрировано в конфигуратор «из коробки». С другой — Git, мировой стандарт разработки ПО, предлагающий гибкость, ветвление и возможности автоматизации. Разберем подробно, какой инструмент лучше подходит под ваши задачи, и как организовать рабочий процесс в каждом из случаев.
Для начала проанализируем ключевое различие в логике работы этих систем. В 1С-хранилище используется пессимистическая блокировка (захват объекта). Это означает, что если один разработчик захватил ОбщийМодуль, второй не сможет внести в него изменения, пока первый их не применит. Это исключает конфликты при слиянии, но сильно тормозит параллельную разработку в больших командах.
Git использует оптимистический подход. Несколько разработчиков могут одновременно править один и тот же файл. Конфликты решаются на этапе слияния (Merge). Рассмотрим подробнее, почему для 1С это стало возможным: благодаря механизму выгрузки конфигурации в файлы XML, Git может сравнивать изменения в текстовом виде и автоматически объединять их, если правки были сделаны в разных частях модуля.
Выясним причины, по которым многие команды до сих пор предпочитают классическое Хранилище:
1С:УПП или старых самописок Хранилище — единственный адекватный выбор, так как 1С:EDT (основной мост к Git) не поддерживает визуальный редактор обычных форм.Однако Хранилище имеет и критические недостатки, которые мы разберем далее: отсутствие нормального ветвления, невозможность провести полноценное код-ревью до попадания кода в общую базу и риск деградации (повреждения) файла базы данных хранилища при большом объеме истории.
Проанализируем возможности, которые открываются при переходе на Git, особенно при использовании 1С:EDT или инструментов автоматизации:
master, правите ошибку и возвращаетесь к своей задаче.git blame позволяют мгновенно увидеть, кто и когда изменил конкретную строку кода три года назад и к какой задаче в Jira это относилось.Vanessa-Automation) и проверку кода (SonarQube) при каждом пуше в репозиторий.Если вы не готовы переходить на тяжелую EDT, рассмотрим схему работы через стандартный конфигуратор. Алгоритм действий выглядит следующим образом:
commit).pull, а затем в конфигураторе выбираем Загрузить конфигурацию из файлов.Важный нюанс: Начиная с платформы 8.3.10, выгрузка стала инкрементальной. Если использовать параметры командной строки, 1С выгрузит только те объекты, которые изменились. Это сокращает время процесса с 20 минут (для ERP) до 1-2 минут.
Пример команды для автоматизации выгрузки через cmd:
"C:\Program Files\1cv8\8.3.x.x\bin\1cv8.exe" DESIGNER /F "D:\Bases\MyBase" /N "Admin" /P "Pass" /DumpConfigToFiles "D:\GitRepo\src" -Update
Рассмотрим более современный вариант. 1С:Enterprise Development Tools (EDT) — это IDE на базе Eclipse, где работа с Git является нативной. Здесь нет понятия «выгрузка в файлы» как отдельного мучительного шага. Вы просто правите код, и EDT сама понимает, какие файлы изменились.
В этом сценарии процесс слияния веток (Merge) становится визуальным и удобным. Вы видите конфликты в коде и можете выбрать, какой вариант оставить. Это идеальный вариант для проектов на Управляемых формах.
Разберем ситуацию, когда команда привыкла к Хранилищу, но руководство хочет внедрить CI/CD и контроль качества. Для этого применяется инструмент gitsync (на базе OneScript). Процесс выглядит так:
Это позволяет использовать плюсы обеих систем, хотя и сохраняет проблему блокировок объектов в Хранилище.
Посмотрим на ситуацию со стороны масштаба проекта и типа конфигурации:
Выбирайте Хранилище, если:
Переходите на Git (EDT), если:
В заключение отметим, что переход на Git — это не просто смена инструмента, а изменение культуры разработки. Это требует дисциплины в написании комментариев к коммитам и понимания принципов работы распределенных систем. Однако результат в виде стабильного кода и отсутствия очередей за захватом объектов оправдывает все затраты на внедрение.