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

Блог компании 1С GOODWILL

Ошибка «Итератор для значения не определен» в 1С 8.3 появляется как минимум в двух случаях:

при обновлении конфигурации; когда происходит попытка применить итератор к объектам, которые не являются коллекциями.

Известны и другие моменты, когда возникает данная исключительная ситуация, но они зачастую носят частный характер и соответственно требуют частого подхода. В рамках статьи трудно уложить все варианты возникновения ошибки, поэтому ограничимся двумя вышеперечисленными.

Ошибка при обновлении конфигурации 1С

На сколько я помню, чаще всего данная ошибка возникала при переходе на релиз 3.0.43.194, но может возникнуть и при переходе на другой релиз.

Дело в данном случае заключается в отсутствии определенной записи в справочнике «Производственные календари».

Итератор для значения не определен — обновление БП 3.0

А именно необходимо добавить запись с наименованием «Российская Федерация» и код «РФ».

Сделать это нужно до обновления. То есть тем, кто уже сделал обновление и наткнулся на ошибку «Итератор для значения не определен», следует вернуться к прежней версии (развернуть резервную копию), добавить там запись в справочник, заполнить все по умолчанию, а затем обновляться:

А что же делать тем, кто не сделал резервную копию? Выход тоже есть, но немного посложнее. Или скорее похитрее.

Вся проблема в том, что ошибка вызывает исключительную ситуацию и блокирует интерфейс, предлагая закончить работу. Вызываем справку (F1) и вызываем навигационную ссылку:

В открывшемся окне вводим саму ссылку «1cib/list/Справочник.ПроизводственныеКалендари»:

И нажимаем «Перейти». Все, можно заводить календарь.

Попытка применить итератор к объектам, которые не являются коллекциями

Часто при программировании разработчики 1С допускают распространенную ошибку, пытаются применить итератор к объектам, которые не являются коллекциями.

Причем коллекции бывают разные.

Для начала разберемся, что такое «итератор». Итератор происходит от английского слова «iterator» – протокол (или интерфейс), который предоставляет доступ к элементам коллекций. Кроме доступа естественно предоставляется и возможность обхода коллекции.

Существует два разных способа обхода коллекций:

как массива; как списка.

Коллекции в виде списка существует конструкция:

Для Каждого Из Цикл

КонецЦикла;

Для массивов обычно использую обычный цикл с индексированным обращением к элементу коллекции.

Как я уже упоминал, коллекции могут быть различными, причем кроме деления на массив и список, они еще делятся на универсальные (таблицы значений, соответствия, структуры, массивы) и специализированные, например табличные части документов.

Ошибка «Итератор для значения не определен» возникает в двух случаях:

когда разработчик пытается применить итератор к объектам, коллекциями не являющихся; когда доступ к коллекции разработчик пытается сделать не правильно, например, к списку, как к массиву.

Поэтому для того, чтобы избежать этой неприятной ситуации с данной ошибкой следует внимательней относиться к объектам, к которым делается попытка доступа.

Запись Итератор для значения не определен в 1С 8.3 — как исправить ошибку? впервые появилась Блог компании 1С GOODWILL.

Читать полностью на сайте programmist1s.ru

Итератор для значения не определен в 1С 8.3 — как исправить ошибку?

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

Я
   1сЮлия

Добрый день! После обнвления конф Сельскоехозяйство ред 1.2.40.2 пишет при проведении документа Начисление ЗП Интегратор для значения не определен

 
 

   Fragster

сначала надо научиться читать.

   dezss

И наверное указывает строчку кода, где вываливается эта ошибка?

   dezss

(1) +100500)))

   1сЮлия

Для каждого строка из Таблица затрат

   mkalimulin

(4) Таблица — не таблица.

   lubitelxml

(5) строка не строка )))))))))))

   lubitelxml

(0) посмотри отладчиком какой тип у таблицы затрат

   1сЮлия Для Каждого Строка Из ТаблицаЗатрат Цикл                  Движение = Движения.ИНАГРО_ЗатратыОрганизаций.Добавить();                  Движение.ВидДвижения    = ВидДвиженияНакопления.Приход;         Движение.Период        = Строка.Период;         Движение.Организация    = Строка.Организация;    Одинесю

На Я жмякни.

   mkalimulin

(8) Таблица — не таблица.

 
     1сЮлия

А как сделать,чтобы она стала таблицей,это код поставщика?

   lubitelxml

(11) посмотри как она формируется в коде.

   mkalimulin

(11) ТаблицаЗатрат = новый ТаблицаЗначений
И никаких тебе ошибок.

   lubitelxml

(13) и не факт что правильно проведется док

   Вафель

(1) Что вы хотите от девочки-колхозницы

   mkalimulin

(14) Зануда!

   1сЮлия

ТаблицаЗатрат = ИНАГРО_ПроцедурыИФункции.ИНАГРО_ДвиженияЗатратыОрганизации_Приход(СтруктураШапкиДокумента.Ссылка);

   Вафель

(17) модуль без кода?

   1сЮлия Процедура ИНАГРО_ДвиженияЗатратыОрганизации_Приход(СтруктураШапкиДокумента, Движения) Экспорт          Если НЕ (СтруктураШапкиДокумента.Ссылка.Метаданные().Имя = "ЗакрытиеМесяца"            ИЛИ СтруктураШапкиДокумента.Ссылка.Метаданные().Имя = "ВводНачальныхОстатков"            ИЛИ СтруктураШапкиДокумента.Ссылка.Метаданные().Имя = "ОпределениеФинансовыхРезультатов"            ИЛИ СтруктураШапкиДокумента.Ссылка.Метаданные().Имя = "СписаниеОС") Тогда &nbsp// в этих док. — Движения.Хозрасчетный.Записать(Ложь)         Движения.Хозрасчетный.Записать();     КонецЕсли;          ТаблицаЗатрат = ИНАГРО_ПроцедурыИФункции.ИНАГРО_ДвиженияЗатратыОрганизации_Приход(СтруктураШапкиДокумента.Ссылка);          ПустаяНомГруп = Справочники.НоменклатурныеГруппы.ПустаяСсылка();     ПустоеПодразд = Справочники.ПодразделенияОрганизаций.ПустаяСсылка();     ПустаяСтатья  = Справочники.СтатьиЗатрат.ПустаяСсылка();          Для Каждого Строка Из ТаблицаЗатрат Цикл                  Движение = Движения.ИНАГРО_ЗатратыОрганизаций.Добавить();                  Движение.ВидДвижения    = ВидДвиженияНакопления.Приход;         Движение.Период        = Строка.Период;         Движение.Организация    = Строка.Организация;                  Движение.СчетЗатрат            = Строка.СчетДт;         Движение.Подразделение            = Строка.Подразделение;         Движение.НоменклатурнаяГруппа    = Строка.НоменклатурнаяГруппа;         Движение.СтатьяЗатрат            = Строка.СтатьяЗатрат;    Вафель вот этот модульИНАГРО_ПроцедурыИФункции    dezss

(19) ИНАГРО_ПроцедурыИФункции.ИНАГРО_ДвиженияЗатратыОрганизации_Приход

пкм, перейти к определению.

И сюда код выложи.

   Неверный Параметр И

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

   Naf2017

(19) а давно процедуры стали возвращать значения?

   dezss

(23) Я тож так подумал, но ты внимательней посмотри)

   Lexey_

(19) Интегратор = Новый ИнтеграторЗначения(ТаблицаЗатрат);
А потом уже Для каждого Строка Из ТаблицаЗатрат…

   Живой Ископаемый

2(19) у вас в разных модулях функции/процедуры с одним названием и разной сигнатурой?
Это обфускация такая?

   Naf2017

(26) они реализуют так override

 

Наведи порядок в своей работе используя конфигурацию 1C "Управление IT-отделом 8"

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.