При активной командной разработке и регулярном обновлении типовых решений программисты нередко сталкиваются со сбоями штатного хранилища конфигурации 1С. В связи с этим возникает вопрос: имеет ли смысл полностью отказаться от хранилища и перевести версионирование исходных кодов на систему контроля версий Git. Разберем ключевые технические различия, ограничения обеих систем и оптимальные практики организации коллективной разработки в 1С.
Штатное хранилище конфигурации 1С реализует централизованную модель с пессимистической блокировкой (захватом) объектов. Это означает, что разработчик перед внесением правок монопольно захватывает объект метаданных, что исключает одновременное изменение одного и того же элемента несколькими участниками команды.
Система Git построена на распределенной архитектуре, где каждый разработчик работает в изолированной локальной ветке. Проанализируем, с какими сложностями сталкивается команда при попытке применить стандартный процесс ветвления Git к исходным кодам 1С:
<<<<<<<, =======, >>>>>>>), что нарушает валидность XML-документа и делает невозможной обратную загрузку в Конфигуратор.CRLF / LF) может приводить к ложным диффам в модулях или некорректной работе динамически собираемых запросов, использующих конструкции вида Символы.ПС.Если решение о смене инструмента вызвано исключительно ошибками при сравнении и объединении конфигураций (в частности, при обновлении справочной информации), рассмотрим способы восстановления стабильной работы встроенного хранилища:
Хранилище — Администрирование хранилища — Оптимизация.1cv8ddb.1CD) снимем конфигурацию с поддержки хранилища, сохраним актуальное состояние конфигурации в файл .cf и создадим новое чистое хранилище для продолжения разработки.Для организации версионирования исходников платформа 1С предоставляет специальные параметры запуска Конфигуратора в пакетном режиме. Рассмотрим основные команды, используемые для автоматизации:
Команды -DumpConfigToFiles и -LoadConfigFromFiles выполняют полную выгрузку или загрузку метаданных в иерархическую структуру каталогов и XML-файлов.
Параметр -UpdateConfigDumpInfo позволяет выгружать только те объекты, которые действительно изменились с момента прошлой фиксации, что многократно ускоряет процесс синхронизации.
Команды -DumpExtensionToFiles и -LoadExtensionToFiles предназначены для выгрузки и загрузки исходных кодов расширений. Отметим, что в современных версиях платформы для расширений также поддерживается штатный механизм хранилища конфигурации.
Наиболее надежной практикой в корпоративной разработке 1С является гибридная схема, объединяющая достоинства обоих инструментов:
Если же команда выбирает полноценную разработку в ветках Git без хранилища, слияние конфликтующих веток необходимо производить не текстовыми командами git merge, а исключительно через механизм трехстороннего сравнения и объединения в Конфигураторе 1С с последующей повторной выгрузкой результата в исходные файлы.