При выполнении первичной синхронизации данных между конфигурациями 1С:Бухгалтерия 3.0 и 1С:Управление торговлей 11 (особенно если перед этим выполнялся перенос данных из устаревших версий, например 1С:Предприятия 7.7) процесс выгрузки данных может прерываться с неинформативной ошибкой: «Во время отправки данных возникли ошибки (см. журнал регистраций)». При этом в самом журнале регистрации подробностей сбоя и конкретных ссылок на проблемные элементы часто не оказывается.
Разберем основные причины такого поведения механизма синхронизации через универсальный формат (EnterpriseData) и рассмотрим пошаговые методы диагностики и исправления данных.
Выгрузка через универсальный формат валидирует данные согласно строгой XDTO-схеме. Сбой на этапе формирования пакета выгрузки чаще всего вызывают следующие факторы:
ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат остаются записи с признаком <Объект не найден>. Попытка их сериализации приводит к критической ошибке.ЗаписьXML не может сформировать валидный файл.Когда зарегистрировано большое количество объектов (от нескольких тысяч до десятков тысяч), локализовать проблему проще всего путем сужения круга поиска через выборочную регистрацию.
Разберем алгоритм по шагам:
СинхронизацияДанныхЧерезУниверсальныйФормат.Справочник.Организации, и запустим синхронизацию.Контрагенты, Номенклатура и так далее.Для прямого выявления места падения выгрузки воспользуемся встроенным отладчиком платформы 1С:Предприятие.
Разберем порядок действий:
-debug (или запустим сеанс в режиме отладки).МенеджерОбменаЧерезУниверсальныйФормат или общего модуля ОбменДаннымиXDTOСервер.Объект или Источник), чтобы получить ссылку на сбойную запись информационной базы.Если при анализе плана обмена выявляются битые ссылки или записи с типом <Объект не найден>, выполним регламентные процедуры восстановления базы данных:
Очищать ссылки или Создавать объекты в зависимости от учетной политики).Если выгрузка падает в момент записи XML-потока, причиной могут являться непечатные символы. Для поиска проблемных значений в перенесенных строковых полях можно использовать программную проверку символов с кодом меньше 32.
Посмотрим на пример функции для проверки строки на наличие недопустимых символов:
Функция СодержитНедопустимыеСимволыXML(Знач ПроверяемыйТекст) Экспорт
Для Сч = 1 По СтрДлина(ПроверяемыйТекст) Цикл
КодСимвола = КодСимвола(ПроверяемыйТекст, Сч);
// Разрешены: 9 (Tab), 10 (LF), 13 (CR), от 32 и выше
Если КодСимвола < 32 И КодСимвола <> 9 И КодСимвола <> 10 И КодСимвола <> 13 Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
Обнаружив с помощью данной проверки проблемные элементы номенклатуры, контрагентов или документов, достаточно перезаписать строковые реквизиты, удалив управляющие символы, после чего повторить сеанс обмена.