Имя: Пароль:
1C
1С v8
Итератор для значения не определен
, ,
0 Pe3HuK
 
14.12.15
16:16
Есть код:
Функция ПолучитьЗаказы()
    МассивЗаказовПокупателейТип = ФабрикаXDTO.Тип("ZakPok", "СписокЗаказов");
    ЗаказПокупателяТип = ФабрикаXDTO.Тип("ZakPok", "ЗаказПокупателя");
    ЗаказПокупателяСтрокаТип = ФабрикаXDTO.Тип("ZakPok", "СП1");
    НоменклатураТип = ФабрикаXDTO.Тип("android", "Номенклатура");
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказПокупателя.Ссылка,
        |    ЗаказПокупателя.Номер,
        |    ЗаказПокупателя.Дата
        |ИЗ
        |    Документ.ЗаказПокупателя КАК ЗаказПокупателя";
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Выборка.Количество() = 0 Тогда
        Возврат Null;
    КонецЕсли;
    МассивЗаказовПокупателей = ФабрикаXDTO.Создать(МассивЗаказовПокупателейТип);
    
    Пока Выборка.Следующий() Цикл
        ЗаказПокупателя = ФабрикаXDTO.Создать(ЗаказПокупателяТип);
        ЗаказПокупателя.Номер = Выборка.Номер;
        ЗаказПокупателя.Дата = Выборка.Дата;
        Для каждого Строка Из Выборка.Ссылка.Товары Цикл
            ЗаказПокупателяСтрока = ФабрикаXDTO.Создать(ЗаказПокупателяСтрокаТип);
            Номенклатура = ФабрикаXDTO.Создать(НоменклатураТип);
            Номенклатура.Код = Строка.Номенклатура.Код;
            Номенклатура.Наименование = Строка.Номенклатура.Наименование;
            ЗаказПокупателяСтрока.Номенклатура = Номенклатура;
            ЗаказПокупателяСтрока.Количество = Строка.Количество;
            ЗаказПокупателяСтрока.Цена = Строка.Цена;
            ЗаказПокупателяСтрока.Сумма = Строка.Сумма;
            ЗаказПокупателя.Товары.Добавить(ЗаказПокупателяСтрока);
        КонецЦикла;
        МассивЗаказовПокупателей.ЗаказПокупателя.Добавить(ЗаказПокупателя);
    КонецЦикла;
    Возврат МассивЗаказовПокупателей;
КонецФункции

Ругается "Итератор для значения не заполнен", подскажите, где ошибка, и как ее исправить
1 Fannasankh
 
14.12.15
16:19
(0) Вроде бы для перебора строк надо в запросе обращаться к Документ.ЗаказПокупателяТовары
2 Живой Ископаемый
 
14.12.15
16:24
2(0) Да нет ошибки, все правильно пишешь. Это просто 1С выделаевается и не хочет получать табличную часть ссылки. Советую продолжать, однажды 1С не выдержит, и поддастся...
3 Михаил Козлов
 
14.12.15
16:26
Попробуйте перед циклом получить объект.
4 Леха Дум
 
14.12.15
16:34
1) зачем вам запрос, если потом один х.й получаете весь объект в память?
2) у вас минимум 2 места, где может возникнуть ошибка - указать это место религия не позволяет?
5 ale-sarin
 
14.12.15
16:36
Может здесь
Для каждого Строка Из Выборка.Ссылка.Товары Цикл
поменять Строка на Стр
6 Живой Ископаемый
 
14.12.15
16:37
2(5) Капец, это еще почему? Потому что Строка - скаральное для православного пограммиста слово?
7 Живой Ископаемый
 
14.12.15
16:37
сакральное.
8 John83
 
14.12.15
16:39
если не ошибаюсь, надо

фыва = Выборка.Ссылка.Товары.Выбрать();
Пока фыва.следующий() блабла
9 ДенисЧ
 
14.12.15
16:40
(8) Ошибаешься
10 Леха Дум
 
14.12.15
16:41
у нас пятница ЕЩЕ не кончилась или УЖЕ наступила?
11 Fragster
 
гуру
14.12.15
16:41
автору кэш продуть и вебсервер рестартануть
12 Pe3HuK
 
14.12.15
16:41
(4) Вот здесь ошибка выскакивает:
Для каждого Строка Из Выборка.Ссылка.Товары Цикл
13 GROOVY
 
14.12.15
16:41
Жесть...
14 Fragster
 
гуру
14.12.15
16:41
(11)+ но вообще код - говно
15 Живой Ископаемый
 
14.12.15
16:42
2(11) А зерна пентаграммой насыпать - почему не сказал?
16 Fragster
 
гуру
14.12.15
16:43
(15) бревна сложить
17 Krolik Bezobraznik
 
14.12.15
16:44
(6) дело тебе говорит
18 salvator
 
14.12.15
16:46
(0) Отладчик нннада?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.