Вопрос организации коллективной работы над расширениями конфигурации является критически важным для современных команд разработки. В отличие от основной конфигурации, расширения имеют свои особенности версионирования и механизмы взаимодействия с объектами метаданных. Разберем подробно, какие инструменты предоставляет платформа 1С и какие архитектурные подходы наиболее эффективны в условиях работы нескольких программистов.
Начиная с релиза платформы 8.3.12, разработчики получили возможность использовать стандартный механизм хранилища не только для основной конфигурации, но и для каждого расширения в отдельности. Проанализируем, как это работает на практике. Для каждого созданного расширения в меню «Конфигурация — Расширения конфигурации» можно открыть отдельное окно управления, где доступен пункт «Хранилище конфигурации».
Рассмотрим ключевые особенности этого механизма:
Выясним, какую стратегию разделения функционала лучше выбрать при групповой разработке. Существует два основных подхода, каждый из которых имеет свои плюсы и минусы.
Вариант 1: Одно общее расширение на проект
В этом случае все разработчики подключаются к одному хранилищу этого расширения. Плюсом является отсутствие проблем с зависимостями: все новые объекты и изменения видны всем участникам процесса одновременно. Однако минусом может стать конфликт при необходимости изменения общих механизмов, например, общего модуля расширения, который может быть часто захвачен кем-то из коллег.
Вариант 2: Разделение по функциональным блокам
Мы можем создать отдельные расширения для разных задач, например: ИнтеграцияСМаркетплейсами, ЛогистическиеОтчеты, ИсправленияОшибок.
Разберем преимущества этого метода:
При использовании нескольких расширений крайне важно понимать порядок их наложения на основную конфигурацию. Платформа 1С позволяет задать Назначение расширения. Рассмотрим эти типы в порядке их приоритета:
Если у вас несколько расширений с одинаковым назначением, они будут применяться в порядке их расположения в списке. Мы рекомендуем строго следить за этим порядком, особенно если разные расширения модифицируют одни и те же методы основной конфигурации.
Посмотрим на более современный стек технологий, который упоминался в обсуждениях — 1C:Enterprise Development Tools (EDT). Для крупных команд это решение становится стандартом. В отличие от классического «Хранилища», EDT позволяет использовать Git для контроля версий.
Проанализируем ситуацию: использование Git снимает проблему «захвата объектов». Разработчики могут работать в разных ветках (branches), вносить изменения в одни и те же модули, а затем выполнять процедуру слияния (merge). EDT предоставляет визуальные инструменты для разрешения конфликтов в коде и метаданных расширения.
Чтобы групповая разработка не превратилась в хаос, разберем примеры использования аннотаций. В расширениях крайне не рекомендуется злоупотреблять аннотацией &Вместо, так как если два разработчика в разных расширениях заменят один и тот же метод, система применит только одно из них, что приведет к непредсказуемому поведению.
Рекомендуется использовать связку &Перед, &После или наиболее современный вариант &ИзменениеИКонтроль. Посмотрим на пример использования &ИзменениеИКонтроль, который позволяет безопасно внедрить свой код в середину типового метода:
&ИзменениеИКонтроль("РассчитатьСуммуДокумента")
Процедура Расш1_РассчитатьСуммуДокумента(Параметры)
// Стандартный код остается под контролем платформы
#Вставка
// Наш новый функционал для групповой разработки
Если Параметры.ДополнительнаяСкидка Тогда
Параметры.Сумма = Параметры.Сумма * 0.9;
КонецЕсли;
#КонецВставки
КонецПроцедуры
Этот метод позволяет платформе автоматически проверять, не изменился ли исходный код в основной конфигурации после обновления. Если код изменился, расширение выдаст ошибку при проверке применимости, и разработчик сможет оперативно внести правки.
Подводя итог, сформулируем основные правила для успешной командной работы с расширениями:
мп_ для отдела маркетинга). Это исключит коллизии имен при объединении расширений или обновлении основной базы.Следуя этим рекомендациям и используя возможности современных версий платформы 1С, вы сможете выстроить эффективную и предсказуемую среду коллективной разработки расширений, минимизировав риски возникновения ошибок и конфликтов кода.