При написание обработки для не типовой конфигурации 1С 8,1 столкнулся с проблемой, выходит сообщение об ошибке "{Форма.Форма(30)}: Итератор для значения не определен
Для Каждого СтрТаб из ТабОст Цикл" Подскажите в чем моя ошибка пожалуйста.
Вот код обработки:

```1c
    Процедура СформироватьНажатие(Элемент)

    Текст = Новый ТекстовыйДокумент;
    Текст.ВставитьСтроку(1,"#SERVICE 4018");
    Текст.ВставитьСтроку(1,"#TYPE 7");

    запрос= новый запрос();
    запрос.текст =
    "ВЫБРАТЬ
    | УслугиОстатки.ДоговорСсылка.Номер,
    | УслугиОстатки.Контрагент.Наименование,
    | УслугиОстатки.Контрагент.ФактАдрес,
    | УслугиОстатки.СуммаОстаток
    |ИЗ
    | РегистрНакопления.Услуги.Остатки КАК УслугиОстатки";

    ТабОст = запрос.выполнить();
    если не ТабОст.пустой() тогда
    таблица = ТабОст.выгрузить()
    конецесли;
    ИтогСумма=0;
    Для Каждого СтрТаб из ТабОст Цикл
    КодДоговора=СтрЗаменить(Строка(СтрТаб.ДоговорСсылка.Номер)," ",");
    Если СтрДлина(КодДоговора)=0 тогда
    Продолжить;
    КонецЕсли;
    ФИО=(СтрТаб.Контрагент.НаименованиеПолное);
    Настр=РегистрНакопленияУслуги.Остатки.Контрагент.ФактАдрес;
    НаборАдр=Настр.СоздатьНаборЗаписей();
    НаборАдр.Отбор.Установить(СтрТаб.ДоговорСсылка.Номер);
    НаборАдр.Прочитать();
    ТекущийИндексАдр=НаборАдр.Количество()-1;
    Если ТекущийИндексАдр<0 Тогда
    Продолжить;
    КонецЕсли;
    Город=РегистрНакопленияУслуги.Остатки.Контрагент.ФактАдрес;

    СтрСумма=Формат(СтрТаб.Сумма,"ЧРД='.'; ЧН='0.00'; ЧДЦ=2; ЧГ=");
    СтрРее=ФИО+";"+Город+";"+КодДоговора+";"+СтрСумма+";;"+"01/12/2010;30/12/2010;1:"+"0.00";
    Текст.ДобавитьСтроку(СтрРее);
    Состояние(СтрРее);
    ИтогСумма=ИтогСумма+СтрТаб.СуммаОстаток;
    //Прервать;
    КонецЦикла;
    СтрИтогСумма=Формат(ИтогСумма,"ЧРД='.'; ЧН='0.00'; ЧДЦ=2; ЧГ=");
    Текст.ВставитьСтроку(1,"#FILESUM "+СтрИтогСумма);
    Текст.Записать(ПутьВыгрузки+"ree.txt","cp866");

    КонецПроцедуры
```
---
```1c
    ТабОст = запрос.выполнить();
    если не ТабОст.пустой() тогда
    таблица = ТабОст.выгрузить()
    конецесли;
    Для Каждого СтрТаб из ТабОст Цикл
```

В цикле ТабОст будет иметь тип РезультатЗапроса, а не таблица значений.
Так уж наверно:

```1c
    Для Каждого СтрТаб из таблица Цикл
```

При этом думаю сюда надо не забыть вставить ключевое слово Возврат;

```1c
    если не ТабОст.пустой() тогда
    таблица = ТабОст.выгрузить()
    Иначе
    Возврат;
    конецесли;
```
---
```1c
    ТабОст = запрос.выполнить();
    если не ТабОст.пустой() тогда
    таблица = ТабОст.выгрузить()
    конецесли;
    Для Каждого СтрТаб из ТабОст Цикл
```

В цикле ТабОст будет иметь тип РезультатЗапроса, а не таблица значений.
Так уж наверно:

```1c
    Для Каждого СтрТаб из таблица Цикл
```

При этом думаю сюда надо не забыть вставить ключевое слово Возврат;

```1c
    если не ТабОст.пустой() тогда
    таблица = ТабОст.выгрузить()
    Иначе
    Возврат;
    конецесли;
```
---
Большое спасибо!
---
Добрый вечер, помогите пожалуйста новичку в программирование...у меня во внешней печатной форме Справка к акту ИНВ-17 выходит Итератор для значения не определен. Вот модуль объекта:

```1c
    Перем мВалютаРегламентированногоУчета Экспорт;

    // ПРОЦЕДУРЫ ДЛЯ ФОРМИРОВАНИЯ ПЕЧАТНОЙ ФОРМЫ АКТА СПИСАНИЯ
    //
    Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = Новый Структура;

    ПараметрыРегистрации.Вставить("Вид", "ВнешняяПечатнаяФорма");
    ПараметрыРегистрации.Вставить("Назначение", Неопределено);
    ПараметрыРегистрации.Вставить("Наименование", НСтр("ru = 'Приложение к акту ИНВ-17'"));
    //ПараметрыРегистрации.Вставить("Версия", "1.0.1.2");
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    ПараметрыРегистрации.Вставить("Информация", НСтр("ru = 'ВнешняяПечатнаяФорма, выводит справку инвентаризации расчетов с покупателями, поставщиками и прочими дебиторами и кредиторами'"));

    //ТаблицаКоманд = ПолучитьТаблицуКоманд();
    //
    //ДобавитьКоманду(ТаблицаКоманд,
    // НСтр("ru = 'Материальный отчет по складу (МОЛ)'"),
    // Команда_МатериальныйОтчет,
    // "ОткрытиеФормы");
    //
    //ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
    //
    //Возврат ПараметрыРегистрации;

    КонецФункции

    // Процедура выполняет заполнение документа по форме ИНВ-17 данными регистра БУ
    //
    // Аргументы: 1. аргВидЗадолженности
    // Тип: Перечисления.ВидыЗадолженности
    // Назначение: Формирование выборки по конкретному виду задолженности (опция)
    //
    // 2. СписокСчетовВАкт
    // Тип: Массив
    // Назначение: Формирование выборки по счетам (обязательный аргумент)
    //
    Процедура ДокументыДляИнв17(ВидЗадолженности, Контрагенты)

    // Полная очистка записей в ТЧ Контрагенты
    Контрагенты = Новый ТаблицаЗначений;
    Контрагенты.Очистить();

    Запрос = Новый Запрос;
    ГраницаАкта = Новый Граница(КонецДня(СсылкаНаОбъект.Дата), ВидГраницы.Включая);

    Запрос.УстановитьПараметр("Дата", ГраницаАкта);
    Запрос.УстановитьПараметр("Организация", СсылкаНаОбъект.Организация);
    МассивСчетов = СсылкаНаОбъект.СчетаРасчетов.ВыгрузитьКолонку("СчетРасчетов");
    МассивСчетов = ОбщегоНазначения.УдалитьПовторяющиесяЭлементыМассива(МассивСчетов);
    Запрос.УстановитьПараметр("МассивСчетов", МассивСчетов);

    ВидыСубконто = Новый Массив();
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами);
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);

    Запрос.УстановитьПараметр("ВидЗадолженности", ВидЗадолженности);
    Запрос.УстановитьПараметр("Дебиторская", Перечисления.ВидыЗадолженности.Дебиторская);
    Запрос.УстановитьПараметр("Кредиторская", Перечисления.ВидыЗадолженности.Кредиторская);
    Запрос.УстановитьПараметр("Активный", ВидСчета.Активный);
    Запрос.УстановитьПараметр("Пассивный", ВидСчета.Пассивный);
    Запрос.УстановитьПараметр("СубконтоДокумента", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами);

    Запрос.Текст =
    "ВЫБРАТЬ
    | ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
    | ХозрасчетныйОстатки.Счет КАК СчетРасчетов,
    | ХозрасчетныйОстатки.Субконто3 КАК Документ,
    | СУММА(ВЫБОР
    | КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный
    | ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0
    | ТОГДА ХозрасчетныйОстатки.СуммаОстатокДт
    | ИНАЧЕ ХозрасчетныйОстатки.СуммаОстатокКт
    | КОНЕЦ) КАК Подтверждено,
    | ВЫБОР
    | КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный
    | ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0
    | ТОГДА &Дебиторская
    | ИНАЧЕ &Кредиторская
    | КОНЕЦ КАК ВидЗадолженности
    |ИЗ
    | РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет В (&МассивСчетов), &ВидыСубконто, Организация = &Организация) КАК ХозрасчетныйОстатки
    |ГДЕ
    | ВЫБОР
    | КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный
    | ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0
    | ТОГДА &Дебиторская
    | ИНАЧЕ &Кредиторская
    | КОНЕЦ = &ВидЗадолженности
    |
    |СГРУППИРОВАТЬ ПО
    | ХозрасчетныйОстатки.Субконто1,
    | ХозрасчетныйОстатки.Счет,
    | ВЫБОР
    | КОГДА ХозрасчетныйОстатки.Счет.Вид = &Активный
    | ИЛИ ХозрасчетныйОстатки.СуммаОстатокДт > 0
    | ТОГДА &Дебиторская
    | ИНАЧЕ &Кредиторская
    | КОНЕЦ,
    | ХозрасчетныйОстатки.Субконто3
    |
    |УПОРЯДОЧИТЬ ПО
    | ХозрасчетныйОстатки.Субконто1.Представление,
    | ХозрасчетныйОстатки.Счет.Порядок,
    | Документ
    |АВТОУПОРЯДОЧИВАНИЕ";

    Контрагенты = Запрос.Выполнить().Выгрузить();

    КонецПроцедуры // ЗаполнитьАктДляИнв17()

    // Функция формирует табличный документ с печатной формой накладной,
    //
    // Возвращаемое значение:
    // Табличный документ - печатная форма накладной
    //
    Функция ПечатьПриложенияИНВ17()

    Объект = ЭтотОбъект.СсылкаНаОбъект.ПолучитьОбъект();

    // Данные строк таблиц
    ЗапросКонтрагенты = Новый Запрос;
    ЗапросКонтрагенты.УстановитьПараметр("Ссылка", ЭтотОбъект.СсылкаНаОбъект);
    ЗапросКонтрагенты.УстановитьПараметр("Дебиторская", Перечисления.ВидыЗадолженности.Дебиторская);
    ЗапросКонтрагенты.УстановитьПараметр("Кредиторская", Перечисления.ВидыЗадолженности.Кредиторская);
    ЗапросКонтрагенты.УстановитьПараметр("ТипИнформации", Перечисления.ТипыКонтактнойИнформации.Адрес);
    ЗапросКонтрагенты.УстановитьПараметр("ВидИнформации", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);

    МассивКонтрагентов = СсылкаНаОбъект.Контрагенты.ВыгрузитьКолонку("Контрагент");
    МассивКонтрагентов = ОбщегоНазначения.УдалитьПовторяющиесяЭлементыМассива(МассивКонтрагентов);
    ЗапросКонтрагенты.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);

    ЗапросКонтрагенты.Текст =
    "ВЫБРАТЬ
    | КонтактнаяИнформация.Объект КАК Объект,
    | КонтактнаяИнформация.Представление КАК Адрес
    |ПОМЕСТИТЬ Адреса
    |ИЗ
    | РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    | КонтактнаяИнформация.Объект В(&МассивКонтрагентов)
    | И КонтактнаяИнформация.Тип = &ТипИнформации
    | И КонтактнаяИнформация.Вид = &ВидИнформации
    |
    |ИНДЕКСИРОВАТЬ ПО
    | Объект
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ИнвентаризацияРасчетовСконтрагентамиКонтрагенты.ВидЗадолженности КАК ВидЗадолженности,
    | ИнвентаризацияРасчетовСконтрагентамиКонтрагенты.Контрагент КАК Контрагент,
    | ИнвентаризацияРасчетовСконтрагентамиКонтрагенты.СчетРасчетов КАК СчетРасчетов,
    | СУММА(ИнвентаризацияРасчетовСконтрагентамиКонтрагенты.Подтверждено + ИнвентаризацияРасчетовСконтрагентамиКонтрагенты.НеПодтверждено) КАК СуммаДолга
    |ПОМЕСТИТЬ Контрагенты
    |ИЗ
    | Документ.ИнвентаризацияРасчетовСконтрагентами.Контрагенты КАК ИнвентаризацияРасчетовСконтрагентамиКонтрагенты
    |
    |СГРУППИРОВАТЬ ПО
    | ИнвентаризацияРасчетовСконтрагентамиКонтрагенты.ВидЗадолженности,
    | ИнвентаризацияРасчетовСконтрагентамиКонтрагенты.Контрагент,
    | ИнвентаризацияРасчетовСконтрагентамиКонтрагенты.СчетРасчетов
    |
    |ИНДЕКСИРОВАТЬ ПО
    | Контрагент
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | Контрагенты.ВидЗадолженности КАК ВидЗадолженности,
    | Контрагенты.Контрагент КАК Контрагент,
    | Контрагенты.СчетРасчетов КАК СчетРасчетов,
    | Адреса.Адрес,
    | Контрагенты.Контрагент.Наименование,
    | Контрагенты.Контрагент.НаименованиеПолное,
    | Контрагенты.СуммаДолга
    |ИЗ
    | Контрагенты КАК Контрагенты
    | ЛЕВОЕ СОЕДИНЕНИЕ Адреса КАК Адреса
    | ПО Контрагенты.Контрагент = Адреса.Объект
    |
    |УПОРЯДОЧИТЬ ПО
    | ВидЗадолженности,
    | Контрагент,
    | СчетРасчетов
    |АВТОУПОРЯДОЧИВАНИЕ";

    РезультатКонтрагенты = ЗапросКонтрагенты.Выполнить();

    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ИнвентаризацияРасчетов_ИНВ17прил";

    Макет = ПолучитьМакет("Макет");

    // Формирование шапки
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.НомерАкта = ОбщегоНазначения.ПолучитьНомерНаПечать(Объект);
    Шапка.Параметры.ДатаАкта = Формат(Объект.Дата, "ДФ="dd.MM.yyyy"");
    ТабДокумент.Вывести(Шапка);

    Ном = 0;

    Контрагенты = ";
    СтруктураПоиска = Новый Структура("Контрагент, СчетРасчетов");

    Выборка = РезультатКонтрагенты.Выбрать();
    Пока Выборка.СледующийПоЗначениюПоля("ВидЗадолженности") Цикл
    ДокументыДляИнв17(Выборка.ВидЗадолженности, Контрагенты);
    // dona
    //Сообщить("--- " + Выборка.ВидЗадолженности);
    //Для каждого Стр Из Контрагенты Цикл
    // Сообщить("--- " + Стр.Контрагент + ", " + Стр.СчетРасчетов + ", " + Стр.Документ + ", ");
    //КонецЦикла;
    // // dona
    ОбластьСтроки = Макет.ПолучитьОбласть("Строка" +
    ?(Выборка.ВидЗадолженности = Перечисления.ВидыЗадолженности.Дебиторская, "Дебета", "Кредита"));

    Пока Выборка.СледующийПоЗначениюПоля("Контрагент") Цикл
    СтруктураПоиска.Контрагент = Выборка.Контрагент;
    ОбластьСтроки.Параметры.Контрагент = Выборка.Контрагент;
    ОбластьСтроки.Параметры.КонтрагентПредставление = СокрЛП(?(ПустаяСтрока(Выборка.КонтрагентНаименованиеПолное),
    Выборка.КонтрагентНаименование, Выборка.КонтрагентНаименованиеПолное))
    + ?(ПустаяСтрока(Выборка.Адрес), ", Символы.ПС + Выборка.Адрес);

    Пока Выборка.СледующийПоЗначениюПоля("СчетРасчетов") Цикл
    СтруктураПоиска.СчетРасчетов = Выборка.СчетРасчетов;
    Неподтверждено = Выборка.СуммаДолга;

    // Найдем подтверждение документами.
    МассивДокументов = Контрагенты.НайтиСтроки(СтруктураПоиска);
    Для каждого ЭлементМассива Из МассивДокументов Цикл
    Если ЭлементМассива.Подтверждено > 0 Тогда
    Попытка
    МетаДока = ЭлементМассива.Документ.Метаданные();

    ОбластьСтроки.Параметры.Документ = ЭлементМассива.Документ;
    ОбластьСтроки.Параметры.ВидДокумента = МетаДока.Синоним;
    ОбластьСтроки.Параметры.ЗаЧто = ?(ТипЗнч(ЭлементМассива.Документ) = Тип("ДокументСсылка.ПоступлениеДопРасходов"),
    "За доп.расходы", "За товар");
    // Дата и номер документа.
    Если МетаДока.Реквизиты.Найти("ДатаВходящегоДокумента") <> Неопределено
    И ЭлементМассива.Документ.ДатаВходящегоДокумента <> '00010101' Тогда
    ОбластьСтроки.Параметры.ДатаДокумента = ЭлементМассива.Документ.ДатаВходящегоДокумента;
    Иначе
    ОбластьСтроки.Параметры.ДатаДокумента = ЭлементМассива.Документ.Дата;
    КонецЕсли;

    Если МетаДока.Реквизиты.Найти("НомерВходящегоДокумента") <> Неопределено
    И Не ПустаяСтрока(ЭлементМассива.Документ.НомерВходящегоДокумента) Тогда
    ОбластьСтроки.Параметры.НомерДокумента = ЭлементМассива.Документ.НомерВходящегоДокумента;
    Иначе
    ОбластьСтроки.Параметры.НомерДокумента = ЭлементМассива.Документ.Номер;
    КонецЕсли;

    Подтверждено = Мин(Неподтверждено, ЭлементМассива.Подтверждено);
    Неподтверждено = Неподтверждено - Подтверждено;
    ЭлементМассива.Подтверждено = ЭлементМассива.Подтверждено - Подтверждено;

    Ном = Ном + 1;
    ОбластьСтроки.Параметры.Ном = Ном;
    ОбластьСтроки.Параметры.Подтверждено = Подтверждено;
    ТабДокумент.Вывести(ОбластьСтроки);
    Исключение
    КонецПопытки;
    КонецЕсли;
    КонецЦикла;

    Если Неподтверждено <> 0 Тогда
    ОбластьСтроки.Параметры.ДатаДокумента = Неопределено;
    ОбластьСтроки.Параметры.НомерДокумента = Неопределено;
    ОбластьСтроки.Параметры.Документ = Неопределено;
    ОбластьСтроки.Параметры.ВидДокумента = Неопределено;
    ОбластьСтроки.Параметры.ЗаЧто = Неопределено;

    Ном = Ном + 1;
    ОбластьСтроки.Параметры.Ном = Ном;
    ОбластьСтроки.Параметры.Подтверждено = Неподтверждено;
    ТабДокумент.Вывести(ОбластьСтроки);
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;

    // Подпись
    Руководители = ОбщегоНазначения.ОтветственныеЛица(СсылкаНаОбъект.Организация, СсылкаНаОбъект.Дата);

    Подпись = Макет.ПолучитьОбласть("Подпись");
    Подпись.Параметры.РасшифровкаПодписи = Руководители.ГлавныйБухгалтер;
    ТабДокумент.Вывести(Подпись);

    Возврат ТабДокумент;
    КонецФункции // ПечатьАктаСписания()

    Функция Печать() Экспорт

    Возврат ПечатьПриложенияИНВ17();

    КонецФункции // Печать

    мВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
```

Подскажите как исправить ошибку.
---
1) всегда запрос.выполнить() заключайте в Попытку
2) всегда резульат запроса проверяйте на Пустой() с выходом из процедуры/функции
---
всегда запрос.выполнить() заключайте в Попытку
2) всегда результат запроса проверяйте на Пустой() с выходом из процедуры/функции

==================
Иван, а Вы не можете конкретно написать сам запрос
---
ТабОст = имеет тип "РезультатЗапроса", а не ТЗ, чтобы перебирать нужно после "Выполнить()" дописать ."Выгрузить()"
---
Ребят, простите, я совсем новичок в программировании, не пойму что ошибка означает: Итератор для значения не определен и куда дописки по ТабОст вводить?