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

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Pavel2009, 25 апр 2011.

  1. TopicStarter Overlay
    Pavel2009
    Offline

    Pavel2009 Опытный в 1С

    Регистрация:
    11 окт 2010
    Сообщения:
    183
    Симпатии:
    0
    Баллы:
    26
    Добрый День!
    Столкнулся с такой проблемой:
    Итератор для значения не определен
    Для каждого СтрокиТабЧасти из ДокВыборка.РеализацияТоваров Цикл
    При попытке, обойти табличную часть, и перемножить выбрку из запроса со значением колонки ТабличнойЧасти, выскакивает ошибка:
    Код:
    {Документ.Реализация.Форма.ФормаДокумента(141)}: Итератор для значения не определен
    Для каждого СтрокиТабЧасти из ДокВыборка.РеализацияТоваров  Цикл
    
    Примерно понимаю, что обойти ТабЧасть и присвоить ЗначениеЗапроса, через Цикл Для каждого - не льзя, по другому не представляю, как это сделать!



    Код:
    ТекущаяСтрока=ЭлементыФормы.РеализацияТоваров.ТекущиеДанные;
    ВалютаИЗ=Неопределено;
    ВалютаВ=1;
    Запрос=Новый Запрос;
    Запрос.Текст= "ВЫБРАТЬ
    </span>
    |	МАКСИМУМ(ВЫБОР
    |			КОГДА ВалютыСрезПоследних.Валюта = &ВалютаВ
    |				ТОГДА ВалютыСрезПоследних.Курс
    |			ИНАЧЕ 0
    |		КОНЕЦ) КАК КурсВ,
    |	МАКСИМУМ(ВЫБОР
    |			КОГДА ВалютыСрезПоследних.Валюта = &ВалютаИЗ
    |				ТОГДА ВалютыСрезПоследних.Курс
    |			ИНАЧЕ 0
    |		КОНЕЦ) КАК КурсИЗ
    |ИЗ
    |	РегистрСведений.Валюты.СрезПоследних(
    |			&Дата,
    |			Валюта = &ВалютаВ
    |				ИЛИ Валюта = &ВалютаИЗ) КАК ВалютыСрезПоследних";
    Запрос.УстановитьПараметр("Дата", Дата);
    Запрос.УстановитьПараметр("ВалютаИЗ",ВалютаИЗ);
    Запрос.УстановитьПараметр("ВалютаВ", Валюта);
    Выборка = Запрос.<span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/выполнить')">Выполнить();
    Данные=Выборка.Выбрать();
    Данные.Следующий();
    ДокВыборка=Документы.Реализация.Выбрать();
    //////Пока ДокВыборка.Следующий()Цикл
    Для каждого СтрокиТабЧасти из ДокВыборка.РеализацияТоваров  Цикл
    СтрокиТабЧасти.Цена=СтрокиТабЧасти.Цена*Данные.КурсВ;
    КонецЦикла;
    
    
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    что содержит в себе ДокВыборка.РеализацияТоваров?

    Исходя из кода - ничего, не мудрено, что для этого объекта не определяется итератор
  3. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Код:
    ДокВыборка=Документы.Реализация.Выбрать();
    Пока ДокВыборка.Следующий() Цикл
    
    ДокОбъект = ДокВыборка.ПолучитьОбъект;
    Для каждого СтрокиТабЧасти из ДокОбъект.РеализацияТоваров  Цикл
    СтрокиТабЧасти.Цена=СтрокиТабЧасти.Цена*Данные.КурсВ;
    КонецЦикла;
    
    КонецЦикла;
    
    (РеализацияТоваров - это я так понимаю ТЧ документа).
  4. TopicStarter Overlay
    Pavel2009
    Offline

    Pavel2009 Опытный в 1С

    Регистрация:
    11 окт 2010
    Сообщения:
    183
    Симпатии:
    0
    Баллы:
    26
    Все верно ДокВыборка.РеализацияТоваровв - это табличная часть!
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    тогда уж надо было

    ДокОбъект.Записать(?(ДокОбъект.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись));

    после цикла добавить, а то чел удивится, почему ниче не изменилось после :)
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Ну мы пока разбираем ошибку "Итератор для значения не определен". :angry:
    А так да, естественно надо.. :)
  7. TopicStarter Overlay
    Pavel2009
    Offline

    Pavel2009 Опытный в 1С

    Регистрация:
    11 окт 2010
    Сообщения:
    183
    Симпатии:
    0
    Баллы:
    26
    А в обработку проведения, этот код впишется? чтобы документ, введенный на основании, записывался?




    Я так понял, что через Для не получиться, нужно через Пока.....но ума не приложу как через Пока обойти коллекцию :angry:
  8. TopicStarter Overlay
    Pavel2009
    Offline

    Pavel2009 Опытный в 1С

    Регистрация:
    11 окт 2010
    Сообщения:
    183
    Симпатии:
    0
    Баллы:
    26
    Коллеги...не ужели, ни кто, не в курсе :angry:
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Не понял. А тот код, который я привел - не работает что-ли?
  10. TopicStarter Overlay
    Pavel2009
    Offline

    Pavel2009 Опытный в 1С

    Регистрация:
    11 окт 2010
    Сообщения:
    183
    Симпатии:
    0
    Баллы:
    26
    Отлично, спасибо! Ответ сразу....проглядел!

Поделиться этой страницей