#0
by vi0
Есть XML-данные которые нужно проверить и загрузить в 1с8. Структура XML здесь содержит два уровня: корневой элемент как обязательный, и элементы в которых передаются документы: накладные итп (фактически уровней больше, но здесь не принципиально). Создан xdto-пакет в котором есть тип для каждого загружаемого документа. ВОПРОС: Как проверить эти документы - элементы второго уровня на сооветствие схеме? При такой структуре, как я понимаю я должен считывать поочередно элементы и создавать ОбъектXDTO, при этом платформа выполнит проверку. Проверка не выполняется т.к. в методе ПрочитатьXML я не задал тип. Но как я узнаю тип если там могут быть разные документы? И правильно ли мне самому определять тип? ЧтениеXML.Прочитать; Для решение вопроса я могу в xdto-пакете создать некий искуственный корневой тип, в нем сделать списки документов и считывать весь xml одним вызовом (придется и структуру xml привести к этому формату). Но правильна ли такая искуственность? И это чревато неоправданным расходом ресурсов при больших объёмах, как я понимаю.
#2
by vi0
ответ найден в документообороте действительно можно последовательно читать и проверять элементы, получая тип из имени элемента
#3
by vi0
в топике я писал, что для решение вопроса я могу в xdto-пакете создать некий искусственный корневой тип, в нем сделать списки документов и считывать весь xml одним вызовом (придется и структуру xml привести к этому формату). а можно ли не создавая этого корня создать ОбъектXDTO одним вызовом ФабрикаXDTO.ПрочитатьXML когда в XML файле находятся разнородные элементы, и чтобы при этом выполнилась проверка на соответствие ПакетуXDTO ? вот так я могу сделать, но проверка при этом не выполняется: какой тип нужно указать вторым параметром в ПрочитатьXML, чтобы выполнилась проверка?
#7
by vi0
если проверку не пройдет то загружать не буду например в xml не будет обязательного элемента с уникальным идентификатором
#8
by Serginio1
ОбъектXDTO=ФабрикаXDTO.ПрочитатьXML(ЧтениеXML,ФабрикаXDTO.Тип(ЧтениеXML.URIПространстваИмен,ЧтениеXML.Имя));
#9
by vi0
Это можно использовать при переборе элементов объектом ЧтениеXML В именно такой способ привел вопрос как прочитать весь xml с плоской структурой одним чтением ФабрикаXDTO.ПрочитатьXML, когда в xml на одном уровне хранятся элементы разного типа (например данные документов)
#12
by vi0
рассматриваю способ загрузки xml, когда нужно один раз загрузить его в ОбъектXdto и дальше неоднократно получать из него данные, перебирать/искать несколько раз, при необходимости
#13
by Serginio1
Сериализуй в список или в массив и прочитаешь все за один раз. Только это хорошо когда объектов мало.
#14
by vi0
"Сериализуй в список" - на этапе выгрузки? т.е. здесь не избежать изменения структуры xml,
#16
by Serginio1
Обычно при выгрузке в XML записывают внутри элемента ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", ";); ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", ";); Можно создать массив объектов и сериализовать его в XML и прочитать его полностью
#17
by vi0
> Обычно при выгрузке в XML записывают внутри элемента > ЗаписьXML.ЗаписатьНачалоЭлемента(XMLСтрока("Данные")); я бы даже сказал, что так нужно сделать обязательно по стандарту xml и по другому не получится > Можно создать массив объектов и сериализовать его в XML тогда получается что, чтобы читать одним вызовом и одновременно проверять - нужно делать особую стуктуру xml вижу еще такой способ: проверку сделать перебором используя ЧтениеXML, или как-то иначе, а потом уже просто читать без проверки:
#20
by Serginio1
Не надо ничего делать дополнительно с XML если выгружается один объект. Правда когда этих объектов очень много, они могут отожрать всю память.
#22
by vi0
инфа, конечно полезная, но есть условия: xml имеет определенную структуру и выгружается из внешней системы (не v8), и мне нужно решить вопрос с этими условиями
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как найти соответствие в 1С 8.0 соответствие именам SQL таблицы
- Проверка существования процедуры
- Загружаю XML файл от 1С в Оракл (проблемы) ... Кто знает:Оракл,XML,1с8 ?
- Проверка на заполнение полей таблчного поля документа?
- Проверка 2-НДФЛ
- XML ошибка "Не удается просмотреть ввод XML с использованием списка стилей
- Проверка на дублирующие строки
- Вопрос по XML. Как дерево значений быстро экспортировать в XML?
- Ошибка при чтении xml, XML declaration allowed only at the start of the document
- Вставка блока XML в другой XML
- Проверка XML по схеме XSD
- Как получить результат проверки xml на соответствие схеме xsd?
В этой группе 1С
- УТ11 Состояние обеспечения заказов, как вывести на принтер?
- Алгоритм удаления помеченных объектов
- 1С:Предприятие 8.1 УТ 10.3 Как Поиск по штрихкоду поменять на поиск по коду?
- Как определить идет ли закрытие месяца в базе или нет?
- Перевод 1С Управление торговлей 10.3 на 8.3
- Как на форму "Произвольная" добавить кнопку "Добавить"
- Добавление движения по Регистру Накоплений
- Комплексная автоматизация и установка реквизитов в документах
- Заполнение строк тч
- Не получается обратиться к реквизиту формы УТ 11.1
- УТ 10.3 Списание и Инвентаризация
- Почему не выводится в отчете поле СКД
- Недорогой хостинг для Redmine
- Чтение текстового файла "не лету"
- ПередУдалением строки в Табличной части Документа 8.3 Розница 2.1
- Как свернуть строки в СКД
- Справочник ОКПД в csv
- Изменение Регистра Бухгалтерии
- УТ 10 редакция, возврат товаров поставщику
- Доступность определенного поля строки ТЧ в управляемых формах