Имя: Пароль:
1C
1С v8
Перебор ЭлементыФормы.ТабличнаяЧасть
0 famnam
 
01.10.11
13:17
Подскажите, пожалуйста, походу я не туда копаю. Конфа самописная. Есть процедура обработки события НоменклатураПриИзменении, которая при изменении номенклатуры пересчитывает сумму для текущей строки ТЧ (через ЭлементыФормы.ТЧ.ТекущиеДанные).
Однако, при выборе контрагента, необходимо пробежаться по всем строкам ТЧ, дабы пересчитать сумму в каждой строке, т.е. нужно вызвать процедуру НоменклатураПриИзменении для элемента в каждой строке. Я так понимаю, нужно в цикле "Для каждого Из" менять ЭлементыФормы.ТЧ.ТекущаяСтрока или бред? :)
1 famnam
 
01.10.11
13:20
почему именно вызвать обработчик события? как я сказал, это самописная конфа и механизм пересчета зашита глубоко в бизнес логике программы, а переписывать все модули не хочется :)
2 zladenuw
 
01.10.11
13:23
ну так в обработчик ты что передаешь ? строку ТЧ?  если да то берешь выборку по ТЧ и вызываешь для каждой строки пересчет.
3 famnam
 
01.10.11
13:27
этож стандартный обработчик, в параметрах передается ЭЛЕМЕНТ, вызвавший событие
4 famnam
 
01.10.11
13:28
вот и пытаюсь как передать ЭЛЕМЕНТ в обработчик, предварительно сделав строку в ТЧ текущей
5 zladenuw
 
01.10.11
13:31
Процедура ПолеВвода1ПриИзменении(Элемент)
   Для каждого Стр Из ТП Цикл
   //Твоя функция для пересчета
          Стр.Сумма = Стр.Цена + 50 ;
   
   КонецЦикла;
КонецПроцедуры

ТП - Табличное поле на форме
6 zladenuw
 
01.10.11
13:32
зачем текущею, тебе нужно всю ТП перебрать
7 famnam
 
01.10.11
13:36
(5) я бы тоже так сделал, но это уже чужая реализация и сделано так, в процедуру передается ЭлементыФормы.ТЧ.ТекущиеДанные, и в ней уже идет расчет и заполнение элементов ТЕКУЩЕЙ строки. Если я просто тупо в каждой итерации вызову процедуру, она пересчитает сумму для ТЕКУЩЕЙ строки, которая будет оставаться одной и той же.
8 famnam
 
01.10.11
13:37
сложно объяснить
9 zladenuw
 
01.10.11
13:38
код покажи тогда
10 zladenuw
 
01.10.11
13:38
ЭлементыФормы.ТЧ.ТекущиеДанные - это и есть Тек Строка, если ты будешь делать перебор то будет передавать просто Стр
11 famnam
 
01.10.11
13:41
(10) Да ты прав, дружище. все получилось! Спасибо :)

   Для каждого СтрокаТЧ из ТЧ Цикл
       ЭлементыФормы.ТЧ.ТекущаяСтрока = СтрокаТЧ;
       УстановитьСтоимость(ЭлементыФормы.ТЧ.ТекущиеДанные);
   КонецЦикла;
12 zladenuw
 
01.10.11
13:42
(11) даже без этого
Для каждого СтрокаТЧ из ТЧ Цикл
       //ЭлементыФормы.ТЧ.ТекущаяСтрока = СтрокаТЧ;
       УстановитьСтоимость(СтрокаТЧ);
   КонецЦикла;
13 famnam
 
01.10.11
13:47
(11) дааа, похоже я уработался :) Буду знать, спасибо
14 zladenuw
 
01.10.11
13:48
пжл:)