|
Странное поведение при чтении XDTO списка |
☑ |
0
Adept
10.03.18
✎
13:07
|
Есть хдто список минимальное количество 0 максимальное -1
ЧтениеХМЛ = Новый ЧтениеXML;
ЧтениеХМЛ.ОткрытьФайл("status_out.xml");
ХДТО_Ответ = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,ФабрикаXDTO.Тип(";));
ЧтениеХМЛ.ОткрытьФайл("status_out_single.xml");
ХДТО_Ответ = ФабрикаXDTO.ПрочитатьXML(ЧтениеХМЛ,ФабрикаXDTO.Тип(";));
Читаю два файла подряд, в одном один элемент 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) Круто, спасибо
|
|