Разработка и Конфигурация · 11 мин
GitLab и 1С: что это такое и зачем нужно разработчику
Разбираем, что такое GitLab применительно к 1С: хранение конфигураций в Git, выгрузка в XML через EDT, CI/CD, типовые сценарии и ошибки при внедрении.
Запрос «GitLab что это 1С» обычно означает одно из двух: либо человек встретил термин GitLab в вакансии или инструкции для 1С-разработчика, либо команда внедряет хранение конфигураций 1С в системе контроля версий и выбрала GitLab как площадку. GitLab — это веб-сервис для хостинга Git-репозиториев с инструментами совместной разработки: запросы на слияние, ревью кода, встроенная система непрерывной интеграции (CI/CD), трекер задач и wiki.
Сама по себе платформа 1С:Предприятие исторически хранит конфигурацию в бинарном формате (.cf) и использует собственное хранилище конфигурации. Git и GitLab напрямую с бинарным форматом работать не могут осмысленно: сравнить изменения двух версий .cf-файла стандартными средствами невозможно. Поэтому связка «GitLab + 1С» всегда строится через промежуточный шаг — выгрузку конфигурации в текстовые файлы (XML или формат EDT), которые Git уже умеет версионировать построчно.
Ниже разобрано, как устроена эта связка, какие инструменты нужны, как выстроить рабочий процесс и где чаще всего возникают проблемы.
Что такое GitLab и почему его применяют в проектах 1С
Git — распределённая система контроля версий: каждый разработчик хранит полную копию истории проекта локально, а общий сервер служит точкой синхронизации. GitLab добавляет к этому веб-интерфейс, управление доступом, merge request (запросы на слияние с ревью), пайплайны CI/CD и ведение задач. Существуют облачная версия и self-hosted вариант, который компания разворачивает на собственном сервере — для команд 1С это часто важно из-за требований к конфиденциальности кода и данных.
Для 1С-разработки GitLab решает несколько практических задач. Во-первых, параллельная работа нескольких разработчиков без классических блокировок хранилища конфигурации: каждый работает в своей ветке, а слияние происходит через merge request. Во-вторых, история изменений с привязкой к задачам и авторам — можно ответить на вопрос «кто, когда и зачем изменил этот модуль». В-третьих, автоматизация: запуск синтаксической проверки, сборки релиза и тестов при каждом push.
Альтернативы GitLab — GitHub, Bitbucket, Gitea или собственный Git-сервер без веб-обвязки. Функционально для 1С-контуров они близки; выбор обычно определяется тем, что уже принято в компании, и требованиями инфраструктуры.
Как 1С-конфигурация попадает в Git
Ключевая особенность: в Git складывают не .cf-файл, а текстовое представление конфигурации. Есть два основных пути. Первый — штатная выгрузка конфигуратора «в файлы XML» (иерархический формат выгрузки). Второй — работа через 1C:EDT (Enterprise Development Tools), где проект изначально хранится на диске в текстовом формате, спроектированном под системы контроля версий.
Формат EDT считается предпочтительным для Git: структура файлов в нём ориентирована на минимизацию конфликтов при слиянии, а среда разработки имеет встроенную интеграцию с Git (через EGit). Классическая XML-выгрузка из конфигуратора тоже применяется, особенно когда команда продолжает работать в конфигураторе, но она более громоздкая, и при слиянии изменений одного объекта разными людьми конфликты возникают чаще.
Для расширений конфигурации (.cfe) логика та же: расширение выгружается в исходники и версионируется отдельным репозиторием или отдельной папкой. Практика хранить в Git бинарные .cf/.cfe как единственный источник — антипаттерн: история превращается в набор нечитаемых бинарных блобов, репозиторий быстро разрастается, а сравнение версий невозможно.
Форматы выгрузки для Git
Рекомендуемый вариант для новых проектов: структура файлов дружественна к Git, встроенная интеграция с Git в среде разработки. Требует перехода команды на EDT.
Подходит, если команда остаётся в конфигураторе. Выгрузка запускается вручную или скриптом, конфликты слияния разрешаются сложнее.
Только как архив релизов рядом с исходниками. Как основной формат не подходит: нет диффов и ревью.
Типовой рабочий процесс разработчика
Базовый цикл выглядит так. Разработчик клонирует репозиторий, создаёт ветку под задачу (например, feature/1234-discount-calc), вносит изменения в конфигурацию через EDT или конфигуратор, выгружает изменения в исходники, делает коммит с осмысленным сообщением и отправляет ветку на сервер. Затем открывает merge request в GitLab, коллега проводит ревью, после одобрения ветка сливается в основную (develop или main).
Для команд на конфигураторе выгрузка в XML обычно автоматизируется пакетным запуском: конфигуратор умеет выгружать конфигурацию в файлы из командной строки. Это позволяет встроить выгрузку в скрипт pre-commit или в отдельную задачу, чтобы исходники в репозитории всегда соответствовали актуальной базе разработки.
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /F"C:\bases\dev" /N"dev" /DumpConfigToFiles "C:\repo\src" -Format HierarchicalОбратная операция — сборка .cf из исходников — выполняется командой загрузки конфигурации из файлов. Именно эта пара команд лежит в основе CI/CD: сервер сборки берёт исходники из GitLab, собирает конфигурацию и прогоняет проверки.
- 1Создайте пустой проект в GitLab и склонируйте его на рабочую машину
- 2Выгрузите конфигурацию в файлы (EDT-проект или XML-выгрузка конфигуратора) в папку репозитория
- 3Добавьте .gitignore: исключите служебные каталоги, временные файлы и бинарные артефакты
- 4Выполните коммит с понятным сообщением и отправьте ветку на сервер (git push)
- 5Проверьте в веб-интерфейсе GitLab, что файлы отображаются и читаются как текст
CI/CD в GitLab для 1С: что можно автоматизировать
GitLab CI/CD строится на файле .gitlab-ci.yml в корне репозитория и агентах-раннерах (GitLab Runner). Для 1С раннер обычно разворачивают на Windows-машине, где установлена платформа 1С:Предприятие, потому что сборка и проверка требуют исполняемых файлов платформы.
Типовые этапы пайплайна: сборка конфигурации из исходников, синтаксическая проверка модулей, запуск статического анализа (например, через BSL Language Server), прогон автотестов (vanessa-automation, xUnitFor1C или аналоги), публикация готового .cf как артефакта. Пайплайн запускается автоматически на каждый push или на merge request.
Практическая ценность — раннее обнаружение ошибок: если разработчик сломал модуль, пайплайн падает до слияния в основную ветку, а не на этапе обновления рабочей базы. Важно понимать ограничение: полноценный CI требует отдельной инфраструктуры (раннер, тестовые базы, лицензии на платформу для агентов) и времени на поддержку самих скриптов.
GitLab против хранилища конфигурации: что выбрать
Штатное хранилище конфигурации 1С остаётся рабочим вариантом для небольших команд: оно встроено в конфигуратор, простое в администрировании и не требует дополнительной инфраструктуры. Его ограничения — механизм захвата объектов (пока объект захвачен одним разработчиком, другой его менять не может), слабая поддержка ветвления и отсутствие встроенного код-ревью и CI.
Git-подход снимает эти ограничения, но добавляет сложности: нужна дисциплина ведения веток, умение разрешать конфликты слияния, инфраструктура для сборки. Переход оправдан, когда в команде больше двух-трёх разработчиков, есть параллельные доработки и потребность в ревью и автотестах. Для одиночного внедренца, поддерживающего одну типовую базу, GitLab чаще всего избыточен.
Существует и гибрид: основная разработка идёт через хранилище, а в Git регулярно выгружаются срезы конфигурации для истории и аудита. Это компромисс, который не даёт ревью и ветвления, но обеспечивает независимую от хранилища историю изменений.
Как выбрать подход
Типичные ошибки и риски при внедрении
Самая частая ошибка — хранение в репозитории бинарных файлов конфигурации и уверенность, что это «контроль версий». Вторая по частоте — отсутствие .gitignore, из-за чего в репозиторий попадают служебные файлы, кэши EDT и временные артефакты, раздувая историю и провоцируя ложные конфликты. Третья — прямой коммит в основную ветку всей командой, что сводит на нет идею ветвления и ревью.
Отдельный риск — расхождение между рабочей базой и репозиторием. Если разработчики меняют конфигурацию напрямую в базе, забывая выгружать изменения в исходники, репозиторий перестаёт отражать реальность, и собранный из него .cf отличается от боевого. Это лечится только дисциплиной и автоматической выгрузкой.
Безопасность тоже требует внимания: в репозитории не должно быть паролей от баз, ключей и строк подключения. Для секретов в CI используются переменные окружения GitLab (CI/CD variables), а не значения в коде пайплайна.
Как проверить, что связка работает
Текстовые файлы исходников, читаемые в веб-интерфейсе GitLab
Только .cf/.cfe или непонятные бинарные файлы
Из чистого клона репозитория собирается .cf, идентичный рабочей базе
Сборка падает или результат отличается от боевой конфигурации
Запускается на каждый push, проверки проходят или падают с понятной диагностикой
Пайплайн красный постоянно, на ошибки никто не реагирует
Коммиты привязаны к задачам, сообщения осмысленные
Коммиты «fix», «правки» без связи с задачами
Частые вопросы
Можно ли использовать GitLab без перехода на 1C:EDT?
Да. Конфигуратор умеет выгружать конфигурацию в XML-файлы пакетной командой, и эти файлы версионируются в Git. Минус — более тяжёлые конфликты при слиянии и необходимость автоматизировать выгрузку скриптами. EDT удобнее, но не обязателен.
Чем GitLab отличается от Git?
Git — это сама система контроля версий, инструмент командной строки. GitLab — серверная платформа поверх Git: веб-интерфейс, управление доступом, merge request, CI/CD, задачи. Аналогичную роль играют GitHub, Bitbucket и Gitea.
Нужен ли отдельный сервер для GitLab в контуре 1С?
Для облачной версии — нет, достаточно учётных записей. Для self-hosted варианта нужен сервер под GitLab и отдельная Windows-машина с платформой 1С под раннер CI, если планируется автоматическая сборка и проверка конфигураций.
Что делать с уже существующей конфигурацией с многолетней историей в хранилище?
История хранилища конфигурации в Git автоматически не переносится. Обычно делают стартовый коммит текущего состояния и ведут историю дальше в Git, а старое хранилище сохраняют в режиме «только чтение» как архив для расследований.
Требуются ли дополнительные лицензии 1С для CI-сервера?
Сборка и синтаксическая проверка выполняются платформой на машине раннера, поэтому на эту машину распространяются лицензионные требования платформы — как правило, нужна лицензия на рабочее место или серверная лицензия в зависимости от сценария. Точную схему лицензирования стоит уточнить по условиям вашего договора с вендором.
Можно ли хранить в GitLab расширения и внешние обработки?
Да, и это удобно: расширения выгружаются в исходники теми же механизмами, внешние обработки и отчёты тоже имеют текстовое представление. Каждый самостоятельный продукт разумно держать в отдельном репозитории со своим пайплайном.
Что важно запомнить
GitLab в контексте 1С — это платформа для версионирования конфигураций в текстовом формате, код-ревью и автоматизации сборки и проверок через CI/CD. В Git складывают исходники (EDT или XML-выгрузку), а не бинарные .cf. Переход оправдан для команд от трёх разработчиков и при потребности в параллельной разработке, ревью и автотестах; для одиночной поддержки достаточно штатного хранилища конфигурации.