Имя: Пароль:
1C
 
Копия ЧтениеXML или сбросить выборку
,
0 ДНН
 
13.02.19
15:47
Доброго времени суток, коллеги.

Есть ЧтениеXML. Мне нужно получить из него определенное значение, сравнить его с моим значением, если они равны, то я загружаю этот файл. Если нет, то нет.

Я читаю ЧтениеXML через ЧтениеXML.Прочитать(), нахожу мое свойство, читаю значение, сравниваю, но после этого ЧтениеXML уже не загружается, потому что методом Прочитать() я дошел до конца файла.

Как можно создать копию ЧтениеXML для анализа, или сбросить выборку после анализа?

Спасибо.
1 Вафель
 
13.02.19
15:49
если файл небольшой, что читай через xdto
2 kennetmccormick
 
13.02.19
15:54
закрыть и прочитать снова
3 ДНН
 
13.02.19
16:14
Вообще задача такая: нужно при переносе данных через конвертацию данных 2.1 фильтровать документы при загрузке в приемник по значению даты документа.

Пытаюсь получить дату в обработчике "Перед загрузкой" из Файла обмена (тип Чтение XML), но после анализа он больше не читается. Пробовал через ПостроительDOM и фабрику xdto - аналогично.

В обработчиках "При загрузке" и "После загрузки" не отменяется загрузка, так как в обработчике "После загрузки" выполняется заполнение, запись и проведение объекта.
4 ДНН
 
13.02.19
16:16
Для загрузки в семёрку я сделал проверку на дату запрета загрузки документов так:
В ПКО обработчик "Перед загрузкой"

УзелДок = гФайл.ТекущийЭлементВВидеОбъекта();
Реквизиты = УзелДок.ВыбратьУзлы("Свойство");
ДатаДок = "";
НомерДок = "";
Для Сч=0 По Реквизиты.КоличествоУзлов()-1 Цикл
    Реквизит = Реквизиты.ПолучитьУзел(Сч);
    ИдРеквизита = Реквизит.ПолучитьАтрибут("Имя");
    ТипОбъектаРеквизита = "";
    ВидОбъектаРеквизита = "";
    Если ИДРеквизита = "ДатаДок" Тогда
        ДатаДок = УстановитьРеквизитV8(Реквизит,ТипОбъектаРеквизита,ВидОбъектаРеквизита,ИдРеквизита);
    КонецЕсли;
    Если ИДРеквизита = "НомерДок" Тогда
        НомерДок = УстановитьРеквизитV8(Реквизит,ТипОбъектаРеквизита,ВидОбъектаРеквизита,ИдРеквизита);
    КонецЕсли;
КонецЦикла;
Если ДатаДок <> "" Тогда
    Если  ДатаДок <= Константа.ДатаЗапретаЗагрузки Тогда
        Сообщить(НомерДок+ "("+ДатаДок+") документ не загружен. Дата документа меньше даты запрета загрузки.","!!");
        Отказ = 1;
    КонецЕсли;
КонецЕсли;

Это пример из 7.7, хотел сделать также
5 Вафель
 
13.02.19
16:17
послезагрузки делай отказ и все
6 ДНН
 
13.02.19
16:19
(5) не помогает, если в этом обработчике есть какой-нибудь код, то считается что объект был изменен и он записывается 100%
7 Вафель
 
13.02.19
16:20
(6) отказ  = истина всегда помогает
8 ДНН
 
13.02.19
16:20
(5) а у меня так заполнение, запись и проведение. Если убрать проведение, то придется что-то придумывать для проведения всех документов после загрузки
9 ДНН
 
13.02.19
16:20
(7) не всегда
10 Вафель
 
13.02.19
16:23
(9) если конечно в самомо обработчике нет записать()
11 ДНН
 
13.02.19
16:24
(10) даже если нет, не помогает

ОбъектМодифицирован – Булево. Флажок указывает на то, что в обработчике объект был изменен. По умолчанию содержит значение Истина. То есть обработка загрузки считает, что если выполнялся какой-либо обработчик, то объект мог быть модифицирован, и его необходимо записать в информационную базу. Параметр относится только к текущему обработчику. Если объект был изменен ранее, то при любом значении переменной ОбъектМодифицирован он будет записан. Только для платформы 1С:Предприятие 8.
12 Вафель
 
13.02.19
16:25
(11) я тебе про Фому, а ты мне про Ерему
13 SilentMan
 
13.02.19
17:42
(0) ЧтениеXML.ОткрытьФайл() ?
14 craxx
 
13.02.19
17:52
(11) В структуру прочитать не вариант?
15 ДНН
 
13.02.19
18:41
(13) А как сохранить в файл? Если перебрать уже имеющееся Чтение XML, то снова после перебора читаться больше не будет
16 SilentMan
 
13.02.19
18:44
(15) Кого куда сохранить? Откуда взялось текущее ЧтениеXML? Вот этот файл и открыть заново - выборка начнется с начала (судя по СП). Вопрос стоит - как сбросить выборку в начало. Я и предложил умозрительный вариант
17 Конструктор1С
 
13.02.19
20:16
(1) а на больших файлах XDTO чем плохо?
18 quest
 
13.02.19
20:42
(17) CDATA, размер и положение луны
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.