Как исправить ошибку «Объект не найден» при синхронизации между УТ и БП 3.0?

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

При выполнении регулярного обмена данными между конфигурациями «1С:Управление торговлей» и «1С:Бухгалтерия предприятия 3.0» специалисты часто сталкиваются с ситуацией, когда после планового обновления конфигураций в перенесенных документах реквизиты справочников (таких как Организации, Контрагенты, Номенклатура или Договоры контрагентов) отображаются в виде так называемых «битых ссылок» — надписей «<Объект не найден ...>» с длинным идентификатором GUID.

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

Почему возникает ошибка «Объект не найден» после синхронизации?

Разберем основные причины, приводящие к потере связей между объектами при обмене по формату EnterpriseData:

  1. Отсутствие регистрации самих справочников к выгрузке. Документы (например, РеализацияТоваровУслуг или ПоступлениеТоваровУслуг) были изменены и зарегистрированы к отправке, а сами элементы справочников, на которые они ссылаются, в план обмена не попали. Если правила обмена запрещают автоматическое создание неизвестных элементов «на лету», в базе-приемнике записывается пустая ссылка.
  2. Сбой в служебных регистрах сопоставления. Соответствие между объектами в разных базах хранится в регистрах сведений СоответствияОбъектовИнформационныхБаз и ИдентификаторыОбъектовСинхронизации. После обновления метаданных или изменения правил поиска (по ИНН, КПП, Коду или GUID) старые сопоставления могут стать некорректными.
  3. Односторонний обмен или сбой квитирования. Если обмен настроен только в одну сторону (например, только выгрузка из УТ в БП без обратной передачи ответа), база-источник не получает подтверждения о присвоенных внутренних идентификаторах объектов в приемнике.
  4. Несовпадение версий формата EnterpriseData. Если конфигурации были обновлены несинхронно и используют разные версии схем XDTO, некоторые поля и идентификаторы могут просто игнорироваться при десериализации XML/JSON пакета.

Способ 1. Принудительная перерегистрация справочников в базе-источнике (УТ)

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

  1. В базе «1С:Управление торговлей» перейдем в раздел НСИ и администрирование → Синхронизация данных → Настройки синхронизации данных.
  2. Выделим используемую настройку обмена с «1С:Бухгалтерия предприятия».
  3. Нажмем кнопку «Состав отправляемых данных» (пиктограмма с синим чемоданом или пункт в меню «Еще»).
  4. В открывшемся окне найдем дерево метаданных, раскроем ветку Справочники.
  5. Кликнем правой кнопкой мыши по проблемным справочникам (Организации, Контрагенты, Номенклатура, Договоры контрагентов, Склады) и выберем команду «Зарегистрировать все объекты».
  6. Запустим сеанс синхронизации данных. В процессе обмена элементы будут заново прочитаны базой-приемником и привяжутся к соответствующим полям документов.

Способ 2. Интерактивная синхронизация и ручное сопоставление данных

Если автоматический обмен не может однозначно идентифицировать объекты по ключевым реквизитам, выполним сопоставление вручную:

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

Способ 3. Очистка поврежденных записей в регистрах синхронизации

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

Перейдем через Главное меню → Функции для технического специалиста (или «Все функции») к следующим регистрам сведений:

  1. СоответствияОбъектовИнформационныхБаз
  2. ИдентификаторыОбъектовСинхронизации
  3. ПубличныеИдентификаторыСинхронизируемыхОбъектов

Если в колонках этих регистров отображаются битые ссылки вида <Объект не найден...>, такие записи необходимо удалить. При следующем сеансе синхронизации механизм сопоставления сформирует правильные связи заново.

Для программной проверки и очистки битых записей можно использовать следующий фрагмент кода на встроенном языке 1С:


НаборЗаписей = РегистрыСведений.СоответствияОбъектовИнформационныхБаз.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();

Индекс = НаборЗаписей.Количество() - 1;
Пока Индекс >= 0 Цикл
    ТекущаяЗапись = НаборЗаписей[Индекс];
    
    // Проверяем наличие битой ссылки
    Если Не ЗначениеЗаполнено(ТекущаяЗапись.УникальныйИдентификаторИсточника) 
        Или Строка(ТекущаяЗапись.Приемник) = "<Объект не найден>" Тогда
        НаборЗаписей.Удалить(Индекс);
    КонецЕсли;
    
    Индекс = Индекс - 1;
КонецЦикла;

Если НаборЗаписей.Модифицированность() Тогда
    НаборЗаписей.Записать();
КонецЕсли;

Способ 4. Тестирование и исправление ссылочной целостности в БП 3.0

Если документы уже были записаны и проведены с пустыми ссылками, восстановим ссылочную целостность базы стандартными средствами платформы:

  1. Создадим резервную копию информационной базы «1С:Бухгалтерия предприятия».
  2. Запустим базу в режиме «Конфигуратор».
  3. В меню перейдем: Администрирование → Тестирование и исправление...
  4. Установим флажки напротив пунктов:
    1. Проверка логической целостности информационной базы;
    2. Проверка ссылочной целостности информационной базы.
  5. В блоке «При наличии ссылок на несуществующие объекты» установим переключатель в положение «Создавать объекты».
  6. Нажмем «Выполнить». Платформа автоматически сгенерирует элементы справочников под существующие GUID, после чего повторная выгрузка из УТ заполнит их реквизиты корректными данными.
← На главную