Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 22:15

Ошибка: Итератор для значения не определен

Автор skillful, 16 дек 2018, 20:15

0 Пользователей и 1 гость просматривают эту тему.

skillful

В сокращенном файле 1.xml
<?xml version="1.0" encoding="UTF-8"?>
<ПриходнаяНакладная>
<Документ Num="1" Номер="000827" Дата="01.11.2018 19:00:00">
<Запасы Количество="600" ЕдиницаИзмерения="шт" Цена="18,05" Сумма="10 830"/>
<Запасы Количество="2" ЕдиницаИзмерения="шт" Цена="2 707,5" Сумма="5 415"/>
</Документ>
<Документ Num="2" Номер="000831" Дата="01.11.2018 19:00:00">
<Запасы Количество="6" ЕдиницаИзмерения="шт" Цена="229" Сумма="1 374"/>
</Документ>
</ПриходнаяНакладная>


Обрабатывается кодом


Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл(1.xml);   
Фабрика = Новый ФабрикаXDTO;
ОбXDTO = Фабрика.ПрочитатьXML(Чтение);

Для Каждого Документ из ОбXDTO.Документ Цикл

    Для Каждого Запасы из Документ.Запасы Цикл
  //Количество = Количество + Запасы.Количество;
                  Сообщить("");
    КонецЦикла;

КонецЦикла;

Чтение.Закрыть();


Нормально работает, только когда строк <Запасы> больше одной в цикле. Когда строка одна, то ошибка  Итератор для значения не определен. Как можно победить сей недуг???

AIFrame

Для ИНД=0 ПО Документ.Запасы.Количество()-1 Цикл
    Запасы = Документ.Запасы[ИНД];
КонецЦикла;

antoneus

Попробуй так

Если ТипЗнч(Документ.Запасы) = Тип("ОбъектXDTO") Тогда
    Количество = Документ.Запасы.Количество
Иначе
    Для Каждого Запасы из Документ.Запасы Цикл

и т.д.

skillful

Цитата: antoneus от 17 дек 2018, 15:04
Попробуй так

Если ТипЗнч(Документ.Запасы) = Тип("ОбъектXDTO") Тогда
    Количество = Документ.Запасы.Количество
Иначе
    Для Каждого Запасы из Документ.Запасы Цикл

и т.д.

Спасибо. Вы помогли. Сделал так:
Если ТипЗнч(Документ.Запасы) = Тип("ОбъектXDTO") Тогда
Количество = Документ.Запасы.Количество;
Иначе
Для Каждого Запасы из Документ.Запасы Цикл
Количество = Количество + Запасы.Количество;
КонецЦикла;
КонецЕсли;


Почему то когда строка одна то Тип("ОбъектXDTO"), когда больше одной Тип("СписокXDTO"). Почему я не знаю...

antoneus

Ну, 1с-ке в общем случае при чтении с наскока трудно разобраться - объект это или список с одним элементом.

AIFrame

Цитата: skillful от 17 дек 2018, 18:37Почему то когда строка одна то Тип("ОбъектXDTO"), когда больше одной Тип("СписокXDTO"). Почему я не знаю...
Добро пожаловать в динамическую типизацию.

skillful

Цитата: AIFrame от 18 дек 2018, 04:06
Цитата: skillful от 17 дек 2018, 18:37Почему то когда строка одна то Тип("ОбъектXDTO"), когда больше одной Тип("СписокXDTO"). Почему я не знаю...
Добро пожаловать в динамическую типизацию.

А нельзя преобразовать всё в СписокXDTO или в ОбъектXDTO???
Добавлено: 11 мар 2019, 20:48


Цитата: skillful от 11 мар 2019, 20:27
Цитата: AIFrame от 18 дек 2018, 04:06
Цитата: skillful от 17 дек 2018, 18:37Почему то когда строка одна то Тип("ОбъектXDTO"), когда больше одной Тип("СписокXDTO"). Почему я не знаю...
Добро пожаловать в динамическую типизацию.

А нельзя преобразовать всё в СписокXDTO или в ОбъектXDTO???
А все. Разобрался.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск