Итератор значения не определен

1. StrGTT 25.01.24 07:29 Сейчас в теме
Добрый день, помогите разобраться:
Через внешнюю обработку читаю файл *.xml, результат записываю в табличную часть
Процедура ПрочитатьФайлНаСервере()
	Объект.ДанныеФайла.Очистить();	
	
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(Объект.ПутьКФайлу);
	
	ГлавыXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
	
	Для каждого ГлаваXDTO Из ГлавыXDTO.Chapters.Chapter Цикл
		Для каждого ПозицияXDTO Из ГлаваXDTO.Position Цикл
			НоваяСтрока = Объект.ДанныеФайла.Добавить();
			НоваяСтрока.НаименованиеРаздела = ГлаваXDTO.Caption;
			НоваяСтрока.НаименованиеПозиции = ПозицияXDTO.Caption;
			НоваяСтрока.КодПозиции = ПозицияXDTO.Code;
			
			Если Не ПозицияXDTO.Свойства().Получить("PriceCurr") = Неопределено   Тогда
				НоваяСтрока.СтоимостьЕдиницы = ПозицияXDTO.PriceCurr.MT;			
			Иначе
				НоваяСтрока.СтоимостьЕдиницы = ПозицияXDTO.PriceBase.PZ;
			КонецЕсли;
			
			НоваяСтрока.ЕдиницаИзмерения = ПозицияXDTO.Units;
			Если СтрНачинаетсяС(ПозицияXDTO.Quantity1.Result, "-") Тогда
				Объект.ДанныеФайла.Удалить(НоваяСтрока);
				Продолжить;	
			Иначе
				НоваяСтрока.Объем = Число(ПозицияXDTO.Quantity1.Result);
			КонецЕсли;
			
			Если СтрНачинаетсяС(ПозицияXDTO.Code, "ФЕР") Тогда
				НоваяСтрока.Работа = Истина;
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры
Показать


Если файл содержит одно значение ГлавыXDTO.Chapters.Chapter, то выдает ошибку:
Итератор для значения не определен
{Обработка.ЗагрузкаДанныхИзФайла.Форма.Форма.Форма(41)}:	Для каждого ГлаваXDTO Из ГлавыXDTO.Chapters.Chapter Цикл
{Обработка.ЗагрузкаДанныхИзФайла.Форма.Форма.Форма(71)}:	ПрочитатьФайлНаСервере();


Если значений несколько, то все хорошо.
По теме из базы знаний
Найденные решения
2. independ 1556 25.01.24 07:46 Сейчас в теме
(1)
Для каждого ГлаваXDTO Из XDTO_Массив(ГлавыXDTO.Chapters.Chapter) Цикл

&НаСервереБезКонтекста
Функция XDTO_Массив(XDTO_Объект)
	Если ТипЗнч(XDTO_Объект) = Тип("ОбъектXDTO") ИЛИ 
		ТипЗнч(XDTO_Объект) = Тип("Строка") Тогда
		ОтветXDTO_Массив = Новый Массив;
		ОтветXDTO_Массив.Добавить(XDTO_Объект);
		Возврат ОтветXDTO_Массив;
	Иначе	
		Возврат XDTO_Объект;
	КонецЕсли;
КонецФункции
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. independ 1556 25.01.24 07:46 Сейчас в теме
(1)
Для каждого ГлаваXDTO Из XDTO_Массив(ГлавыXDTO.Chapters.Chapter) Цикл

&НаСервереБезКонтекста
Функция XDTO_Массив(XDTO_Объект)
	Если ТипЗнч(XDTO_Объект) = Тип("ОбъектXDTO") ИЛИ 
		ТипЗнч(XDTO_Объект) = Тип("Строка") Тогда
		ОтветXDTO_Массив = Новый Массив;
		ОтветXDTO_Массив.Добавить(XDTO_Объект);
		Возврат ОтветXDTO_Массив;
	Иначе	
		Возврат XDTO_Объект;
	КонецЕсли;
КонецФункции
Показать
3. StrGTT 25.01.24 07:56 Сейчас в теме
(2) Спасибо большое
Нифига не понятно, но все работает)))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот