Как исправить ошибку «На удаляемый объект Константа.ВидКонтроляТоваровОрганизаций есть ссылка» при обновлении УТ 11

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Выясним причину возникновения ошибки

Для начала проанализируем ситуацию. В релизах серии 11.4.13 (начиная с .47 и выше) компания 1С провела глобальную реорганизацию механизмов межфирменных продаж, известных как Интеркампани, и контроля остатков товаров. В новой архитектуре старая константа ВидКонтроляТоваровОрганизаций была признана избыточной и удалена из метаданных. Однако в коде или визуальном составе форм (в частности, в форме Предприятие обработки ПанельАдминистрированияУТ) ссылки на этот объект могли сохраниться по ошибке или из-за специфического состояния кэша конфигурации.

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

Способ 1. Ручная очистка формы в Конфигураторе

Этот метод является наиболее надежным и быстрым, если вы точно знаете, где «застряла» ссылка. Рассмотрим алгоритм действий:

  1. Откроем информационную базу в режиме Конфигуратор на текущей версии (до обновления, например, на 11.4.13.47).
  2. В дереве метаданных найдем объект: Обработки -> ПанельАдминистрированияУТ -> Формы -> Предприятие.
  3. Щелкнем правой кнопкой мыши по форме и выберем пункт «Редактировать».
  4. Перейдем на вкладку «Элементы» (левая верхняя часть окна редактора формы). Просмотрим список элементов управления. Если мы видим поле, связанное с константой ВидКонтроляТоваровОрганизаций, его необходимо выделить и нажать Delete.
  5. Перейдем на вкладку «Реквизиты» (правая часть окна). Проверим, нет ли там реквизита формы, который ссылается на эту константу. Если он есть — удаляем его.
  6. Самый важный этап — проверка программного кода. Нажмем F7 или перейдем на вкладку «Модуль». Нажмем Ctrl + F и введем текст ВидКонтроляТоваровОрганизаций.

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


// Пример того, что нужно найти и обезвредить:
// Элементы.ГруппаКонтроляТоваров.Видимость = Константы.ВидКонтроляТоваровОрганизаций.Получить() <> Перечисления.ВидыКонтроляТоваров.НеКонтролировать;

После внесения правок сохраним конфигурацию (Ctrl + S) и обновим конфигурацию базы данных (F7). Только после этого запускаем процесс обновления на новый релиз.

Способ 2. Использование встроенной проверки конфигурации

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

Зайдем в меню Конфигурация — Проверка конфигурации. В открывшемся окне настроек обязательно установим галочку «Поиск ссылок на удаляемые объекты». Рекомендуется также оставить проверку логической целостности. Нажмем «ОК».

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

Способ 3. Прямое обновление на более свежий релиз

Как показывает практика и обсуждения специалистов, иногда ошибка проявляется только при последовательном обновлении (например, с .47 на .51). Если мы попробуем обновиться сразу на релиз 11.4.13.71 или выше, конфигуратор может отработать корректно, так как в более поздних поставках (файлах .cf) разработчики 1С уже окончательно вычистили все зависимости.

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

  1. Запустите базу в режиме «1С:Предприятие».
  2. Перейдите в раздел НСИ и администрирование — Обслуживание — Результаты обновления программы.
  3. Нажмите на ссылку «Результаты обновления и дополнительные процедуры».
  4. Убедитесь, что все отложенные обработчики завершены успешно. Если есть ошибки — запустите их выполнение вручную.

Способ 4. Очистка кэша метаданных

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

1С сохраняет промежуточные состояния объектов для ускорения работы. Чтобы исключить влияние старых данных, выполним следующие шаги:

Проанализируем дополнительные настройки

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

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

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

← На главную