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

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

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

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

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

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

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

КонецЦикла;

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