Разработка корректной XSD схемы для обработки xml файла в 1С
Выполнено
10 августа 2020 в 14:08:52
(4 года 15 недель 2 дня 3 часа назад)
700
15.08.2019 10:48:40
Текст задания
Есть файл xml с плавающей структурой.
Возможные варианты структуры
1. Основной, когда есть данные
<result>
<status>1</status> строка
<price_results>
<price_result>
<oem></oem> строка
<make_name></make_name> строка
<detail_name> </detail_name> строка
<qnt></qnt> число
<min_qnt></min_qnt> число
<cost></cost> число
<first_cost></first_cost> число
<raw_cost></raw_cost> число
<price_name></price_name> строка
<price_id></price_id> строка
<stat></stat> число
<sup_logo></sup_logo> строка
<visible_sup_logo></visible_sup_logo> строка
<min_delivery_day></min_delivery_day> число
<max_delivery_day></max_delivery_day> число
<art_type_id></art_type_id> строка
<selected_item></selected_item> булево
<hash_key></hash_key> строка
<selected_color></selected_color> строка
<sys_info></sys_info> строка
<weight></weight> число
<volume></volume> число
<supplier_id></supplier_id> строка
<supplier_inn></supplier_inn> строка
<mix_supplier></mix_supplier> строка
<full_comment></full_comment> строка
</price_result>
</price_results>
</result>
2. Когда нет данных
<result>
<status>1</status> строка
<price_results>
</price_results>
</result>
Мною были разработаны 2 варианта схем, но у каждой есть недостатки. Не силен в их составлении, полазил по публикациям, что смог то и получилось ))
1. Схема работает только для 1 варианта файла, на 2 варианте дает исключение, т.к не совпадает формат. Но по данной схеме 1С правильно определяет типы, на больших объемах данных (тестировалась на 20.000 + строк) работает в 1.5 раза быстрее, чем 2 схема.
2. Схема работает при двух вариантах файла, но 1С по ней не определяет типы (везде определяется как строка) и в случае пустых значений в качестве типа указывает "Объект XDTO"
Вообщем то задача наверное не сильно сложная, разработать корректную схему для предложенных вариантов, чтобы не вызывало исключений и правильно определялись типы при ее чтении.
К проекту прикрепил архив с 2-мя внешними обработками и 2-мя файлами xml. 1 внешняя обработка использует первую схему xsd, 2-ая соответственно вторую. Файлы xml надо положить в корень диска C, ну либо поправить в коде расположение файлов. С помощью обработок можно более детально ознакомиться с данной проблемой в режиме отладки.