Почему ТИИ в 1С не создает объекты по битым ссылкам и как это исправить

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

В процессе административного обслуживания информационных баз 1С специалисты часто сталкиваются с появлением битых ссылок — элементов, которые отображаются в интерфейсе как <Объект не найден> с указанием уникального идентификатора (GUID). Естественным шагом для исправления данной ошибки является запуск процедуры Тестирование и исправление информационной базы (ТИИ) с включенной опцией «Создавать объекты» при проверке ссылочной целостности. Однако на практике встречаются ситуации, когда регламентное задание ТИИ находит сотни битых ссылок, но не создает необходимые объекты-заглушки. Проанализируем, почему возникает такое поведение платформы «1С:Предприятие» и какими способами можно восстановить целостность данных.

Главная причина: Использование режима разделения данных (Data Area)

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

Когда процедура ТИИ сталкивается с битой ссылкой на разделяемый объект, платформа не может однозначно определить, к какой именно области данных (Data Area ID) должен относиться создаваемый элемент-заглушка. Чтобы избежать случайного перемешивания или искажения данных в независимых областях разделения, платформа блокирует автоматическое создание элементов. В журнал регистрации и отчет ТИИ выводится лишь предупреждение о наличии ошибки ссылочной целостности, а сами объекты автоматически не создаются. В этом случае требуется ручное или программное вмешательство.

Другие причины, препятствующие созданию объектов при ТИИ

Помимо разделения данных, существуют и другие особенности архитектуры платформы, из-за которых ТИИ может пропускать создание объектов:

  1. Предопределенные элементы: Если битая ссылка указывает на предопределенный элемент справочника, плана счетов или плана видов характеристик, ТИИ не сможет воссоздать его автоматической заглушкой. Платформа не способна восстановить зафиксированное в конфигураторе имя предопределенного элемента исключительно по его GUID.
  2. Сложные типы метаданных (Документы, Бизнес-процессы, Задачи): Для простых справочников платформа легко генерирует пустой элемент. Однако для документов или задач создание корректной записи требует заполнения обязательных реквизитов и выполнения программных проверок в модуле объекта при записи. В некоторых случаях проверки в коде блокируют сохранение заглушки.
  3. Особенности конкретных релизов платформы: В некоторых релизах платформы 1С v8.3 (особенно в файловом варианте) встречаются программные особенности реструктуризации и тестирования данных, когда запись объектов сбойных таблиц пропускается из-за блокировок или ошибок доступа.

Вариант 1. Очистка ссылок вместо создания объектов

Проанализируем ситуацию, когда сами восстановленные элементы-заглушки не представляют бизнес-ценности для пользователей (например, при разделении базы через РИБ для подчиненных узлов). В таком случае создание пустых справочников или документов только загромождает базу данных.

Чтобы быстро и красиво привести информационную базу в порядок, рекомендуется переключить режим обработки ссылок в настройках ТИИ:

  1. Откроем режим 1С:Предприятие в монопольном режиме под правами администратора.
  2. Перейдем в меню Администрирование — Тестирование и исправление.
  3. В разделе При наличии ссылок на несуществующие объекты выберем вариант «Очищать ссылки» (вместо «Создавать объекты»).
  4. Запустим процедуру тестирования. Платформа удалит битые UUID из реквизитов и табличных частей, оставив поля пустыми, что полностью избавит базу от невалидных ссылок.

Вариант 2. Повторная регистрация и синхронизация в РИБ

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

  1. В центральной базе откроем обработку Регистрация изменений для обмена.
  2. Найдем объекты, ссылочная целостность которых нарушена в подчиненной базе.
  3. Зарегистрируем данные объекты к обмену для конкретного подчиненного узла.
  4. Выполним сеанс синхронизации данных. Объекты перенесутся из центра с сохранением исходных UUID и всех реквизитов.

Вариант 3. Программное создание объектов по GUID

Если необходимо создать объекты-заглушки вручную с сохранением конкретного уникального идентификатора, воспользуемся программным кодом. Разберем по шагам, как извлечь UUID из текста ссылки и восстановить объект в справочнике.

Рассмотри пример кода для программного восстановления элемента справочника по его уникальному идентификатору:


// Указываем найденный в интерфейсе UUID битой ссылки
СтрокаGUID = "e1c2b3d4-5678-90ab-cdef-1234567890ab";
ИмяСправочника = "Номенклатура";

// Формируем уникальный идентификатор
НовыйУид = Новый УникальныйИдентификатор(СтрокаGUID);

// Получаем ссылку на будущий объект
СсылкаНаОбъект = Справочники[ИмяСправочника].ПолучитьСсылку(НовыйУид);

// Создаем новый элемент справочника
НовыйОбъект = Справочники[ИмяСправочника].СоздатьЭлемент();

// Назначаем объекту зафиксированный ранее GUID
НовыйОбъект.УстановитьСсылкуНового(СсылкаНаОбъект);
НовыйОбъект.Наименование = "Восстановленный объект (заглушка)";

Попытка
    НовыйОбъект.Записать();
    Сообщить("Объект успешно создан с GUID: " + СтрокаGUID);
Исключение
    Сообщить("Не удалось записать объект: " + ОписаниеОшибки());
КонецПопытки;

В приведенном коде метод УстановитьСсылкуНового() позволяет жестко привязать новый элемент к исходному УникальныйИдентификатор, благодаря чему битая ссылка <Объект не найден> мгновенно подменяется созданным элементом во всех документах и регистрах.

Вариант 4. Использование сторонних специализированных обработок

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

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

← На главную