Как исправить ошибку ссылок на удаляемые функциональные опции при обновлении 1С:Бухгалтерия 3.0?

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

В процессе штатного обновления конфигурации «1С:Бухгалтерия предприятия 3.0» через конфигуратор разработчики и администраторы нередко сталкиваются с ситуацией, когда процедура прерывается критическим сообщением платформы. Проанализируем типичную ошибку: система сообщает, что на удаляемый объект метаданных (например, ФункциональнаяОпция.УдалитьИспользоватьСрокиОплатыСчетовПокупателю или ФункциональнаяОпция.УдалитьНеИспользоватьСрокиОплатыСчетовПокупателю) имеются ссылки в объектах основной конфигурации, чаще всего — в Документ.СчетНаОплатуПокупателю.Форма.ФормаДокумента.Форма. В результате процесс обновления блокируется, а кнопка применения изменений становится недоступной.

Выясним причину такого поведения платформы «1С:Предприятие 8.3» и разберем по шагам проверенные варианты устранения проблемы.

Причины возникновения ошибки

Разберем механизм работы поддержки и обновления конфигураций в платформе 1С. Подобный сбой происходит при совпадении двух ключевых факторов:

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

Способ 1. Принудительное включение подчиненных объектов в окне сравнения и объединения

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

Когда конфигуратор выполняет сравнение конфигураций и формирует дерево изменений, выполним следующие действия:

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

Способ 2. Загрузка конфигурации из полного файла поставщика (.cf)

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

Важно: этот способ подходит только для баз, в которых нет нетиповых доработок в коде и структуре метаданных. Все пользовательские данные (документы, справочники, проводки) при этом полностью сохраняются.

  1. Обязательно создадим резервную копию базы данных (через меню Администрирование — Выгрузить информационную базу).
  2. Откроем конфигуратор и перейдем в главное меню: Конфигурация — Загрузить конфигурацию из файла.
  3. Выберем полный файл целевого релиза с расширением .cf (файл дистрибутива, а не файл обновления .cfu).
  4. Согласимся с предупреждением о полной замене конфигурации.
  5. Нажмем кнопку Применить для конфигурации базы данных (F7) и подтвердим реструктуризацию. После этой операции конфигурация вернется на полную поддержку поставщика («Редактирование запрещено»), а все ошибки ссылочной целостности будут автоматически устранены.

Способ 3. Обновление через полное сравнение с файлом .cf

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

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

Способ 4. Ручная очистка ссылок в форме перед установкой обновления

Если конфигуратор по каким-либо причинам блокирует сопоставление форм, рассмотрим превентивную очистку ссылок непосредственно в текущей версии конфигурации до запуска процесса обновления:

  1. В дереве метаданных основной конфигурации откроем Документ.СчетНаОплатуПокупателю, найдем форму ФормаДокумента и откроем ее для редактирования.
  2. В свойствах элементов формы или в реквизитах формы найдем привязку к функциональным опциям УдалитьИспользоватьСрокиОплатыСчетовПокупателю и УдалитьНеИспользоватьСрокиОплатыСчетовПокупателю.
  3. Очистим значения этих свойств в палитре свойств или удалим элементы управления, жестко связанные с данными опциями.
  4. Сохраним изменения в конфигурации базы данных клавишей F7.
  5. Запустим повторное обновление конфигурации через штатный механизм поддержки. Поскольку форма больше не ссылается на удаляемые объекты, конфликт ссылочной целостности будет исчерпан.
← На главную