При активной разработке внешних обработок (.epf) и отчетов (.erf) неизбежно возникает задача безопасного сохранения истории изменений. Ручное создание множества папок и файлов с постфиксами дат и номеров версий приводит к путанице, засорению дискового пространства и невозможности быстро восстановить работоспособную версию в случае сбоя. Рассмотрим, как правильно выстроить процесс версионирования внешних разработок с использованием современных инструментов и штатных возможностей платформы 1С.
Проанализируем специфику формата внешних файлов 1С. Файлы с расширениями .epf и .erf представляют собой бинарные контейнеры платформы. По этой причине возникают следующие технические нюансы:
diff) между коммитами без дополнительных утилит.merge) бинарных файлов невозможно, требуется ручное разрешение конфликтов.Несмотря на эти ограничения, существует несколько проверенных подходов для эффективной работы с версиями.
Разберем самый простой и быстрый в развертывании подход. Он не требует предварительной настройки скриптов сборки-разборки и подходит для небольших команд или индивидуальной разработки.
Совет: чтобы репозиторий не разрастался из-за бинарных файлов, для Git рекомендуется подключить механизм Git LFS (Large File Storage).
Рассмотрим более продвинутый подход, приближающий разработку на 1С к классической разработке ПО. Платформа 1С:Предприятие поддерживает выгрузку внешних обработок и отчетов в набор XML-файлов и модулей кода с последующей обратной сборкой.
Для автоматизации этой процедуры используются параметры пакетного запуска Конфигуратора:
/DumpExternalDataProcessorOrReportToFiles — распаковывает бинарный файл обработки в каталог с текстовыми файлами исходников./LoadExternalDataProcessorOrReportToFiles — собирает исполняемый файл .epf из набора исходных текстов.Посмотрим на пример пакетной команды для разборки внешней обработки на исходники:
"C:\Program Files\1cv8\8.3.23.1688\bin\1cv8.exe" DESIGNER /IBConnectionString "File=C:\1C_Bases\DevBase;" /DumpExternalDataProcessorOrReportToFiles "C:\Repo\Source\MyProcessor" "C:\Repo\Bin\MyProcessor.epf"
Пример обратной сборки файла обработки перед тестированием или релизом:
"C:\Program Files\1cv8\8.3.23.1688\bin\1cv8.exe" DESIGNER /IBConnectionString "File=C:\1C_Bases\DevBase;" /LoadExternalDataProcessorOrReportToFiles "C:\Repo\Bin\MyProcessor.epf" "C:\Repo\Source\MyProcessor"
Чтобы автоматизировать этот процесс, настраивают специализированные pre-commit хуки (например, инструмент precommit1c). При попытке сделать коммит скрипт автоматически декомпилирует измененный .epf в исходные файлы, и в историю репозитория попадает чистый читаемый текст модулей. Это позволяет просматривать историю изменений кода в интерфейсе GitLab/GitHub и проводить полноценное код-ревью.
Если разработка ведется в специализированной среде 1С:Enterprise Development Tools (1С:EDT), задача решается штатно. В этой среде проект внешней обработки изначально хранится в виде структурированного каталога с текстовыми файлами. Встроенная поддержка Git позволяет выполнять фиксацию изменений, ветвление, слияние и визуальный просмотр различий непосредственно из интерфейса среды разработки без необходимости настраивать сторонние скрипты разборки.
Разберем вариант, когда требуется хранить историю изменений внешних печатных форм, отчетов и обработок непосредственно в рабочей или тестовой базе данных без использования внешних систем контроля версий:
ДополнительныеОтчетыИОбработки.Выбор конкретного решения зависит от масштаба команды: для индивидуальной разработки достаточно Git с визуальным клиентом и сравнением через Конфигуратор, а для командной работы рекомендуется настроить версионирование исходного кода с помощью пакетной выгрузки или среды 1С:EDT.