Как добавить новый объект при работе с хранилищем конфигурации 1С?

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

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

Главное правило: Захват корня конфигурации

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

  1. Откройте хранилище и выполните захват корня конфигурации (самая верхняя строка в дереве метаданных с названием вашей конфы). Захватывать корень ветки (например, корень группы "Документы") в данном случае бессмысленно — нужен именно корень всей конфигурации.
  2. Добавьте новый объект (например, новый Документ или Справочник).
  3. Золотое правило групповой разработки: не держите корень захваченным! Сразу же после создания "пустого" объекта поместите корень конфигурации и ваш новый объект обратно в хранилище.
  4. Затем снова захватите только что созданный объект (уже без корня конфигурации). Теперь вы можете спокойно писать для него код, добавлять реквизиты, табличные части и формы, не блокируя работу остальной команды.

Альтернативный подход: Создание "болванок"

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

Суть метода заключается в следующем:

  1. В моменты минимальной активности (например, вечером или в выходной) тимлид или администратор хранилища захватывает корень.
  2. Создается сразу несколько пустых объектов каждого типа про запас. Например: Документ1, Документ2, Справочник1, Обработка1.
  3. Корень помещается в хранилище.
  4. Когда разработчику нужно сделать новый документ, он просто захватывает одну из готовых "болванок", переименовывает её (например, в ДокументЗаявкаНаОплату) и начинает работу. При этом захват корня уже не требуется.

Этот подход может быть оправдан, если у команды в планах на неделю стоит задача по добавлению пары десятков новых объектов. Однако для разовых доработок это избыточно.

Работа через отключение от хранилища (через .cf)

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

  1. Получите все объекты из хранилища и обновите их статусы в вашей тестовой базе.
  2. Отключите конфигурацию тестовой базы от хранилища (Конфигурация -> Хранилище конфигурации -> Отключиться).
  3. Сохраните исходный файл .cf до внесения изменений.
  4. Добавьте нужные документы, напишите код и сохраните новый файл .cf с вашими доработками.
  5. Передайте измененный .cf администратору хранилища. Он с помощью функции "Сравнить и объединить" перенесет ваши новые объекты в основную конфигурацию и самостоятельно их закомитит.

Захват связанных объектов (Роли и Подсистемы)

Не забывайте, что добавление нового объекта — это только половина дела. Чтобы новый документ появился в интерфейсе пользователя, его нужно включить в состав соответствующих подсистем. А чтобы пользователи могли его читать и записывать, необходимо настроить права.

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

Современные альтернативы: Расширения и 1C:EDT

Рассмотрим, как технологии 1С шагнули вперед, предлагая более элегантные способы решения проблемы эксклюзивных блокировок корня:

  1. Расширения конфигурации: Для добавления полностью новых и независимых объектов сейчас активно используются расширения. В этом случае вы работаете с хранилищем расширения. Основную конфигурацию и её корень захватывать не требуется вообще.
  2. 1C:EDT и Git: Если проблема блокировки корня становится критичной для вашей команды, стоит рассмотреть переход на 1C:Enterprise Development Tools. В этой среде исходный код хранится в системах контроля версий (например, Git). Программисты ведут разработку параллельно в своих локальных ветках, могут свободно создавать любые объекты без захвата корня, а при завершении задачи изменения просто сливаются (merge) вместе.

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

← На главную