Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 18:53

как перебрать строки в табличной части документа в форме документа

Автор Iater, 06 мая 2015, 22:28

0 Пользователей и 1 гость просматривают эту тему.

Iater

Всем привет!

Помогите, пожалуйста, разобраться с циклами. Я хочу из формы документа перебрать строки табличной части документа, чтобы заполнить столбец "цены".
Проблема в цикле - ошибку выдаёт то итератор не определен то Переменная не определена


&НаКлиенте
Процедура КлиентПриИзменении(Элемент)
ПроцентСкидки = РасчетСкидки.ПроцентСкидки(Объект.Дата, Объект.Клиент);

Для Каждого ТекСтрокаНоменклатура Из Номенклатура Цикл

    Док.ЦенаСоСкидкой = Док.Цена*(100-ПроцентСкидки)/100;

КонецЦикла;

КонецПроцедуры




Я совсем новичок и в упор не понимаю как перебрать строчки табличной части. Переписал из учебника, но это фигня не работает

pavl_vs

Iater, как я понимаю, в ТЧ, имя которой "Номенклатура" есть колонка "Цена", тогда цикл запишется так:

Для Каждого ТекСтрокаНоменклатура Из Номенклатура Цикл
    ЦенаСоСкидкой = ТекСтрокаНоменклатура.Цена*(100-ПроцентСкидки)/100;
    Сообщить(ЦенаСоСкидкой);
КонецЦикла;


Не понятно куда нужно записать цену со скидкой я "записал" в сообщение.

Iater

не работает

{Документ.РасходнаяНакладная.Форма.ФормаДокумента.Форма(19,39)}: Переменная не определена (Номенклатура)
   Для Каждого ТекСтрокаНоменклатура Из <<?>>Номенклатура Цикл (Проверка: Тонкий клиент)


нужно не в сообщение записать а в столбец ЦенаСоСкидкой, но это пока не важно - не работает. Видимо это моло бы работать, если я делал в Обработке проведения т.е. в модуле объекта. А я делаю в модуле формы документа, т.к. хочу чтобы ценаСоСкидкой вписывалась сразу, а не только после нажатия на кнопку "провести"
Добавлено: 06 мая 2015, 23:12


Для Каждого ТекСтрокаНоменклатура Из Номенклатура Цикл

Вообще, кстати, у меня же там нет переменной ТекСтрокаНоменклатура. Догадываюсь это потому, что курсор мой стоит на строке документа Клиент, ну или вообще нигде не стоит.
Добавлено: 07 мая 2015, 20:58


Вот так заработало:


&НаКлиенте // в модуле ФОРМЫ документа
Процедура КлиентПриИзменении(Элемент)

    ПроцентСкидки = РасчетСкидки.ПроцентСкидки(Объект.Дата, Объект.Клиент);

    ТекСтрокаНоменклатура = Элементы.Номенклатура.ТекущиеДанные; // забрали строки из табличной части в переменную "ТекСтрокаНоменклатура"

    Для Каждого ТекСтрокаНоменклатура Из Объект.Номенклатура Цикл // работает из-за "Объект." если убрать, то выдает ошибку как в первом посте

ТекСтрокаНоменклатура.ЦенаСоСкидкой = ТекСтрокаНоменклатура.Цена*(100-ПроцентСкидки)/100; // записываем в поле значение выражения

    КонецЦикла;

КонецПроцедуры

Похожие темы (5)

Рейтинг@Mail.ru

Поиск