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

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

Работа в крупной компании над стандартной конфигурацией, такой как 1С:Зарплата и управление персоналом (ЗУП), накладывает серьезные требования к организации процесса разработки. Когда в команде более трех программистов, классический подход «один разработчик — одно расширение» перестает работать и превращается в источник постоянных конфликтов, потерь кода и сложностей при обновлении релизов. Разберем подробно, как перестроить процессы, чтобы масштабировать команду без потери качества.

Проблематика персональных расширений

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

  1. Бесхозный код: При увольнении сотрудника его расширение остается «в наследство» коллегам, которые не знают логики внедренных изменений.
  2. Дублирование объектов: Один и тот же справочник или документ может быть добавлен в три разных расширения. Это приводит к конфликтам при применении расширений и непредсказуемому поведению системы.
  3. Сложность обновлений: При выходе нового релиза ЗУП каждый разработчик вынужден тратить время на адаптацию своего расширения, при этом общие части конфигурации тестируются многократно разными людьми, что крайне неэффективно.

Переход к функциональному разделению расширений

Рассмотрим более правильную архитектуру. Вместо персонализации расширений внедрим разделение по функциональным блокам или проектам. Проанализируем, как это реализовать:

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

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

Использование Хранилища для расширений

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

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

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

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

Проблема обновлений и тестирования

Разберем самый болезненный вопрос: как накатывать новые релизы ЗУП, если расширение общее? В ситуации с 5–10 разработчиками ручное тестирование становится невозможным. Рассмотрим стратегию автоматизации:

1. Назначение ответственного (Релиз-менеджера): Выделим самого опытного сотрудника, который будет курировать процесс обновления. Его задача — не править код за всеми, а координировать исправления.

2. Внедрение автотестов: Посмотрим в сторону инструментов сценарного тестирования, таких как Vanessa Automation. Подготовим набор «дымовых тестов», которые проверяют базовую работоспособность (открытие форм, проведение документов) после наката нового релиза. Это позволит мгновенно выявить, в каком блоке произошел сбой.

3. Использование аннотаций: Проанализируем использование &Вместо. Это самая опасная аннотация при обновлениях. В командной разработке постараемся максимально использовать &Перед и &После. Использование &Вместо должно быть разрешено только в исключительных случаях с обязательным Code Review.

Современный подход: 1C:EDT и Git

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

Регламент разработки и комментарии

Для поддержания порядка в общем коде введем жесткий регламент комментирования. Разберем пример оформления доработок в общих модулях расширения:


// + ИмяРазработчика_Задача_123_Начало
// Описание: Добавление расчета надбавки за выслугу лет
Процедура РасчитатьНадбавку()
    // Логика доработки
КонецПроцедуры
// - ИмяРазработчика_Задача_123_Конец

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

Оптимизация производительности

Выясним, влияет ли количество расширений на скорость работы ЗУП. Платформа 1С:Предприятие компилирует все расширения в единый слой при запуске сеанса. Основное замедление может происходить на этапе инициализации (запуска программы). Чтобы минимизировать риски:

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

← На главную