К статье
Практический материал

Разработка и Конфигурация · 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

Формат 1C:EDT

Рекомендуемый вариант для новых проектов: структура файлов дружественна к Git, встроенная интеграция с Git в среде разработки. Требует перехода команды на EDT.

XML-выгрузка конфигуратора

Подходит, если команда остаётся в конфигураторе. Выгрузка запускается вручную или скриптом, конфликты слияния разрешаются сложнее.

Бинарный .cf в Git

Только как архив релизов рядом с исходниками. Как основной формат не подходит: нет диффов и ревью.

Типовой рабочий процесс разработчика

Базовый цикл выглядит так. Разработчик клонирует репозиторий, создаёт ветку под задачу (например, feature/1234-discount-calc), вносит изменения в конфигурацию через EDT или конфигуратор, выгружает изменения в исходники, делает коммит с осмысленным сообщением и отправляет ветку на сервер. Затем открывает merge request в GitLab, коллега проводит ревью, после одобрения ветка сливается в основную (develop или main).

Для команд на конфигураторе выгрузка в XML обычно автоматизируется пакетным запуском: конфигуратор умеет выгружать конфигурацию в файлы из командной строки. Это позволяет встроить выгрузку в скрипт pre-commit или в отдельную задачу, чтобы исходники в репозитории всегда соответствовали актуальной базе разработки.

bash
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER /F"C:\bases\dev" /N"dev" /DumpConfigToFiles "C:\repo\src" -Format Hierarchical

Обратная операция — сборка .cf из исходников — выполняется командой загрузки конфигурации из файлов. Именно эта пара команд лежит в основе CI/CD: сервер сборки берёт исходники из GitLab, собирает конфигурацию и прогоняет проверки.

Первый коммит конфигурации в GitLab
  1. 1
    Создайте пустой проект в GitLab и склонируйте его на рабочую машину
  2. 2
    Выгрузите конфигурацию в файлы (EDT-проект или XML-выгрузка конфигуратора) в папку репозитория
  3. 3
    Добавьте .gitignore: исключите служебные каталоги, временные файлы и бинарные артефакты
  4. 4
    Выполните коммит с понятным сообщением и отправьте ветку на сервер (git push)
  5. 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 регулярно выгружаются срезы конфигурации для истории и аудита. Это компромисс, который не даёт ревью и ветвления, но обеспечивает независимую от хранилища историю изменений.

Маршрут решения

Как выбрать подход

Команда из 1–2 разработчиков, изменения редкие и последовательныеДостаточно штатного хранилища конфигурации; GitLab добавит накладные расходы без выигрыша
3+ разработчиков, параллельные задачи, нужны ревью и история по задачамПереходите на Git с GitLab, предпочтительно через формат EDT
Нужны автотесты и контроль качества перед обновлением рабочих базНастраивайте CI/CD в GitLab с раннером на Windows-машине с платформой
Код нельзя выносить за периметр компанииИспользуйте self-hosted GitLab на собственном сервере, а не облачную версию

Типичные ошибки и риски при внедрении

Самая частая ошибка — хранение в репозитории бинарных файлов конфигурации и уверенность, что это «контроль версий». Вторая по частоте — отсутствие .gitignore, из-за чего в репозиторий попадают служебные файлы, кэши EDT и временные артефакты, раздувая историю и провоцируя ложные конфликты. Третья — прямой коммит в основную ветку всей командой, что сводит на нет идею ветвления и ревью.

Отдельный риск — расхождение между рабочей базой и репозиторием. Если разработчики меняют конфигурацию напрямую в базе, забывая выгружать изменения в исходники, репозиторий перестаёт отражать реальность, и собранный из него .cf отличается от боевого. Это лечится только дисциплиной и автоматической выгрузкой.

Безопасность тоже требует внимания: в репозитории не должно быть паролей от баз, ключей и строк подключения. Для секретов в CI используются переменные окружения GitLab (CI/CD variables), а не значения в коде пайплайна.

Типичные ошибки
01
Коммит бинарного .cf вместо исходников — невозможно ревью и сравнение версий
02
Отсутствие .gitignore — мусорные файлы в истории и ложные конфликты
03
Изменения в базе без выгрузки в Git — репозиторий расходится с реальной конфигурацией
04
Пароли и строки подключения в коде пайплайна — утечка доступов
05
Монолитные коммиты «всё сразу за неделю» — невозможно понять историю и откатить точечно
Контрольные точки

Как проверить, что связка работает

Содержимое репозитория
Норма

Текстовые файлы исходников, читаемые в веб-интерфейсе GitLab

Тревожный признак

Только .cf/.cfe или непонятные бинарные файлы

Сборка из исходников
Норма

Из чистого клона репозитория собирается .cf, идентичный рабочей базе

Тревожный признак

Сборка падает или результат отличается от боевой конфигурации

Пайплайн CI
Норма

Запускается на каждый 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. Переход оправдан для команд от трёх разработчиков и при потребности в параллельной разработке, ревью и автотестах; для одиночной поддержки достаточно штатного хранилища конфигурации.