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

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

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

Использование хранилища конфигурации для расширений

Начиная с релиза платформы 8.3.12, разработчики получили возможность использовать стандартный механизм хранилища не только для основной конфигурации, но и для каждого расширения в отдельности. Проанализируем, как это работает на практике. Для каждого созданного расширения в меню «Конфигурация — Расширения конфигурации» можно открыть отдельное окно управления, где доступен пункт «Хранилище конфигурации».

Рассмотрим ключевые особенности этого механизма:

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

Архитектурные подходы: одно монолитное расширение или несколько малых?

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

Вариант 1: Одно общее расширение на проект

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

Вариант 2: Разделение по функциональным блокам

Мы можем создать отдельные расширения для разных задач, например: ИнтеграцияСМаркетплейсами, ЛогистическиеОтчеты, ИсправленияОшибок. Разберем преимущества этого метода:

Типизация расширений и порядок применения

При использовании нескольких расширений крайне важно понимать порядок их наложения на основную конфигурацию. Платформа 1С позволяет задать Назначение расширения. Рассмотрим эти типы в порядке их приоритета:

  1. Исправление (Patch): Предназначено для оперативного исправления критических багов. Они применяются в первую очередь.
  2. Адаптация: Используется для настройки типового функционала под нужды конкретного внедрения.
  3. Дополнение: Служит для реализации совершенно новых бизнес-процессов, которых нет в типовом решении.

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

Современная альтернатива: EDT и Git

Посмотрим на более современный стек технологий, который упоминался в обсуждениях — 1C:Enterprise Development Tools (EDT). Для крупных команд это решение становится стандартом. В отличие от классического «Хранилища», EDT позволяет использовать Git для контроля версий.

Проанализируем ситуацию: использование Git снимает проблему «захвата объектов». Разработчики могут работать в разных ветках (branches), вносить изменения в одни и те же модули, а затем выполнять процедуру слияния (merge). EDT предоставляет визуальные инструменты для разрешения конфликтов в коде и метаданных расширения.

Правила безопасной модификации кода

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

Рекомендуется использовать связку &Перед, &После или наиболее современный вариант &ИзменениеИКонтроль. Посмотрим на пример использования &ИзменениеИКонтроль, который позволяет безопасно внедрить свой код в середину типового метода:


&ИзменениеИКонтроль("РассчитатьСуммуДокумента")
Процедура Расш1_РассчитатьСуммуДокумента(Параметры)
    // Стандартный код остается под контролем платформы
    #Вставка
    // Наш новый функционал для групповой разработки
    Если Параметры.ДополнительнаяСкидка Тогда
        Параметры.Сумма = Параметры.Сумма * 0.9;
    КонецЕсли;
    #КонецВставки
КонецПроцедуры

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

Практические советы по организации процесса

Подводя итог, сформулируем основные правила для успешной командной работы с расширениями:

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

← На главную