Как исправить ошибку «Имеются ссылки на удаляемый объект» при обновлении типовой 1С:Бухгалтерии?

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

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

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

Прежде чем переходить к активным действиям, проанализируем ситуацию. Основная причина кроется в рассинхронизации основной конфигурации и конфигурации поставщика. Это может произойти по нескольким причинам:

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

Рассмотрим пошагово методы решения этой проблемы, начиная от самых простых и заканчивая радикальными.

Способ 1: Обновление через временное снятие с поддержки

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

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

Способ 2: Использование полного CF-файла без снятия с поддержки

Многие пользователи привыкли обновляться через файлы обновлений (.cfu). Однако в сложных случаях лучше использовать полный файл конфигурации (.cf). Посмотрим, как это сделать правильно:

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

Способ 3: Очистка кэша и проверка расширений

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

Перейдите в Конфигурация — Расширения конфигурации. Если список не пуст, попробуйте временно отключить все расширения (снять флаг «Активно») или полностью удалить их (предварительно сохранив их в файлы .cfe). После этого повторите попытку обновления.

Также немаловажным фактором является кэш. Для клиент-серверного варианта рекомендуется выполнить следующие действия:

Способ 4: Тестирование и исправление (ТиИ)

Хотя в обсуждении на форуме упоминалось, что ТиИ не всегда помогает, пренебрегать им не стоит. Важно запустить его с правильными настройками. Рассмотрим необходимые параметры:

  1. Реиндексация таблиц информационной базы.
  2. Проверка логической целостности.
  3. Проверка ссылочной целостности.
  4. Пересчет итогов.

В поле «При наличии ссылок на несуществующие объекты» выберите «Очищать ссылки». Это может помочь удалить те самые «призрачные» связи, которые блокируют обновление.

Способ 5: Перенос данных в чистую базу (XML)

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

  1. Создаем абсолютно новую, пустую информационную базу того же релиза, что и ваша текущая (или целевого релиза).
  2. Используем универсальную обработку ВыгрузкаЗагрузкаДанныхXML.epf (её можно найти на диске ИТС).
  3. Выполняем выгрузку всех данных из старой базы и загрузку в новую.

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

Резюме и рекомендации

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

Чтобы избежать подобных проблем в будущем, рекомендуем:

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

← На главную