Описание проблемы
Проблема возникла при попытке обновления конфигурации «1С:Управление нашей фирмой», редакция 3.0.5.211 до 3.0.6.171. Сначала специалисты поддержки пробовали обновить базу обновлятором в автоматическом режиме, в результате получили ошибку без подробностей. Ручное обновление через конфигуратор при сохранении конфигурации выдало ошибку:
«В процессе обновления информационной базы произошла критическая ошибка по причине: Ссылочная константа содержит недопустимый ссылочный номер таблицы 34332:9c17000c2997f9cd11edb81726667ea2»
Серфинг в интернете показал, что проблема всплывает в самых разных релизах платформы и в разных конфигурациях. На форумах обычно советуют либо менять платформу, либо писать на хотлайн 1C. Ничего полезного не нашел. Обычно переписка с отделом технической поддержки отнимает много времени и сил, а менять платформу кажется бесполезным, т. к. она достаточно свежая, и, судя по сообщениям в интернете, проблема не зависит от релиза платформы. Попробуем разобраться самостоятельно.
Расследование по шагам
Шаг 1
Судя по ошибке, похоже, есть какая-то константа, которая ссылается на объект 9c17000c2997f9cd11edb81726667ea2 в таблице 34332. Начнём с поиска объекта.
Берём номер таблицы 34332, идём в обработку просмотра структуры таблиц БД. Получаем структуру и фильтруем по номеру таблицы. Видим, что проблема в расширении (имя таблицы заканчивается на X1), а именно в справочнике Проектов Б24.
Шаг 2
Идём в конфигуратор, открываем расширение с этим справочником. Проверяем типы констант и видим, что ни в одной из них нет ссылки на справочник проектов. Возможно ошибка некорректно сообщает о константе, может, проблема где-то в другом месте?
Шаг 3
Попробуем посмотреть, что за проблемный проект и какие на него есть ссылки. Для этого идём в справочник проектов, открываем любой элемент, копируем на него ссылку и меняем в ней параметр ref, на идентификатор объекта из ошибки:
e1cib/data/Справочник.bpca_ПроектыБитрикс24?ref=9c17000c2997f9cd11edb81726667ea2
Берём полученную ссылку, переходим по ней, открывается искомый элемент.
Шаг 4
Открываем встроенный в «1С:УНФ» поиск ссылок на объект, указываем наш объект и видим, что никакой константы нет. Есть только ссылки на РС «История по задаче» (он добавлен в том же расширении, что и справочник проектов) и типовой РС УНФ «Неудалённые объекты».
Скорее всего в рамках одного расширения проблем не должно быть, а вот ссылки в объекте основной конфигурации на объекты расширений могут быть тонким местом.
Шаг 5
Удаляем запись из РС «Неудалённые объекты» и пробуем сохранить обновлённую конфигурацию.
Ждём…. и снова ошибка, но ссылка уже другая:
В процессе обновления информационной базы произошла критическая ошибка по причине: Ссылочная константа содержит недопустимый ссылочный номер таблицы
30966:9c30000c2997f9cd11eeaed5a57a9f37
Шаг 6
Повторяем поиск объекта (здесь уже другой справочник, но из того же расширения), повторяем поиск ссылок на проблемный объект и снова видим ссылки на РС «Неудалённые объекты».
Похоже, что удаление записи помогло, но реструктуризация падает на следующей записи, где в РС из основной конфигурации добавлена ссылка на объект из расширения. Нужно удалить все подобные ссылки.
Шаг 7
Поскольку данный РС «Неудалённые объекты» не является критичным для работы, принимаем решение полностью очистить его и не тратить время на написание обработки для поиска проблемных ссылок. Очищаем РС, снова пробуем выполнить реструктуризацию БД.
Ждем…. и вуаля, реструктуризация прошла!
Проблема была не в ссылочной константе, как нам говорила платформа, а в регистре сведений, созданном в основной конфигурации и ссылающимся на объекты в расширении.
Надеюсь, информация будет полезной и поможет решить подобную проблему.