Имя: Пароль:
1C
1С v8
Чтение xml-файла
0 lesta
 
12.03.20
13:35
Добрый день!
Помогите, пожалуйста, с проблемой?
Данные приходят в виде xml-файла. Вся информация идет только в атрибутах, элементов около 10 тыс. В элементе включены данные, которые записываются в справочники. Причем очень часто в один справочник считывается один и тот же объект из половины элементов многократно. Чтобы не записывалось, делаю проверку: если элемент в справочнике есть, то сравниваю по реквизитам, так как предполагается повторная загрузка с корректировкой данных.
Теперь получается многократная проверка( Но внутри записи одного файла не будет изменений одного объекта. Как сделать, чтобы на первое вхождение проверялось полностью по всем реквизитам, а потом только УИ?

<?xml version="1.0" encoding="UTF-8"?>
<Справочник.ВнутренниеДокументы>
    <Элемент ВнутреннийДокументУИ="3ada6f2ac-fc76-11e9-5a97-78e3b50f4ec0" Папка="Дополнительные соглашения" РегистрационныйНомер="" Дата="" Наименование="-" ТипДоговора="" Организация="66d3c333-a03d-11e8-bfb3-50335db4e7ec" ОрганизацияНаименование="Ассоциация;" ОрганизацияНаименованиеПолное="Ассоциация" ОрганизацияВид="Юридическое лицо" ОрганизацияИНН="" ОрганизацияКПП="" .../>
    <Элемент ВнутреннийДокументУИ="cb80916c-1744-11ea-3781-78e3b50f4ec0" Папка="Дополнительные соглашения" РегистрационныйНомер="" Дата="" Наименование="-" ТипДоговора="" ОрганизацияГУИД="66d3c333-a03d-11e8-bfb3-50465db4e7ec" ОрганизацияНаименование="Ассоциация ;" ОрганизацияНаименованиеПолное="Ассоциация " ОрганизацияВид="Юридическое лицо" ОрганизацияИНН="" ОрганизацияКПП="" .../>
</Справочник.ВнутренниеДокументы>
1 Garykom
 
гуру
12.03.20
13:40
(0) о вот тока недавно было XDTO пакеты. Зачем они нужны?
2 Злопчинский
 
12.03.20
13:41
ПервыйНах = 1;
...
Если ПервыйНах=1 Тогда
//проверить по всем реквизитам
ПервыйНах = 0;
Иначе
//проверить по УИ
КонецЕсли;

- так не пойдет?
3 Жан Пердежон
 
12.03.20
13:42
(0) считай данные в табличку, табличку закинь в запрос, в запросе отбери только нужное
4 Garykom
 
гуру
12.03.20
13:49
А задачка интересная, кривая выгрузка данных с дублями и дубли детализации повторно не надо обрабатывать.
Если организация уже по уид загружена и заполнена то типа не надо перезаполнять, просто найдем ее по уид и подставим в документ.

Короче завести структуры загруженных объектов (ссылки пишем), если ссылка на объект в структуре = загружен и его данные игнорируем.
Ключ это уид, а значение ссылка в структурах.

Структур хз сколько будет, вижу только Организация в куске
5 lesta
 
12.03.20
13:54
(4) Структур 7, атрибутов за 30( Выгрузка не из приятных...

Спасибо за направление
6 lesta
 
12.03.20
13:55
(3) Спасибо
7 lesta
 
12.03.20
13:55
(2) Там с проверкой реквизитов уже такое себе...((
8 RomaH
 
naïve
12.03.20
14:06
СоотвествиеОбъектов = Новый Соответствие;

Если СоотвествиеОбъектов[Ключ] = Неопределено Тогда
//Обрабатываем
СоттветсвиеОбъектов.Встаить(Ключ,0);
Конецелис
9 lesta
 
13.03.20
05:53
(8) Спасибо за решение
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.