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

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

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

Разбор механизма захвата объектов в хранилище

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

  1. Если база подключена к хранилищу, любой объект (будь то справочник, документ или общий модуль) по умолчанию закрыт для редактирования.
  2. Чтобы внести изменения, программист должен выполнить команду «Захватить в хранилище». В этот момент хранилище помечает объект как занятый вами, и никто другой из коллег не сможет его редактировать, пока вы его не «отпустите» (команда «Поместить»).
  3. Если объект стоит на поддержке поставщика (например, это типовая конфигурация «1С:Бухгалтерия»), то одного захвата недостаточно — система будет блокировать изменения на уровне правил поддержки.

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

Пошаговый алгоритм разрешения редактирования в хранилище

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

Шаг 1: Захват корня конфигурации

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

Шаг 2: Включение возможности изменения

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

Шаг 3: Установка правил для конкретных объектов

Найдите нужный вам объект в списке настройки поддержки. Установите для него правило «Редактируется с сохранением поддержки». Это позволит вам вносить изменения в код и формы, но при этом 1С будет помнить, что объект изначально принадлежит поставщику.

Шаг 4: Захват самого объекта метаданных

После того как правила поддержки изменены, вернитесь в дерево метаданных, найдите ваш объект (например, Документ.РеализацияТоваровУслуг) и захватите его в хранилище стандартным способом. Теперь кнопки редактирования станут активными.

Шаг 5: Помещение изменений в хранилище

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

Технические нюансы и риски работы с поддержкой

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

Синхронизация правил у коллег

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

Увеличение веса базы

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

Сложности при обновлении

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

Современная альтернатива: использование расширений

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

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

  1. Создайте новое Расширение.
  2. Заимствуйте нужный объект в это расширение.
  3. Используйте аннотации &Перед, &Вместо или &После для изменения поведения процедур.

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

Зачем одному программисту хранилище?

Часто возникает вопрос: зачем использовать хранилище, если над проектом работает всего один человек? Посмотрим на это с точки зрения безопасности и контроля качества:

Очистка «зависших» захватов

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

Рассмотрим действия администратора:

  1. Зайдите в меню «Конфигурация» -> «Хранилище конфигурации» -> «Администрирование».
  2. На закладке «Подключения» найдите зависший сеанс пользователя и удалите его.
  3. На закладке «Состав хранилища» выберите заблокированный объект и нажмите «Отменить захват».

Будьте осторожны: при отмене захвата все изменения, которые пользователь сделал локально, но не успел поместить в хранилище, будут потеряны для проекта.

Резюме

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

← На главную