При выполнении первоначальной выгрузки данных из конфигурации 1С:Бухгалтерия предприятия 3.0 в 1С:Зарплата и управление персоналом 3.1 встроенной обработкой перехода многие специалисты сталкиваются с критической ошибкой загрузки. Программа прерывает процесс и выдает сообщение: "Ошибка записи объекта ТипОбъекта = Регистрация в налоговом органе Объект = <> ОписаниеОшибки = Ошибка при попытке вставки записи с неуникальным значением ссылки. таблица Reference343... КодСообщения = 26".
Давайте подробно разберем эту ситуацию, проанализируем причины ее возникновения и рассмотрим несколько действенных способов, как мы можем решить эту проблему раз и навсегда.
Текст ошибки говорит нам о том, что механизм УниверсальныйОбменДаннымиXML пытается записать в базу-приемник (ЗУП 3.1) объект справочника РегистрацииВНалоговомОргане. Однако в тексте мы видим конструкцию Объект = <>. Это означает, что выгружается "пустышка" — пустая ссылка или объект, не имеющий заполненных реквизитов, но имеющий определенный уникальный идентификатор (GUID).
Ошибка "неуникальное значение ссылки" возникает потому, что система пытается вставить объект с идентификатором, который уже существует в базе-приемнике. Поскольку это пустая ссылка (или служебный элемент), в базах без настроенного разделения префиксов такие пустые GUID-ы могут конфликтовать. Разберем по шагам варианты устранения проблемы.
Часто конфликт уникальности GUID происходит из-за совпадения или отсутствия префиксов информационных баз в настройках синхронизации. Если префиксы не установлены, служебные элементы в обеих базах могут создаваться с одинаковыми идентификаторами.
БП для Бухгалтерии и ЗУ для ЗУП.Самый правильный методологический подход — найти и устранить причину на стороне источника, чтобы не выгружать мусор.
Анализ истории регистраций: Откроем карточку организации в БП 3.0, проверим историю регистраций в налоговых органах и корректность учета НДФЛ. Часто именно там, особенно у обособленных подразделений, может затесаться пустая строка или незаполненное поле. Проанализируем регистры сведений ИсторияРегистрацийВНалоговомОргане.
Поиск битых ссылок: Проблема может крыться в физически удаленном объекте, от которого осталась битая ссылка вида <Объект не найден...>. Выполним следующие действия:
chdbfl.exe (если база файловая), чтобы исключить физическое повреждение таблиц.Также мы можем открыть сам сформированный XML-файл выгрузки любым текстовым редактором, выполнить поиск по строке Регистрация в налоговом органе и найти запись с пустым объектом. По контексту соседних тегов мы легко определим, к какому документу или подразделению привязана эта ошибочная запись.
Если нам нужно срочно загрузить данные, и нет времени вычищать базу-источник, мы можем временно доработать обработку обмена на стороне ЗУП 3.1. Мы отключим прерывание загрузки при ошибке записи незаписанного объекта.
Откроем Конфигуратор ЗУП 3.1, найдем обработку УниверсальныйОбменДаннымиXML, откроем ее модуль объекта и найдем процедуру ПровестиЗаписьНеЗаписанныхОбъектов. В ней найдем строку Объект.Записать();, на которую ругается платформа (обычно в районе строки 13134, как указано в ошибке).
Обернем эту строку в конструкцию Попытка-Исключение:
Попытка
Объект.Записать();
Исключение
// Пропуск ошибки записи пустого или проблемного объекта при обмене
// Сообщить("Пропущен объект: " + Строка(Объект));
КонецПопытки;
После сохранения этой доработки запустим загрузку заново. Система проигнорирует вставку "пустышки", вызывающей конфликт уникальности, и успешно завершит загрузку всех остальных корректных данных. Важно: после успешной загрузки не забудьте вернуть код обработки в исходное типовое состояние!
Если проблема носит массовый характер и мы регулярно выполняем такие переносы, лучшим решением будет отсечь пустые данные еще на этапе формирования файла в БП.
Если Не ЗначениеЗаполнено(Источник) Тогда
Отказ = Истина;
КонецЕсли;
Сохраним новые правила и используем их для выгрузки. Таким образом, пустые и битые ссылки будут полностью игнорироваться механизмом обмена на стороне источника.
Если обмен происходит пакетами (несколькими файлами), мы можем определить, в каком именно файле находится проблемная запись. В интерфейсе списка файлов загрузки (помощника перехода) можно удалить ошибочный файл из списка и продолжить загрузку остальных. Файл загрузится ровно до момента ошибки, а остальные файлы будут загружены полностью. Это быстрый выход, но он не гарантирует, что часть важных данных, которые шли после ошибки в этом файле, не будут потеряны. Использовать этот метод стоит только в крайнем случае.
Напоследок рассмотрим еще один важный момент. В некоторых старых релизах конфигураций 1С официально фиксировались ошибки платформы и прикладных решений, когда реквизит регистрации в налоговом органе вел себя некорректно при выгрузке. Оптимальным шагом перед началом любого масштабного перехода или обмена является обновление обеих баз (и БП 3.0, и ЗУП 3.1) до последних актуальных версий.
Правила конвертации, зашитые внутри типовой обработки помощника перехода, жестко привязаны к структурам метаданных определенных релизов. Несоответствие версий — частая причина появления пустых узлов и ошибок поиска объектов по уникальным идентификаторам.