При выполнении обмена данными между двумя конфигурациями 1С:Бухгалтерия предприятия 3.0 с установленным дополнением БИТ.ФИНАНС через универсальную обработку ВыгрузкаЗагрузкаДанныхXML.epf часто возникает специфическая ошибка. Система сообщает об ошибке преобразования данных XDTO, указывая на реквизит бит_КлючСтроки. Рассмотрим причины возникновения этой ситуации и разберем пошаговый алгоритм её решения.
Ошибка вида Ошибка преобразования данных XDTO: НачалоСвойства: бит_КлючСтроки Форма: Элемент возникает в тот момент, когда сериализатор XDTO в базе-приемнике встречает в XML-файле описание свойства (реквизита), которое отсутствует в его текущей модели метаданных. Проанализируем ситуацию: даже если версии конфигураций 1С:Бухгалтерия и релизы БИТ.ФИНАНС в обеих базах идентичны, могут существовать различия на уровне расширений или состава реквизитов конкретных табличных частей.
Реквизит бит_КлючСтроки является служебным полем продукта БИТ.ФИНАНС. Он используется для жесткой связки строк в бухгалтерских документах (например, ПоступлениеНаРасчетныйСчет или СписаниеСРасчетногоСчета) с записями в управленческих регистрах. Если в базе-источнике этот реквизит присутствует в табличной части РасшифровкаПлатежа, а в базе-приемнике — нет (или он имеет другое имя/тип), загрузка прервется критической ошибкой.
Первым делом нам необходимо убедиться, что структуры табличных частей в обеих базах действительно совпадают. Рассмотрим алгоритм сравнения:
ПоступлениеНаРасчетныйСчет.РасшифровкаПлатежа.бит_. Если в одной базе реквизит бит_КлючСтроки существует, а в другой его нет — это и есть причина ошибки.Важно: Проверьте не только основную конфигурацию, но и подключенные расширения. Часто функционал БИТ.ФИНАНС выносится в расширение, и если версии расширений в базах различаются, состав реквизитов будет разным.
Выясним техническую особенность: старые версии обработки ВыгрузкаЗагрузкаДанныхXML.epf не всегда корректно работают с данными, добавленными через механизмы расширений. Проанализируем версию используемого инструмента. Для стабильной работы с современными версиями БП 3.0 на платформе 8.3.20 и выше рекомендуется использовать обработку версии 2.1.8 или встроенные средства обмена из состава БСП.
Если вы используете внешнюю обработку, попробуйте запустить её в режиме отладки и посмотреть на контекст выполнения кода в модуле объекта:
// Пример участка кода, где происходит сбой
ЗаписанноеЗначение = Сериализатор.ПрочитатьXML(ЧтениеXML);
Если Сериализатор не может сопоставить тип данных из XML со схемой базы, он выбрасывает исключение. Проверьте, что в базе-приемнике в расширении БИТ.ФИНАНС установлены флаги "Использовать основные возможности" и "Активно".
Если вы обнаружили, что в базе-приемнике действительно отсутствуют некоторые реквизиты, которые есть в источнике, у вас есть два пути:
Это наиболее правильный метод. Если базы заявлены как идентичные, необходимо выполнить обновление конфигурации или расширения в базе-приемнике до версии источника. После того как реквизит бит_КлючСтроки появится в метаданных приемника, ошибка XDTO исчезнет сама собой.
Рассмотрим ситуацию, когда обновить конфигурацию невозможно, а данные перенести нужно. В этом случае можно воспользоваться текстовым редактором (например, Notepad++) для удаления лишних тегов. Однако, проанализируем риски: простое удаление тега <бит_КлючСтроки> может привести к тому, что в базе-приемнике нарушится связь между бухгалтерским документом и управленческими отчетами БИТ.ФИНАНС.
Если вы решились на этот шаг, используйте регулярные выражения для удаления всех вхождений проблемного тега в XML-файле:
Найти: <бит_КлючСтроки>.*?</бит_КлючСтроки>
Заменить на: (пустая строка)
В самой обработке выгрузки-загрузки есть важная настройка. Рассмотрим её подробнее. При загрузке данных установите флаг "Использовать режим обмена данными при загрузке" (в коде это соответствует свойству ОбменДанными.Загрузка = Истина). Это позволяет игнорировать программные проверки в модулях объектов, которые могут инициироваться при записи документа и вызывать дополнительные ошибки, связанные со специфической логикой БИТ.ФИНАНС.
// Программная установка режима загрузки для объекта
ДокументОбъект.ОбменДанными.Загрузка = Истина;
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
Проанализируем особенности продукта: БИТ.ФИНАНС часто использует собственные механизмы обмена (подсистема "БИТ.Обмен"). Если стандартная выгрузка XML вызывает затруднения из-за динамических изменений структуры данных, рекомендуется использовать штатный функционал продукта. БИТ.Обмен учитывает иерархию метаданных расширения и корректно передает служебные идентификаторы строк.
Подведем итог: ошибка бит_КлючСтроки — это всегда сигнал о десинхронизации структуры метаданных. Для успешного завершения обмена необходимо либо обновить расширения до идентичного состояния, либо использовать версию обработки, поддерживающую работу с динамическими пакетами XDTO расширений 1С.