← На главную
В процессе штатного обновления конфигурации «1С:Бухгалтерия предприятия 3.0» через конфигуратор разработчики и администраторы нередко сталкиваются с ситуацией, когда процедура прерывается критическим сообщением платформы. Проанализируем типичную ошибку: система сообщает, что на удаляемый объект метаданных (например, ФункциональнаяОпция.УдалитьИспользоватьСрокиОплатыСчетовПокупателю или ФункциональнаяОпция.УдалитьНеИспользоватьСрокиОплатыСчетовПокупателю) имеются ссылки в объектах основной конфигурации, чаще всего — в Документ.СчетНаОплатуПокупателю.Форма.ФормаДокумента.Форма. В результате процесс обновления блокируется, а кнопка применения изменений становится недоступной.
Выясним причину такого поведения платформы «1С:Предприятие 8.3» и разберем по шагам проверенные варианты устранения проблемы.
Причины возникновения ошибки
Разберем механизм работы поддержки и обновления конфигураций в платформе 1С. Подобный сбой происходит при совпадении двух ключевых факторов:
- Включен режим возможности изменения конфигурации. Если в информационной базе ранее было включено разрешение на редактирование («Конфигурация находится на поддержке с возможностью изменения»), механизм обновления перестает перезаписывать метаданные безусловно. Для каждого объекта со статусом «Редактируется с сохранением поддержки» платформа требует явных правил объединения.
- Удаление устаревших объектов разработчиком типового решения. Фирма «1С» при оптимизации конфигурации переносит устаревшие свойства и опции в категорию удаляемых (добавляя префикс «Удалить»), а затем окончательно вырезает их из метаданных и форм. В новой версии поставщика форма документа
СчетНаОплатуПокупателю уже не содержит обращений к этим функциональным опциям. Однако если при обновлении через файл поставщика (.cfu) в дереве сравнения форма не была отмечена к замене, в основной конфигурации остается старая версия формы, ссылающаяся на уже отсутствующие функциональные опции. Возникает нарушение ссылочной целостности метаданных, которое платформа блокирует.
Способ 1. Принудительное включение подчиненных объектов в окне сравнения и объединения
Рассмотрим основной и самый быстрый способ, который позволяет продолжить штатное обновление через файл .cfu без потери кастомизаций.
Когда конфигуратор выполняет сравнение конфигураций и формирует дерево изменений, выполним следующие действия:
- Найдем в дереве объектов метаданных указанный в тексте ошибки документ —
Документ.СчетНаОплатуПокупателю.
- Развернем ветку документа до подчиненных элементов: ветки «Формы» и конкретной управляемой формы
ФормаДокумента.
- Установим флажок обновления не только на сам документ, но и на все его подчиненные объекты, включая форму документа. Если флажок уже стоял, снимем его и установим заново, чтобы платформа пересчитала правила объединения.
- Убедимся, что для формы установлено правило объединения «Взять из конфигурации поставщика».
- Нажмем кнопку «Выполнить». При появлении запроса на сохранение настроек объединения в файл формата XML (с префиксом
MergeSettings) можно нажать кнопку «Отмена» или «Сохранить» — этот файл предназначен лишь для повторного использования правил сопоставления и на результат текущего обновления не влияет.
- Применим изменения в структуре базы данных горячей клавишей F7. В процессе сохранения конфигурации платформа самостоятельно удалит неиспользуемые опции и обновит форму до актуального состояния поставщика.
Способ 2. Загрузка конфигурации из полного файла поставщика (.cf)
Проанализируем ситуацию, когда база должна быть полностью типовой, но ранее в ней была включена возможность изменения (снят «замок»). В этом случае оптимальным решением будет полное восстановление конфигурации поставщика через файл поставки .cf.
Важно: этот способ подходит только для баз, в которых нет нетиповых доработок в коде и структуре метаданных. Все пользовательские данные (документы, справочники, проводки) при этом полностью сохраняются.
- Обязательно создадим резервную копию базы данных (через меню Администрирование — Выгрузить информационную базу).
- Откроем конфигуратор и перейдем в главное меню: Конфигурация — Загрузить конфигурацию из файла.
- Выберем полный файл целевого релиза с расширением
.cf (файл дистрибутива, а не файл обновления .cfu).
- Согласимся с предупреждением о полной замене конфигурации.
- Нажмем кнопку Применить для конфигурации базы данных (F7) и подтвердим реструктуризацию. После этой операции конфигурация вернется на полную поддержку поставщика («Редактирование запрещено»), а все ошибки ссылочной целостности будут автоматически устранены.
Способ 3. Обновление через полное сравнение с файлом .cf
Если в базе присутствуют необходимые доработки и полностью перезаписывать конфигурацию нельзя, разберем обновление через полное сравнение и объединение с файлом .cf нужного релиза:
- Перейдем в меню Конфигурация — Сравнить, объединить с конфигурацией из файла и укажем полный
.cf файл новой версии.
- В открывшемся окне сравнения перейдем в меню Действия и нажмем Снять флажки со всех объектов.
- Включим флажки для тех объектов, которые обновляются от поставщика, обязательно отметив целиком ветку
Документ.СчетНаОплатуПокупателю со всеми формами и реквизитами.
- Откроем настройки объединения (значок шестеренки) и убедимся, что включена опция Разрешить удаление объектов основной конфигурации. Это позволит корректно избавиться от удаленных разработчиком метаданных.
- Нажмем Выполнить и сохраним конфигурацию базы данных (F7).
Способ 4. Ручная очистка ссылок в форме перед установкой обновления
Если конфигуратор по каким-либо причинам блокирует сопоставление форм, рассмотрим превентивную очистку ссылок непосредственно в текущей версии конфигурации до запуска процесса обновления:
- В дереве метаданных основной конфигурации откроем
Документ.СчетНаОплатуПокупателю, найдем форму ФормаДокумента и откроем ее для редактирования.
- В свойствах элементов формы или в реквизитах формы найдем привязку к функциональным опциям
УдалитьИспользоватьСрокиОплатыСчетовПокупателю и УдалитьНеИспользоватьСрокиОплатыСчетовПокупателю.
- Очистим значения этих свойств в палитре свойств или удалим элементы управления, жестко связанные с данными опциями.
- Сохраним изменения в конфигурации базы данных клавишей F7.
- Запустим повторное обновление конфигурации через штатный механизм поддержки. Поскольку форма больше не ссылается на удаляемые объекты, конфликт ссылочной целостности будет исчерпан.