Имя: Пароль:
1C
 
Странное поведение при чтении XDTO списка
0 Adept
 
10.03.18
13:07
Есть хдто список минимальное количество 0 максимальное -1
ЧтениеХМЛ = Новый ЧтениеXML;
    ЧтениеХМЛ.ОткрытьФайл("status_out.xml");
    ХДТО_Ответ = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,ФабрикаXDTO.Тип("https://www.www.ww/","resp";));
    ЧтениеХМЛ.ОткрытьФайл("status_out_single.xml");
    ХДТО_Ответ = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,ФабрикаXDTO.Тип("https://www.www.ww/","resp";));

Читаю два файла подряд, в одном один элемент docum , во втором два.
В первом случае возвращается объект xdto (а не список с одним элементом), во втором список из двух элементов.

Первый раз такое встречаю, может кто то что то подскажет?
1 Mankubus
 
10.03.18
14:07
(0) послежу. сталкивался, но не победил
2 Hmster
 
10.03.18
14:08
так вроде всегда было, если элементов 1 - то объект, больше - список
3 Cyberhawk
 
10.03.18
14:12
Это фича реализации ХДТО в 1С. Если список состоит из одного элемента, то он будет объектом.
4 RomaH
 
naïve
10.03.18
15:45
(0) я сделал функцию чтения

типа определяешь две переменных перед циклом

Данные = Неопределено;
Счетчик = 0;

Пока ПрочитатьСписокХДТО(Список, Данные, Счетчик)

взамен повсеместного
Если ТипЗнч() = ...
6 АнализДанных
 
10.03.18
21:33
(0) где-то на просторах интернета встречал такое решение

Для Каждого ОбъектXDTO Из ПолучитьДаннынеСпискаXDTO(МойСписокXDTO) Цикл
    \\обработка данных
КонецЦикла

Функция ПолучитьДаннынеСпискаXDTO(ОбъектXDTO)

    Если ТипЗнч(ОбъектXDTO) = Тип("ОбьектXDTO") Тогда
        Результат = Новый массив;
        Результат.Добавить(ОбъектXDTO);
    Иначе
        Результат = ОбъектXDTO;
    КонецЕсли;

    Возврат Результат;

КонецФункции
7 RomaH
 
naïve
11.03.18
09:00
(6) круто

так, надо запомнить - 1С вычисляет выражение Для ... Цикл только первый раз
8 Adept
 
11.03.18
09:17
(6) Круто, спасибо
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн