Несоответствие между схемой XSD и выгруженным XML файлом. #729207


#0 by ugroblin
Доброго дня всем. Наткнулся на такую проблему: Выгрузил схему конфигурации, в ней у справочник контрагенты первым указан ЭтоГруппа, потом ссылка: <xs:element name="Ref" type="tns:CatalogRef.Контрагенты"/><xs:element name="DeletionMark" type="xs:boolean"/> <xs:element name="Parent" type="tns:CatalogRef.Контрагенты"/><xs:element name="Code" type="xs:string"/> Выгружаю через ВыгрузкуЗагрузкуДанныхXML (через метод             ЗаписатьXML(ЗаписьXML, Объект)) В выгрузке сперва идет ссылка, потом ЭтоГруппа. <CatalogObject.Контрагенты> Если этот же файл загружать - загружается нормально, а вот при загрузке файла из внешней системы (сделанного по высланной схеме) выдается ошибка. Если в этом внешнем файле поменять местами реквизиты ЭтоГруппа и Ссылка, то загружается нормально. Вопросы: почему платформа выгружает нерабочую схему? можно ли исправить? PS. Писать для каждого справочника свой XDTO пакет совсем не хочется.
#1 by Maxus43
что мешает в схеме местами поменять? а не в данных уже менять?
#2 by Fragster
чтобы выгружать по схеме - надо выгружать СериализатоXDTO.ЗаписатьXML, а не просто ЗаписатьXML
#3 by Fragster
они немного разные :(
#4 by ugroblin
Там во многих справочниках такая ситуация. + хотелось бы понять почему платформа так себя ведет. я не использую XDTO. Захотели с внешней системы своими силами ко мне выгружать готовые хмлки- я им выгрузил схему всей конфигурации (правой кнопкой на XDTO-пакеты в дереве конфигурации). Если платформа использует другую схему для сериализации через метод ЗаписатьXML, то где её взять?
#5 by ugroblin
Совсем забыл: платформа 8.3.5.1119
#6 by ugroblin
Мне сейчас надо отловить все несоответствия между выгружаемым ХМЛ и схемой. Потом исправленную схему отправить на согласование, на той стороне будут свой механизм выгрузки дорабатывать. И всё из-за того, что схема выгружаемая платформой и схема используемая ей же при сериализации/десериализации объекта стандартным методом  отличаются. Кто нибудь знает как вытащить валидную схему(через которую работают ЗаписатьXML/ПрочитатьXML)?
#7 by Fragster
проще заменить вызовы на СериализаторXDTO.ххх
#8 by tridog
Ты выгрузил схему XDTO-фабрики. Эту схему использует XDTO-сериалихатор, чтобы файл соответствовал схеме нужно писать им. Касательно просто ЗаписатьXML - не факт, что там вообще запись идет по какой-либо схеме.
#9 by RomaH
это вообще-то с точки зрения XML идентичные записи просто загрузка во внешней системе написана криво
#10 by ugroblin
загрузка во внешней системе написана криво. Загрузка происходит из внешней системы в через стандартный метод ПрочитатьXML. Именно в 1С от перестановки местами атрибутов работает/не работает загрузка.
#11 by ugroblin
из внешней системы в 1С
#12 by RomaH
ничего не понял 1С не может загрузить файл с другом порядком атрибутов?
#13 by ugroblin
Да. Я сформировал схему, в ней сперва IsFolder потом Ref. Передал эту схему другой компании, они написали выгрузку у себя (не из 1С). Эта выгрузка, сделанная по схеме, не грузится в 1С методом ПрочитатьXML. В файле ручками ставлю Ref перед IsFolder - успешно загружается. Если из 1С выгрузить через ЗаписатьXML, то в файле Ref стоит перед IsFolder. Такой файл тоже нормально загружается.
#14 by Fragster
это не идентичные записи. Строгий или нет порядок -  настраивается в схеме, возможны ли пропуски, возможны ли дополнительные произвольные элементы - также в ней настраивается.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С