Работа с Хранилищем конфигурации в среде «1С:Предприятие 8» является стандартом для командной разработки. Однако новички часто сталкиваются с ситуацией, когда некоторые объекты невозможно отредактировать: они помечены специальными значками («замочками»), а кнопки редактирования неактивны. Ситуация осложняется, если база подключена к хранилищу. В этой статье мы подробно разберем, как снять запрет на редактирование, почему это происходит и какие лучшие практики существуют для решения подобных задач.
Прежде чем приступать к изменению кода или форм, нам необходимо понять базовый принцип работы хранилища. В отличие от обычной файловой базы, в хранилище действует механизм захвата. Рассмотрим, как это работает на практике:
Выясним причину: почему простого захвата бывает мало? Это происходит потому, что объект имеет статус «Не редактируется». Для его изменения нам придется изменить правила поддержки всей конфигурации.
Рассмотрим подробнее последовательность действий, которая позволит вам изменить объект, находящийся «на замке» внутри хранилища. Мы рекомендуем строго придерживаться этого порядка, чтобы не нарушить целостность структуры данных.
Шаг 1: Захват корня конфигурации
Для изменения настроек поддержки вам необходимо захватить самый верхний элемент в дереве метаданных — Конфигурация. Обратите внимание, что это монопольный захват. Пока корень захвачен вами, другие разработчики не смогут добавлять новые объекты или менять общие свойства базы. Нажмите правой кнопкой мыши на корень конфигурации и выберите «Хранилище» -> «Захватить в хранилище».
Шаг 2: Включение возможности изменения
Перейдите в меню «Конфигурация» -> «Поддержка» -> «Настройка поддержки». В открывшемся окне нажмите кнопку «Включить возможность изменения». Проанализируем ситуацию: система предупредит вас, что это может усложнить процесс обновления в будущем. Соглашаемся и переходим к настройке правил.
Шаг 3: Установка правил для конкретных объектов
Найдите нужный вам объект в списке настройки поддержки. Установите для него правило «Редактируется с сохранением поддержки». Это позволит вам вносить изменения в код и формы, но при этом 1С будет помнить, что объект изначально принадлежит поставщику.
Шаг 4: Захват самого объекта метаданных
После того как правила поддержки изменены, вернитесь в дерево метаданных, найдите ваш объект (например, Документ.РеализацияТоваровУслуг) и захватите его в хранилище стандартным способом. Теперь кнопки редактирования станут активными.
Шаг 5: Помещение изменений в хранилище
После завершения работы не забудьте выполнить команду «Поместить в хранилище» сначала для объекта, а затем для корня конфигурации, чтобы другие участники разработки могли получить ваши изменения.
Проанализируем технические последствия описанных выше действий. Включение возможности изменения — это серьезный шаг, который влияет на несколько аспектов:
Синхронизация правил у коллег
Когда вы изменили правила поддержки и поместили их в хранилище, ваши коллеги обязательно должны выполнить команду «Получить из хранилища». В противном случае их локальные версии конфигураций будут считать, что объекты всё еще закрыты «на замок», хотя в хранилище они уже доступны для правки.
Увеличение веса базы
Снятие с «замка» увеличивает размер файла конфигурации 1cv8.cf и размер базы данных. Система начинает хранить дополнительную копию метаданных — конфигурацию поставщика, чтобы иметь возможность сравнивать ваши правки с эталоном при следующем обновлении.
Сложности при обновлении
Если вы изменили типовой объект, при выходе нового релиза от «1С» процедура «Сравнение/объединение» потребует ручного вмешательства. Если просто нажать «Выполнить», система может затереть ваш код кодом из нового релиза поставщика. Всегда внимательно проверяйте настройки объединения для объектов со статусом «Редактируется с сохранением поддержки».
Разберем способ, который в современной разработке считается более предпочтительным, чем снятие основной конфигурации с поддержки. Это Расширения конфигурации (.cfe).
Если вам нужно изменить логику проведения документа или добавить поле на форму, вы можете не трогать основную конфигурацию в хранилище вообще. Вместо этого:
&Перед, &Вместо или &После для изменения поведения процедур.Преимущество этого метода: основная конфигурация остается на полной поддержке («на замке»), что делает обновление типового решения мгновенным и безопасным. Расширения также можно (и нужно) подключать к отдельному хранилищу расширений для коллективной работы.
Часто возникает вопрос: зачем использовать хранилище, если над проектом работает всего один человек? Посмотрим на это с точки зрения безопасности и контроля качества:
Бывают ситуации, когда коллега захватил объект и уволился или у него сломался компьютер. В этом случае объект остается заблокированным для всех остальных. Для решения этой проблемы нам понадобятся права администратора хранилища.
Рассмотрим действия администратора:
Будьте осторожны: при отмене захвата все изменения, которые пользователь сделал локально, но не успел поместить в хранилище, будут потеряны для проекта.
Работа с хранилищем и объектами на поддержке требует дисциплины. Чтобы отредактировать «закрытый» объект, мы сначала захватываем корень конфигурации, разрешаем изменения в настройках поддержки, и только потом захватываем сам объект. Однако всегда стоит задаться вопросом: нельзя ли решить задачу с помощью расширения? Это сэкономит много времени при будущих обновлениях системы.