Разработка правил обмена в конфигурации «1С:Конвертация данных 2.1» (КД 2.1) традиционно считается задачей для одного специалиста. Это обусловлено спецификой хранения правил: все настройки, обработчики событий и алгоритмы представляют собой единую монолитную структуру. При попытке выгрузить правила в XML-файл мы получаем огромный документ, совместное редактирование которого стандартными средствами контроля версий превращается в кошмар из-за конфликтов слияния.
Однако на крупных проектах внедрения (например, при переходе со старых кастомизированных систем на современные конфигурации уровня ERP) объем объектов исчисляется сотнями. В таких условиях один разработчик физически не успевает настроить все правила в жесткие проектные сроки. Возникает острая необходимость распараллелить процесс. Рассмотрим подробнее, как организовать командную разработку правил обмена, избежать затирания чужих изменений и автоматизировать сборку готового пакета правил.
Это самый очевидный и простой в реализации подход, который не требует внедрения сложных сторонних инструментов. Разработчики работают в одной информационной базе КД 2.1, развернутой на SQL-сервере.
Для успешной реализации этой схемы настроим и применим следующие правила:
ПравилоКонвертацииОбъектов (ПКО) или ПравилоВыгрузкиДанных (ПВД), платформа автоматически блокирует этот элемент справочника для других пользователей. Это исключает риск одновременного изменения одного правила.
// Пример вызова общего алгоритма в обработчике ПКО
Выполнить(Алгоритмы.ЗаполнитьДополнительныеСвойстваНоменклатуры);
Важное ограничение: Загрузка метаданных конфигураций-источников и приемников должна выполняться строго монопольно. В момент загрузки метаданных платформа КД выполняет массовую запись в транзакции. Перед запуском этой процедуры необходимо предупредить команду, чтобы все разработчики завершили работу с базой.
Если работа в единой базе невозможна (например, разработчики находятся в разных сетях без быстрого доступа к общему серверу), применим схему с распределенными базами и последующим слиянием правил.
Для этого воспользуемся встроенной обработкой «Сравнение и объединение правил обмена», которая присутствует в КД начиная с версии 2.1.7.1. Разберем этот процесс по шагам:
Для продвинутых команд разработки наиболее эффективным решением является использование Git. Напрямую хранить и мержить гигантский XML-файл правил КД невозможно: платформа 1С при выгрузке может хаотично менять последовательность узлов, из-за чего Git будет показывать ложные конфликты на тысячи строк. Однако мы можем обойти это ограничение с помощью специализированных утилит.
Проанализируем процесс настройки профессиональной Git-разработки правил КД:
.bsl-файлы (чистый код 1С).
// Пример команды декомпозиции файла правил на исходники
grules.os --decompile --rules "C:\KD\ExchangeRules.xml" --out "C:\GitProject\src"
Благодаря декомпозиции, если Разработчик А изменил только обработчик ПКО «Договоры контрагентов», изменения в репозитории затронут исключительно один файл ПКО_ДоговорыКонтрагентов_ПередВыгрузкой.bsl. Остальные файлы правил останутся нетронутыми. Git легко выполнит слияние (*merge*) таких изменений без конфликтов.
Перед тестированием или релизом выполняется обратная сборка единого XML-файла правил командой сборщика:
// Пример команды сборки единого XML-файла правил из исходников
grules.os --assemble --src "C:\GitProject\src" --out "C:\KD\ExchangeRules_Ready.xml"
Для предотвращения «нестабильности» XML (когда платформа меняет форматирование при выгрузке) рекомендуется использовать доработанную сообществом конфигурацию КД 2.1 — «Conversion plus». Она содержит патчи, гарантирующие идентичную структуру выгружаемых XML-файлов при неизменных данных.
Выясним, как обстоят дела с параллельной разработкой в современной редакции КД. Если вы проектируете интеграцию между конфигурациями, поддерживающими технологию EnterpriseData (универсальный формат обмена), настоятельно рекомендуем отказаться от КД 2.1 в пользу «Конвертации данных 3.0» (КД 3.0).
В КД 3.0 концепция полностью изменилась:
МенеджерОбменаЧерезУниверсальныйФормат)..bsl), задача параллельной разработки решается сама собой. Разработчики используют стандартную среду разработки 1C:EDT с интегрированным Git.Параллельная разработка правил обмена не только возможна, но и необходима на крупных проектах. Выбор конкретной методики зависит от технологической зрелости вашей команды и используемой версии КД:
GitRules.