При выполнении регулярного обмена данными между конфигурациями «1С:Управление торговлей» и «1С:Бухгалтерия предприятия 3.0» специалисты часто сталкиваются с ситуацией, когда после планового обновления конфигураций в перенесенных документах реквизиты справочников (таких как Организации, Контрагенты, Номенклатура или Договоры контрагентов) отображаются в виде так называемых «битых ссылок» — надписей «<Объект не найден ...>» с длинным идентификатором GUID.
Проанализируем природу этой ошибки, выясним технические причины ее возникновения и разберем по шагам действенные методы устранения проблемы.
Разберем основные причины, приводящие к потере связей между объектами при обмене по формату EnterpriseData:
РеализацияТоваровУслуг или ПоступлениеТоваровУслуг) были изменены и зарегистрированы к отправке, а сами элементы справочников, на которые они ссылаются, в план обмена не попали. Если правила обмена запрещают автоматическое создание неизвестных элементов «на лету», в базе-приемнике записывается пустая ссылка.СоответствияОбъектовИнформационныхБаз и ИдентификаторыОбъектовСинхронизации. После обновления метаданных или изменения правил поиска (по ИНН, КПП, Коду или GUID) старые сопоставления могут стать некорректными.Рассмотрим самый надежный и быстрый способ восстановления целостности данных с помощью типового механизма регистрации изменений.
Организации, Контрагенты, Номенклатура, Договоры контрагентов, Склады) и выберем команду «Зарегистрировать все объекты».Если автоматический обмен не может однозначно идентифицировать объекты по ключевым реквизитам, выполним сопоставление вручную:
ИНН/КПП для контрагентов, по Артикулу и Наименованию для номенклатуры) либо вручную укажем соответствие между элементами обеих баз.Разберем ситуацию, когда в служебных таблицах соответствий «зависли» некорректные идентификаторы, из-за чего система не может привязать существующий объект.
Перейдем через Главное меню → Функции для технического специалиста (или «Все функции») к следующим регистрам сведений:
СоответствияОбъектовИнформационныхБазИдентификаторыОбъектовСинхронизацииПубличныеИдентификаторыСинхронизируемыхОбъектовЕсли в колонках этих регистров отображаются битые ссылки вида <Объект не найден...>, такие записи необходимо удалить. При следующем сеансе синхронизации механизм сопоставления сформирует правильные связи заново.
Для программной проверки и очистки битых записей можно использовать следующий фрагмент кода на встроенном языке 1С:
НаборЗаписей = РегистрыСведений.СоответствияОбъектовИнформационныхБаз.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Индекс = НаборЗаписей.Количество() - 1;
Пока Индекс >= 0 Цикл
ТекущаяЗапись = НаборЗаписей[Индекс];
// Проверяем наличие битой ссылки
Если Не ЗначениеЗаполнено(ТекущаяЗапись.УникальныйИдентификаторИсточника)
Или Строка(ТекущаяЗапись.Приемник) = "<Объект не найден>" Тогда
НаборЗаписей.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
Если НаборЗаписей.Модифицированность() Тогда
НаборЗаписей.Записать();
КонецЕсли;
Если документы уже были записаны и проведены с пустыми ссылками, восстановим ссылочную целостность базы стандартными средствами платформы:
GUID, после чего повторная выгрузка из УТ заполнит их реквизиты корректными данными.