Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Узнать тип документа по первому флагу в XML через ФабрикуXDTO

Узнать тип документа по первому флагу в XML через ФабрикуXDTO
Я
   DiFas
 
14.08.19 - 14:19
Добрый день. Нужна ваша помощь! Предисловие: партнер компании присылает нам файл XML для того, чтобы мы внесли его себе в базу в виде одного из трёх документов.
Есть три типа таких документов: ЗаявкаПокупателя, ВозвратТоваровОтПокупателя и ПоступлениеТоваровУслуг.
Вопрос такой: я переписываю обработку, которая загружает этот файл. Раньше она была через ПостроительDOM, а надо через ФабрикуXDTO. Ну не то, что бы надо. Просто построитель медленный, а файлы большие. Поэтому лучше через фабрику считывать.
Примерный вид этого XML:
<ЗаявкаПокупателя>
       <Документ>
              <ДатаДокумента>
              <НомерДоговора> и т.д.

В ПостроительDOM я понимал вид документа "ЗаявкаПокупателя" через условие:
Источник = Новый ЧтениеXML;
Источник.ОткрытьФайл(Путь);
Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Источник);

Если Документ.ЭлементДокумента.ИмяУзла="ЗаказПотребителя" Тогда... и т.д.

А ФабрикаXDTO сразу начинается считывать с флага <Документ>. То есть ну прям вообще ни в каком свойстве или методе это не видно. Может быть не всё знаю
Помогите разобраться...

База УТ 10.3, обычные формы
 
 
   DiFas
 
1 - 14.08.19 - 14:21
Ошибся в условии: Если Документ.ЭлементДокумента.ИмяУзла="ЗаявкаПокупателя" Тогда... и т.д
   DiFas
 
2 - 14.08.19 - 14:55
Никто не знает?
   DiFas
 
3 - 14.08.19 - 15:16
Походу такой хренью только я занимаюсь...
   Вафель
 
4 - 14.08.19 - 15:20
А что говорит
ОбъектXDTO.Тип()
   unbred
 
5 - 14.08.19 - 15:20
   Вафель
 
6 - 14.08.19 - 15:22
(5) Это спукс вниз, а нужно наверх
   unbred
 
7 - 14.08.19 - 15:23
(6) там как раз про тип в начале топика.
   DiFas
 
8 - 14.08.19 - 15:25
   Вафель
 
9 - 14.08.19 - 15:29
(8) в отладчике смотрел?
   DiFas
 
10 - 14.08.19 - 15:39
(9) конечно!
   DiFas
 
11 - 15.08.19 - 07:46
А если мой XML-файл перевести в строку?
   DiFas
 
12 - 15.08.19 - 08:08
Тогда новый вопрос такой: как первые 2-3 строки XML-файла перенести в строку и уже оттуда узнавать какой тип документа?
   infosoft-v
 
13 - 15.08.19 - 08:35
Я делаю так:
-- с помощью ресурса в интернете изготавливаю из документа XML схему XSD. При изготовлении схемы нужно использовать структуру "Венецианские жалюзи". 1С с такой структурой работает лучше всего.
-- загружаю схему XSD в пакет XDTO, устанавливаю пространство имен, проверяю и если нужно уточняю типы атрибутов пакета.
-- по "каким то" признакам понимаю тип документа и добавляю в файл XML атрибут пространства имен NS. Для каждого типа документа свое пространство имен в соответствии с пакетами XDTO
-- делаю фабрику из пакета и объект из документа XML
   infosoft-v
 
14 - 15.08.19 - 08:38
Тогда новый вопрос такой: как первые 2-3 строки XML-файла перенести в строку

Можно воспользоваться последовательным чтением XML через объект ЧтениеXML
   DiFas
 
15 - 15.08.19 - 08:51
(14) я уже ранее писал, что сейчас обработка работает через последовательное чтение через ПостроительDOM
   DiFas
 
16 - 15.08.19 - 09:26
Короче, всё оказалось куда проще:

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(ВыбФайл.ПолноеИмя);
    
Пока Чтение.Прочитать() Цикл

КонецЦикла;

Первый проход цикла и будет со значением "ЗаявкаПокупателя"...
Всем спасибо и хорошего дня

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.