Сразу открою интригу, напрямую прочитать XML, не содержащий объект 1С, не удастся. Статья раскрывает способы привести XML к формату, который возможно прочитать средствами платформы.
если у тебя структура XML представляет собой таблицу с более чем с 1 строкой, то вернётся тебе объект СписокXDTO, по которому можно пройтись циклом Для каждого. И это без всякой схемы XLS
(2) если сложный, тогда лучше нарисовать XSD схему и с помощью неё уже делать преобразование. Но мне лично хватает ФабрикиXDTO без схемы. Потом просто работаешь со структурой объекта по именам полей
(1)Согласен. Решение красивое, но мудреное.
К тому же зачастую в xml бывает СписокXDTO, а бывает ОбъектXDTO в одном и том же месте.
Тогда такое преобразование может и не взлететь.
(14) в том и прелесть что удалось миновать XDTO и сразу отправить всё в таблицу, в вашем частном случае мы получим таблицу с одной строкой. Решение дает нам устойчивость в том случае, если поставщик XML изменил его структуру.
6.
oleganatolievich
14724.10.19 17:31 Сейчас в теме
(5) да, видел такое преобразование в типовых. прикольно, сделали бы разрабы платформы 1С такое же, но платформенное, и чтобы на веб-клиентах и тонких клиентах всяких работало, не было бы им цены.
(7) причём если для создания XSD схемы в платформе есть инструмент, хоть и корявенький, в виде XDTO-пакета в конфигураторе, то для создания XSL схемы нет ничего
13.
oleganatolievich
14725.10.19 10:17 Сейчас в теме
(12) самое простое, делаю в поле HTML документа делаешь JSON.stringify, в 1с забираешь в событии при нажатии на поле HTML. мне кажется для расшифровки результата не надо постоянно лезть на сервер, это же интерфейс ёпт.
(5)Прямой разбор из чтенияxml быстрее чем преобразование процентов на 30, я проверял. Аналогичные задачи стояли. А если это все внутри базы 1С туда сюда гуляет, то все по скорости уделывает прямая работа с ТЗ. Преобразование очень медленное и поддерживает стандарт 1.1 только.
Статья плохая, но разбирается очень хорошая вещь. Я бы автору порекомендовал бы рассмотреть преобразование XSLT более развернуто, хотя многим действительно нужен кейс, даже такой примитивный.
Технология XSLT в вэбе, где и предполагалось основное применение, "не взлетела". Поддержка XSLT в браузерах появилась в IE6, и с тех пор не обновлялась лет десять. Год назад один из последних "могикан" - mail.ru отказалась от использования XSLT в своем почтовом сервисе.
Желающих развивать эту технологию уже давно не наблюдается.
Слабо представляю, какие уникальные выгоды от использования XSLT можно получить. Защита от изменения формата поставщиком? Так ведь для этого и нужны XSD-схемы. Пришедший пакет не читается? Пришло время лезть в текст и смотреть, что изменилось. Меняем схему XSD и логику анализа - и всё, работаем дальше.
(22) Я понимаю. Понятно, что зависит от задачи. Ну и по скорости очень порадовало.
Вообще проводил анализ сериализованных представлений разных объектов и смотрел, что лучше подходит. Кстати очень полезно оказалось глянуть на табличный документ, для себя добавил функционал по сворачиванию/разворачиванию нужных групп.
(23) натолкнули меня на мысль, действительно, можно файлы просто привести к единому виду и сравнить, минуя любое преобразование. Это что касается моего прикладного случая
(22) XML файл - текст. 1С в режиме Предприятия либо Конфигуратора - "Сравнить файлы...". Либо простенькая обработка сравнения текстов - вот и все решение!
Статьи уже были на эту тему, поэтому как бы совсем ничего нового, однако немного с другой стороны (возможно это тоже необходимо, чтобы это стало более понятным и как-то шло в массы).
Но вот полезней было бы если некий конструктор простой был бы реализован, который позволяет создавать шаблоны XSLT.
Спасибо за статью! Нарвался на подводный камень, может кому пригодится, оставлю здесь.
Если в схеме указан namespace, то в xsl следует префиксовать выборки (без этого не взлетит, я вчера долго думал, почему не пашет). Пример из статьи описал ниже. И еще: в статье используется таблица с типизацией строк, а не колонок. Если задавать тип в колонке, то при отсутствующем значении будет пустое значение этого типа, а не "Неопределено" (см. на XML ниже - убрал "ЦВЕТЫ СПАТИФИЛЛУМ" из первого lineItem, без типизации колонок в выходной таблице будет неопределено, а с XSL из этого же сообщения - пустая строка).