Необходимо в тег Body файла выгрузки записать XDTO который соответствует объекту
Но при записи добавляются атрибуты xmlns="http://www.sample-package.org" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Читаться файл в базе приемнике должен типовым механизмом
Нужно писать целый объект без использования ЗаписатьНачалоЭлемента и т.п.
Таки никакой, ведь обмен идёт по определённой схеме, с определёнными типами данных, и эта схема должна указываться в объявлении корневого элемента.
Насколько я понимаю, если файл должен читаться типовыми механизмами, то эти механизмы ожидают увидеть схему данных, так что она всегда указывается.
(5) По логике да, но что-то не сходится, в плане обмена указано xmlns:v8msg значит и CatalogObject.Номенклатура должен быть с соответствующим префиксом. Со своей стороны пробовал заменить схему xsd но не получилось добиться того что нужно.
Каким образом тогда нужно отредактировать эту схему?
(6) С какой целью собираетесь редактировать схему. Почему не пользуетесь готовой?
В вашем примере вы объявляете пространство имён tns, но не используете его.
(8) Готовая это какая именно схема? tns подставляется автоматически.
Используется план обмена, конфигурации разные, загрузка в приемник должна осуществляться штатными механизмами, нужно при выгрузки преобразовать объекты для принимающей стороны. Атрибутов при этом быть не должно, так как в приемник не загрузится файл.
При выгрузке писать вручную начало и конец элемента не интересно
(9)А придётся, похоже. Насколько я понимаю, фабрика XDTO работает по схеме. Странно, что принимающая сторона требует отсутствия атрибутов указания схемы для документа.
(10) Принимающая сторона это типовой механизм 1с. Просто одно дело писать объекты через ЗаписатьXML, другое дело через ФабрикаXDTO.ЗаписатьXML. Эти методы пишут только свои объекты. Получаем, что вроде есть сериализация XML, но по двум похожим направлениям и одно в другое не передать.
(11) Возможно, тогда имеет смысл создать свою схему (пакет) на основе структуры приемлемой для принимающей стороны. Приём данных наверняка происходит на основе какой-то схемы, просто на передающей стороне эта схема отсутствует. Честно говоря, сам только недавно занимаюсь обменом.
(12) Так я и создал свою схему через XDTO и выгружать можно и загружать. Но как сказал выше в план обмена нельзя записать XTDO, так как там читается xml через ВозможностьЧтенияXML, и типы которые он ждет не те, что записывает XDTO, т.е. он не может прочитать узел с атрибутами.
Возможно, следует пересмотреть схему. У объекта v8msg:Message должно быть два свойства v8msg:Header и v8msg:Body., а у v8msg:Body свойство CatalogObject.Номенклатура.
В этом месте
фабрика как раз и формирует Номенклатура_Объект как корневой элемент, приписывая атрибуты со схемой. Насколько я понимаю, методом ФабрикаXDTO.ЗаписатьXML должен записываться только корневой объект. В нём будут перечислены все схемы.
(14) Не совсем понял какую схему предлагается поменять, все что v8msg: создается на уровне платформы методом НачатьЗапись, произвольные данные мы можем писать только в узел <v8msg:Body>
Фабрика создаст структуру объекта на основе текущей конфигурации, вам остаётся только заполнить предопределённые поля. На принимающей стороне будет также создана структура на основе, как я понимаю, конфигурации принимающей стороны.
Для вашего исходного примера ошибка при наличии указания типа происходит потому что на принимающей стороне неизвестна схема, которую вы сделали.
(16) Нет, он запишет также запишет эти имена, а быть их там не должно да и структура отличается по именам самих объектов. Вариантов на самом деле нет. Если только вручную формировать или после записи открывать файл и заменять определенную строку.