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