Исходные условия
Команда: 20 разработчиков.
Конфигурация: Демонстрационная конфигурация "Библиотека стандартных подсистем", редакция 3.1 (3.1.10.383).
Расширение конфигурации: «_ДемоРасширение» - для доработки типового и внедрения нового функционала.
Описание процесса
Основная конфигурация остаётся на поддержке от поставщика. Без возможности внесения в нее изменений - на замке. Команда разработки добавляет необходимый новый функционал через расширение конфигурации "_ДемоРасширения".
Возможные сценарии организации разработки и связанные с ними проблемы
Сценарий 1: разработка с постоянным подключением к хранилищу расширения конфигурации.
Проблема конкуренции за корень расширения конфигурации. Довольно часто возникает ситуация, когда для внесения изменений, нам необходимо захватить в хранилище корень расширения конфигурации. Негативные последствия:
- Простои. Ожидание освобождения корня другим разработчиком по завершении его задачи.
- Сложность контроля изменений. Если отпускать корень расширения конфигурации сразу после заимствования объектов основной конфигурации, то, велика вероятность, что изменения по одной функциональной задаче попадут в хранилище расширения разрозненными частями (по мере работы с объектами). Этот процесс затруднит ревью кода (отсутствие целостного представления о решении), и повысит риск нестабильности DEV-среды - частичные изменения, в рамках решения одной задачи, может нарушить работоспособность DEV среды.
Сценарий 2: разработка без подключения к хранилищу расширения конфигурации.
Проблема расхождения версий. За время работы над локальной задачей, активная параллельная работа других разработчиков приводит к значительным изменениям в хранилище расширения. Негативные последствия:
- Ручной труд и сложное слияние. Нужно точно помнить все объекты, которые были изменены в локальном расширении конфигурации. Чтобы внести свои изменения, приходится использовать «Сравнение и объединение с конфигурацией из файла...», без доступа к функциональности «Показывать только дважды измененные свойства».
- Риск конфликтов. Высокая вероятность затереть чужие изменения, сделанные за время своей автономной работы, или получить конфликт изменений. Это требует ручного и очень аккуратного разрешения.
Выбранный сценарий
Выбираем в качестве основной схемы разработки Сценарий 2, при котором разработчик решает задачу в отключённом от хранилища расширении конфигурации.
Потребность
Необходим инструмент, автоматизирующий создание CFE-файла расширения конфигурации, который содержал бы в себе изменения из хранилища расширения конфигурации и расширения конфигурации базы разработки. Этот инструмент должен эмулировать процесс Технологии разветвленной разработки конфигураций.
Идея решения
Проектируем и создаем средствами 1С инструмент, который бы мог выполнить и показать результат выполнения скрипта вида:
- Создаем локальный репозиторий Git;
- В локальном репозитории переключаемся на ветку master (или main) и выгружаем конфигурацию и расширение конфигурации в файлы XML;
- В своей базе (отключенной от хранилища расширения конфигурации) выполняем разработку задачи;
- В локальном репозитории переключаемся на ветку DEV и выгружаем конфигурацию и расширение конфигурации из нашей базы с выполненной задачей в файлы XML;
- В локальном репозитории переключаемся обратно на ветку master (main), получаем актуальные версии из хранилищ конфигурации и расширения, и выгружаем их в файлы XML;
- Выполняем слияние (merge) изменений из ветки master (main) в ветку DEV;
- При необходимости разрешаем возникшие конфликты слияния;
- Из ветки DEV собираем файлы CF и CFE для дальнейшего использования.
Дополнительные средства
БСП: версия от 3.0.3.229
Kdiff3: https://sourceforge.net/projects/kdiff3/files/kdiff3/0.9.98/
GIT: https://git-scm.com/downloads
Тестовая среда
Платформа: 1С:Предприятие 8.3 (8.3.26.1581)
Конфигурация: Демонстрационная конфигурация "Библиотека стандартных подсистем", редакция 3.1 (3.1.10.383)
Расширение конфигурации: _ДемоРасширение
Клиент-серверная база (пустая, подключенная к хранилищу расширения): Srvr="localhost";Ref="base_1";
Клиент-серверная база (с данными, для разработки): Srvr="localhost";Ref="base_2";
Изменения которые сделаны другими разработчиками, и помещены в хранилище расширения конфигурации. База: Srvr="localhost";Ref="base_1"; Ветка: master (main) |
![]() |
Изменения сделанные в локальном расширении конфигурации в рамках решения одной функциональной задачи. База: Srvr="localhost";Ref="base_2"; Ветка: DEV |
![]() |
В финальном файле расширения конфигурации должен быть отражён результат слияния веток master (main) и DEV | ![]() |
Описание решения
В качестве решения было разработано расширение конфигурации «Сборщик проектов». Его основное назначение — выполнение набора команд по запросу пользователя.
Для выполнения сценария требуется задать: (1) путь к 1cv8.exe, (2) рабочую конфигурацию и (3) целевой сценарий. При выборе сценария происходит автоматическое заполнение таблицы командами. | ![]() |
Для выполнения сценария необходимо воспользоваться командой "Выполнить сценарий". После активации команды система автоматически запустит все шаги указанного сценария в заданной последовательности. | ![]() |
Система логирует результаты выполнения каждой команды сценария. Все логи выводятся в отдельной форме просмотра. | ![]() |
Если на форме логов становится доступной к использованию команда "Разрешить "Merge conflict"", то мы можем разрешить их прямо сейчас, воспользовавшись выбранным в описании "Конфигурации" инструментом разрешения конфликтов. | ![]() |
Команда "Разрешить "Merge conflict"" открывает специальную форму, содержащую список файлов с возникшими конфликтами слияния (merge-конфликтами). | ![]() |
Для разрешения конфликта, необходимо выбрать нужный файл и выполнить команду "Разрешить конфликт". | ![]() |
![]() |
|
В результате выполнения команды Сборка CF и CFE из DEV (Демо) в каталоге репозитария сборки проекта build_cf_cfe будут созданы файлы "поставки" CF и CFE, которые можно с помощью "Сравнить объединить.." отнести в основное хранилища. |
![]() |
В результате, в списке отличий, система покажет только наши изменения. | ![]() |
Заключение
В результате решения задачи по автоматизации создания CFE-файла (склейка хранилища расширения конфигурации и расширения базы разработки), был разработан простой инструмент, который позволяет проектировать, исполнять и просматривать результат исполнения сценариев (скриптов), состоящие из Команд запуска "1С:Предприятие", команд GIT и CMD. Данное решение позволяет решать merge конфликты в одном окне - запуская KDiff3 непосредственно из 1С.
Инструмент должен позволить вести разработку автономно без сложностей ручного слияния, обеспечить целостность выгружаемых задач и стабильность DEV-среды, а также снизить трудозатраты на интеграцию изменений в условиях параллельной работы.
PS
Страничка проекта: project_builder_1C.git
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.239
Вступайте в нашу телеграмм-группу Инфостарт