Как организовать групповую разработку внешних отчетов и обработок в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе в команде над крупными проектами на платформе 1С программисты часто сталкиваются с проблемой: как эффективно управлять версиями внешних отчетов (.erf) и обработок (.epf)? В отличие от объектов основной конфигурации, которые легко помещаются в стандартное Хранилище конфигурации, внешние файлы являются бинарными. Это означает, что мы не можем просто так увидеть историю изменений кода или объединить правки двух разработчиков, работавших над одной и той же обработкой одновременно.

В данной статье мы подробно разберем, какие инструменты и методики существуют для решения этой задачи, проанализируем их плюсы и минусы, а также выберем наиболее подходящий путь для вашей команды.

Метод 1. Использование 1С:EDT (Enterprise Development Tools)

Рассмотрим самый современный и перспективный подход — переход на среду разработки 1С:EDT. В отличие от классического «Конфигуратора», EDT построена на базе Eclipse и ориентирована на работу с системами контроля версий (преимущественно Git).

Разберем по шагам, как это работает для внешних объектов:

  1. В EDT внешний отчет или обработка создается как отдельный проект.
  2. При сохранении файла среда автоматически выполняет его декомпозицию. Это значит, что бинарный файл «разваливается» на множество текстовых файлов (модули в формате .bsl, описания форм в XML и так далее).
  3. Благодаря текстовому представлению, мы получаем возможность использовать стандартный механизм Merge (слияние) и Diff (сравнение).

Проанализируем ситуацию: если два разработчика изменят один и тот же метод в модуле объекта внешней обработки, Git в среде EDT подсветит конфликт и позволит выбрать нужные строки кода. Это кардинально меняет процесс разработки, делая его прозрачным.

Метод 2. Декомпозиция бинарных файлов для Git в классическом Конфигураторе

Если ваша команда пока не готова к полному переходу на EDT, мы можем использовать промежуточные инструменты для работы с обычным «Конфигуратором». Выясним, какие утилиты нам в этом помогут.

Основная проблема .epf файлов — их закрытость. Для её решения применяются специальные инструменты «разборки»:

Рассмотрим примерный алгоритм работы разработчика при таком подходе:

  1. Программист вносит изменения в обработку в Конфигураторе.
  2. Перед коммитом в репозиторий запускается скрипт (например, через pre-commit hook в Git), который распаковывает бинарный файл в папку с исходным кодом.
  3. В репозиторий отправляются именно текстовые файлы модулей.

Таким образом, мы сохраняем возможность работать в привычном интерфейсе, но получаем полноценную историю изменений кода BSL.

Метод 3. Использование технической конфигурации и Хранилища

Иногда команды выбирают более консервативный путь. Мы можем создать отдельную информационную базу, которую назовем «Технической». В этой базе все наши внешние обработки будут добавлены в дерево конфигурации как обычные объекты.

В чем заключаются особенности этого метода? Разберем подробнее:

Этот способ хорошо подходит для небольших команд, где не внедрен Git, но требуется строгий контроль над тем, кто именно сейчас правит конкретный отчет.

Метод 4. Переход на расширения конфигурации

Выясним причину, по которой многие эксперты называют внешние обработки «злом» в условиях крупного энтерпрайза. Внешние объекты лишены контекста конфигурации: они не видят типы данных, добавленные в расширениях, и их сложно отлаживать в связке с основной логикой системы.

Мы рекомендуем рассмотреть возможность переноса логики из внешних обработок в Расширения конфигурации. Посмотрим на преимущества такого решения:

  1. Расширения отлично поддерживаются Хранилищем и EDT.
  2. Вы можете использовать механизмы заимствования, переопределять методы основной конфигурации и добавлять свои подсистемы.
  3. Объекты внутри расширения версионируются так же легко, как и основная конфигурация.

Если вам нужно просто «подправить» типовой отчет или добавить небольшую форму, расширение — это самый стабильный и современный путь разработки.

Проблема слияния (Merge) в общих модулях и формах

Независимо от того, используете вы Git или EDT, вы столкнетесь с конфликтами при одновременной правке кода. Разберем, как минимизировать боль при разрешении конфликтов.

Для эффективного сравнения кода 1С мы рекомендуем подключить внешние инструменты сравнения/объединения к вашему Git-клиенту. Популярными решениями являются KDiff3, P4Merge или Beyond Compare. Они гораздо нагляднее показывают изменения в трех панелях (Ваша версия, Версия коллеги, Базовая версия).

Также важно соблюдать административные договоренности:

Пример архитектурного разделения кода для удобства групповой разработки:


// Вместо одного огромного модуля "РаботаСДокументами"
// создадим несколько по направлениям:
// 1. РаботаСДокументамиСервер (базовые функции)
// 2. РаботаСДокументамиСобытия (подписки на события)
// 3. РаботаСДокументамиКлиент (интерфейсная логика)

Подводя итог, можно сказать: выбор инструмента зависит от зрелости вашей команды. Для тех, кто хочет идти в ногу со временем, EDT + Git является золотым стандартом. Для более традиционных подходов оптимальным будет использование Расширений или специализированных скриптов декомпозиции для Git.

← На главную