Итератор значения не определен(Проценты на цены)

1. bluk21 09.10.25 22:07 Сейчас в теме
Здравствуйте. Я создал кнопку, которая задает процент для уменьшения цен одного столбца табличной части "Материалы" из документа. Я использовал окно ввода и цикл, но происходит ошибка "Итератор значения не определен" после того как я нажимаю на 'ОК' после ввода значения на окне. Вот код, который я использовал

&НаКлиенте
Процедура Проценты(Команда)
  Процент	=	"";
  ПоказатьВводЗначения(Новый ОписаниеОповещения("ПроцентыЗавершение", ЭтаФорма, Новый Структура("Процент", Процент)), Процент);
КонецПроцедуры

&НаКлиенте
Процедура ПроцентыЗавершение(Значение, ДополнительныеПараметры) Экспорт
	
	Процент = ?(Значение = Неопределено, ДополнительныеПараметры.Процент, Значение); 
	Для каждого СтрокаТЧ из Элементы.Материалы.ТекущиеДанные Цикл
		СтрокаТЧ.Цена = СтрокаТЧ.Цена * (1 - (Процент/100));
	КонецЦикла;
	
КонецПроцедуры
Показать
Найденные решения
3. Anton_new01 10.10.25 08:09 Сейчас в теме
(1)
Ошибка «Итератор для значения не определён»
Возникает, когда используют конструкцию не для коллекции.
Для Каждого Итератор из Коллекция Цикл
...
КонецЦикла


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

Кроме этого надо понимать, что есть данныеФормы и есть элементыФормы.
ДанныеФормы - это информация с которой мы работаем.
ЭлементыФормы - это красивости и "бантики" как мы эту информацию рисуем/отображаем на форме.(например цвет ячейки, размер шрифта, подчеркивание, галочки и т.д и т.п)

В данном случае вы хотите работать с даннымиФормы, а пытаетесь перебирать ЭлементыФормы - так ничего не получится.

вам надо обращаться либо к Объект.Материалы либо к Материалы - в зависимости от того является ли таблица Реквизитом формы или Объекта.
что-то типа того:

Для Каждого СтрокаМатериал из Материалы Цикл
     СтрокаМатериал.Цена = СтрокаМатериал.Цена * (1 - (Процент/100));
Цикл;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ZergKRSK 130 10.10.25 07:32 Сейчас в теме
(1) что ты ожидаешь получить в Элементы.Материалы.ТекущиеДанные ? Коллекцию?
Ошибка «Итератор для значения не определён» в системе «1С» указывает на попытку использовать циклический оператор (итератор) с объектом, который не поддерживает итерацию (последовательный перебор его элементов)
3. Anton_new01 10.10.25 08:09 Сейчас в теме
(1)
Ошибка «Итератор для значения не определён»
Возникает, когда используют конструкцию не для коллекции.
Для Каждого Итератор из Коллекция Цикл
...
КонецЦикла


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

Кроме этого надо понимать, что есть данныеФормы и есть элементыФормы.
ДанныеФормы - это информация с которой мы работаем.
ЭлементыФормы - это красивости и "бантики" как мы эту информацию рисуем/отображаем на форме.(например цвет ячейки, размер шрифта, подчеркивание, галочки и т.д и т.п)

В данном случае вы хотите работать с даннымиФормы, а пытаетесь перебирать ЭлементыФормы - так ничего не получится.

вам надо обращаться либо к Объект.Материалы либо к Материалы - в зависимости от того является ли таблица Реквизитом формы или Объекта.
что-то типа того:

Для Каждого СтрокаМатериал из Материалы Цикл
     СтрокаМатериал.Цена = СтрокаМатериал.Цена * (1 - (Процент/100));
Цикл;
4. bluk21 10.10.25 16:01 Сейчас в теме
(3) Получилось. Спасибо. Цены уменьшились без проблем.
Для отправки сообщения требуется регистрация/авторизация

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот