Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
26 сен 2021, 06:00

Нарушен порядок следования значений свойств

Автор mmartinov, 30 ноя 2018, 14:58

0 Пользователей и 1 гость просматривают эту тему.

mmartinov

Добрый день!

Формирую в сторонней системе выгрузку в формате Enterprise Data v1.3. Поля оформил согласно документации, сравнивал с выгрузкой, которую позволяет формировать сам 1С.
Но при загрузке в базу получаю ошибку:
"Нарушен порядок следования значений свойств"
Проблема, судя по всему, в порядке тегов в составе Документ.РеализацияТоваровУслуг (к слову, первый раз вижу, чтобы порядок был важен). Сколько бы я не менял порядок элементов в соответствии с тем, что определен в пакете (и XSD-схеме), получаю ту же ошибку, но на разные теги.

По ошибку удалось найти обсуждение https://www.forum.mista.ru/topic.php?id=636049
Но изменение значений Упорядоченный и Последовательный для типа Документ.РеализацияТоваровУслуг ни к чему не приводят.

Как же все-таки загрузить документ в систему? Где же описан правильный порядок элементов в документе, или как отключить его проверку?

antoneus

А если для Ответственного еще изменить?

mmartinov

Если после КлючевыеСвойствa поставить ВидОперации, будет ругаться уже на это поле, а там всего-лишь string. Дело именно в порядке этих тегов, а не содержимом.

mmartinov

Неужели никто с этим не сталкивался?

LexaK

сталкивались, при обмене между двумя идентичными базами (через обработку универсальной выгрузки/загрузки данных), если происходит нарушение идентичности баз(даже если одно поле/реквизит) передвинули на одну позицию выше/ниже, появляется такая ошибка.
два пути решения
1.привести к полной идентичности эти две базц, между которыми осушествляете обмен, повторить процедуру выгрузки затем загрузи
2.использовать механизмы Конвертации данных, в этом случае вы не зависите от порядка и наличия полей/реквизитов для обмена
3.если используете настройки ХДТО-пакетов (возможно возможно их понастраивать - не знаю, не использовал)
ответ Понравился? (в смысле пригодился?)

mmartinov

Проблема оказалась как и в порядке тегов в XML (потому что в XSD везде указано sequence), так и в опечатке - в теге договора КлючевыеСвойства буква С была написана латиницей.

В процессе тестирования XML на валидность, я внес несколько исправлений в XSD, чтобы ее мог читать хоть кто-нибудь кроме 1С. Например, для валидации можно использовать следующий код на python3:

from lxml import etree
schema = etree.XMLSchema(file='XSDschemeEntepriseData13_fixed.xsd')

with open('enterprise_data_test.xml', 'r') as xml_file:
  xml = xml_file.read()

message = etree.fromstring(xml)
body = message.getchildren()[1]
for i in body.getchildren():
  schema.assertValid(i)

Если не падает с ошибками, при загрузке в 1С ошибок быть не должно.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск