![]() |
|
Узнать тип документа по первому флагу в 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; Чтение.ОткрытьФайл(ВыбФайл.ПолноеИмя); Пока Чтение.Прочитать() Цикл КонецЦикла; Первый проход цикла и будет со значением "ЗаявкаПокупателя"... Всем спасибо и хорошего дня |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |