|  | Объект 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) обхожу массив, будучи полностью уверенным, что это именно массив
 |  |