В процессе разработки программных решений на платформе 1С часто возникает необходимость одновременной работы нескольких специалистов над одной и той же конфигурацией или конкретным объектом метаданных (справочником, документом, обработкой). Стандартным инструментом для коллективной разработки является Хранилище конфигурации. Однако бывают ситуации, когда его использование невозможно или ограничено. Проанализируем ситуационную задачу и выясним, какие существует практические способы организации параллельной работы в таких условиях.
Прежде чем рассматривать решения, разберем ситуацию с прямым подключением двух Конфигураторов к одной информационной базе. Платформа 1С не предназначена для одновременной интерактивной правки структуры метаданных или программных модулей одной БД двумя разработчиками без захвата объектов в Хранилище.
Если два специалиста одновременно откроют один и тот же модуль объекта или форму в одной базе, то при сохранении произойдет перезапись изменений. Версия разработчика, который нажмет комбинацию клавиш для сохранения (или вызовет обновление конфигурации БД) последним, перекроет правки первого разработчика. Механизм автоматического слияния (merge) в обычном Конфигураторе при таком подходе отсутствует. Кроме того, одновременное изменение структуры базы двумя сессиями может привести к технологическим сбоям и разрушению метаданных.
Рассмотрим наиболее распространенный на практике подход, когда Хранилище конфигурации не применяется. Он заключается в разделении среды разработки на отдельные информационные базы и последующем контролируемом слиянии результатов.
Разберем по шагам схему организации процесса:
.cf (или сохраняют дорабатываемые внешние обработки/отчеты)..cf в рабочую базу.Проанализируем ситуацию, когда необходимо свести к минимуму пересечения программистов в одном программном модуле. Для этого применяются архитектурные методы платформы 1С:
1. Использование расширений конфигурации (ПОД)
Вместо изменения объекта непосредственно в основной конфигурации, один из программистов (или оба) создает отдельное расширение. В расширении можно заимствовать форму или сам объект, а доработку программного кода вынести в аннотации перехвата: &Перед, &После или &Вместо. Расширения хранятся и обновляются независимо от основной конфигурации, что полностью исключает блокировку объекта.
2. Использование подписок на события
Если обоим программистам требуется добавить обработку событий объекта (например, при проведении документа или перед записью справочника), код не обязательно писать в самом модуле объекта. Создаются две независимые Подписки на событие. Каждая подписка связывается со своим отдельным ОбщимМодулем, который редактируется конкретным разработчиком. В результате модуль объекта остаётся нетронутым.
3. Декомпозиция логики в общие модули
Вся сложная алгоритмическая часть выносится из модуля объекта во внешние или общие модули. В самом объекте остаются лишь минимальные вызовы соответствующих функций.
Посмотрим на современный стек разработки 1С. При использовании среды 1C:Enterprise Development Tools (1C:EDT) вся конфигурация хранятся на диске в виде текстовых исходных файлов (код в файлах .bsl, метаданные и формы в формате XML).
Это позволяет организовать параллельную работу следующим образом:
.bsl в своей ветке.Если задача по объекту имеет высокую сложность и требует немедленного совместного решения двух специалистов без применения сложного инструментария, применяется методика парного программирования. Оба разработчика работают за одним рабочим местом (или в режиме совместного просмотра экрана): один пилот непосредственно пишет код, а второй штурман анализирует архитектуру, ищет ошибки и предлагает оптимальные решения. Это исключает необходимость одновременного редактирования файлов с разных устройств.