Имя: Пароль:
1C
1С v8
Цикл Для каждого. Итератор для значения не определен
0 nlv-lara
 
28.11.16
14:22
Добрый день.

Выпадает ошибка в стандартном модуле разработчика при отправке документа на печать - итератор для значения не определен.
Эта ошибка возникает только на одном документе (документ добавлялся в конфу), при этом все нормально срабатывает на всех остальных документах (также добавленных в конфу самостоятельно). Код перепроверен сто раз.

Конфигурация 1C:CRM, редакция 2.0 (2.0.12.7)

В чем может быть причина?
1 Fish
 
28.11.16
14:23
Отладчик знает.
2 Волшебник
 
модератор
28.11.16
14:23
Отправьте модуль разработчику на доработку
3 nlv-lara
 
28.11.16
14:25
(2) Невозможно, конфа не на поддержке.
4 FIXXXL
 
28.11.16
14:25
(0) причина в коде
но ты его не показывай
5 nlv-lara
 
28.11.16
14:29
Функция СформироватьПечатнуюФормуБСО(МассивОбъектов, ОбъектыПечати)    
    
    УстановитьПривилегированныйРежим(Истина);
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.АвтоМасштаб = Истина;
    ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_БСО";
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПКО.Дата,
    |    ПКО.Номер,
    |    ПКО.НомерЗаказа КАК Заказ,
    |    ПКО.Плательщик КАК Клиент,
    |    ПКО.Сумма
    |ИЗ
    |    Документ.ПКО КАК ПКО
    |ГДЕ
    |    ПКО.Ссылка В(&МассивОбъектов)";
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    Макет = УправлениеПечатью.ПолучитьМакет("Документ.ПКО.БСО");
    Выборка = Запрос.Выполнить().Выбрать();
................
6 nlv-lara
 
28.11.16
14:31
(5) Процедура СформироватьПечатныеФормы(ИмяМенеджераПечати, Знач ИменаМакетов, МассивОбъектов, ПараметрыПечати,
    КоллекцияПечатныхФорм, ОбъектыПечати = Неопределено, ПараметрыВывода) Экспорт
    
    СписокПолучателей = Новый СписокЗначений;
    Для Каждого Док из МассивОбъектов Цикл   // Здесь вылетает
................
7 Fish
 
28.11.16
14:32
(6) Поставь здесь точку останова, и посмотри в отладчике, чему равен МассивОбъектов. Вангую, что в случае вылета, там не массив.
8 nlv-lara
 
28.11.16
14:34
(7) Все верно, во время вылета там не Массив, а ссылка на документ.
Но разобраться почему, не могу.
9 Fish
 
28.11.16
14:35
(8) Надо смотреть, откуда вызывается  СформироватьПечатныеФормы() и где происходит инициализация переменной МассивОбъектов.
10 catena
 
28.11.16
14:36
(8)Поставь точку останова, дождись остановки и посмотри стек вызовов.
11 Сияющий Асинхраль
 
28.11.16
14:43
Варианта два, один уже сказали, второй проще: проверять тип объекта МассивОбъектов, если он не представляет собой массив, обработывать отдельно. Первый вариант будет правильнее, второй вариант - для ленивых...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой