Что делать при появлении окна неразрешимых ссылок при обновлении конфигурации 1С

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

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

Причины появления окна контроля ссылок при объединении

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

  1. Удаление или переименование объектов поставщиком. В новой версии конфигурации поставщика был удален или переименован реквизит, табличная часть, форма или общий модуль, к которому обращается программный код доработанных объектов.
  2. Изменение состава типов данных. Поставщик сузил или изменил составной тип реквизита, убрав тип, на который опирается логика кастомного функционала.
  3. Снятие отметок с зависимых объектов. В окне сравнения и объединения вручную был снят флажок с объекта, необходимого для корректной работы других отмеченных к обновлению метаданных.
  4. Конфликт модификаций форм и модулей. На управляемой форме документа (например, ОприходованиеТоваров) или справочника Номенклатура были удалены или перепривязаны элементы, в то время как кастомный алгоритм обращается к старым элементам формы.

Разбор последствий: «Пометить все для объединения» или «Продолжить»

Платформа предлагает два принципиально разных сценария продолжения операции. Выясним последствия каждого из них:

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

Пошаговый алгоритм безопасного обновления доработанной конфигурации

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

  1. Создание резервной копии. Перед любыми манипуляциями обязательно выгружаем информационную базу в файл выгрузки (.dt) или сохраняем файл конфигурации базы данных (.cf).
  2. Анализ доработок с помощью трехстороннего сравнения. В окне Сравнение, объединение с конфигурацией при обновлении нажимаем кнопку Настройка фильтра (или Фильтр) и последовательно анализируем:
    • Фильтр Показывать дважды измененные свойства — покажет только те объекты, которые были изменены и вами, и разработчиками типового решения в новом релизе.
    • Фильтр Показывать изменения основной конфигурации по отношению к старой конфигурации поставщика — выведет полный перечень всех когда-либо внесенных доработок в вашу базу.
  3. Детальный анализ связей. В появившемся окне неразрешимых ссылок разворачиваем иерархическое дерево и находим конкретные элементы (например, реквизиты справочника Номенклатура или элементы формы документа ОприходованиеТоваров), вызвавшие конфликт.
  4. Ручное объединение модулей и форм. Для дважды измененных объектов выбираем режим объединения с ручным переносом кода или режим Объединить с приоритетом основной конфигурации, если типовые изменения данного узла не критичны, с последующим ручным внедрением нового типового кода.
  5. Синтаксический контроль и поиск битых ссылок. После завершения объединения, до сохранения конфигурации базы данных (до нажатия F5 или клавиши обновления БД), обязательно запускаем встроенный инструмент: главное меню Конфигурация — Проверка конфигурации.... Устанавливаем флаги Поиск некорректных ссылок, Синтаксический контроль модулей и Проверка логической целостности.

Рекомендации по переводу кастомного кода в расширения

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

Посмотрим на пример перехвата логики формы через аннотацию &После в модуле расширения вместо прямого редактирования типовой формы:


&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Добавляем кастомную логику без снятия типовой формы с поддержки
    Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
        Элементы.ГруппаДополнительно.Видимость = Истина;
    КонецЕсли;
КонецПроцедуры

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

← На главную