Имя: Пароль:
1C
 
Объект XDTO как узнать массив ли это
0 sahactys123
 
20.11.24
14:42
Добрый день загружаю XML, преобразую его в объект XDTO и обхожу строки Для каждого Элемент из Данные Цикл, где данные это объект XDTO. Если в XML несколько строк, то все отрабатывает, но если 1, то падает с ошибкой "Итератор для значения не определен". Как узнать несколько ли значений в объекте ?
1 osa1C
 
20.11.24
14:44
(0) Данные.Количество()
2 Garykom
 
гуру
20.11.24
14:45
3 mikecool
 
20.11.24
15:01
(1) у объекта хдто есть такой метод?
4 d4rkmesa
 
гуру
20.11.24
15:05
(0) Надо проверять тип для Данные, для коллекции это будет "СписокXDTO", а не "ОбъектXDTO".
5 rozer76
 
20.11.24
15:11
(1) ты весь код в try-except пишешь ? ))
6 Franchiser
 
гуру
20.11.24
16:29
(0) обход цикла с нуля идет
7 АнализДанных
 
20.11.24
16:55
(0) Создай служебную функцию КоллекцияОбъектаXDTO():

Для Каждого ЭлементXDTO Из КоллекцияОбъектаXDTO(ОбъектИлиСписокXDTO) Цикл
    // обработка данных
КонецЦикла

Функция ОбъеткXDTO_Списком(КоллекцияОбъектаXDTO)

    Если ТипЗнч(КоллекцияОбъектаXDTO) = Тип("ОбъектXDTO") Тогда

        Возврат ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(КоллекцияОбъектаXDTO);

    ИначеЕсли ТипЗнч(КоллекцияОбъектаXDTO) = Тип("СписокXDTO") Тогда
        
        Возврат КоллекцияОбъектаXDTO;

    КонецЕсли;

КонецФункции
8 АнализДанных
 
20.11.24
16:59
(7) Ошибся, функция называется "КоллекцияОбъектаXDTO"

Функция КоллекцияОбъектаXDTO(КоллекцияОбъектаXDTO)
...
КонецФункции
9 Kongo2019
 
20.11.24
18:38
(0)
Если ТипЗнч (ПриходныйбордерXDTO.Состав.СтрокаСостава) <> Тип ("СписокXDTO) Тогда

СписокхXDTOСтрокаСостава = Новый Массив;

СписокXDTOСтрокаСостава .Добавить (ПриходныйОрдерXDTO.Состав.СтрокаСостава);
Иначе

СписокXDTOСтрокаСостава = ПриходныйОрдерXDTO.Состав.СтрокаСостава;
КонецЕсли;
10 Dzenn
 
гуру
20.11.24
19:51
(9) о, я примерно так же делаю.

1) ввожу переменную типа Массив = Новый Массив;
2) Проверяю данные на входе что это — СписокXDTO или ОбъектXDTO
3) если список, то Массив = ДанныеНаВходе
4) если объект, то Массив.Добавить(ДанныеНаВходе)
5) обхожу массив, будучи полностью уверенным, что это именно массив
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn