Как получить текущую строку для каждой строки таблицы значений на форме?

1. baracuda 2 15.01.22 11:20 Сейчас в теме
Мне нужно выполнить некий код из типового модуля. Типовой код выполняется для текущей строки.
Как я могу программно, запустить итерацию таблицы значений с изменение текущей строки на форме?
По теме из базы знаний
Найденные решения
10. baracuda 2 17.01.22 13:25 Сейчас в теме
//После обновления проверимть!!!!
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзмененииКастом(СтрокаТЗ)
	
	ИдентификаторСтроки = СтрокаТЗ.ПолучитьИдентификатор();
	Элементы.Товары.ТекущаяСтрока = ИдентификаторСтроки;
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ОбработкаТабличнойЧастиТоварыКлиент.СтруктураПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
	СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
	
	ОбработкаТабличнойЧастиТоварыКлиент.ПриИзмененииРеквизитовВТЧКлиент(Объект.Товары, ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	ОбработкаТабличнойЧастиТоварыКлиент.ВыделитьАгентскоеВознаграждение(Объект, ЭтотОбъект, СтруктураДействий, ТекущаяСтрока, КэшированныеЗначения);
	
	ОбновитьИтоговыеПоказателиКлиентСервер(ЭтотОбъект);
	
КонецПроцедуры
Показать


Сделал так. Все работаем, всем спасибо.
user1706724; jobkostya1c_ERP; strelvan; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. polax 15.01.22 11:38 Сейчас в теме
В цикле ДляКаждого получаешь строку ТЗ и передаешь ее в нужный модуль
3. baracuda 2 15.01.22 11:58 Сейчас в теме
(2) делал так, не сработало.
Модуль такой,

&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ОбработкаТабличнойЧастиТоварыКлиент.СтруктураПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
	СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
	
	ОбработкаТабличнойЧастиТоварыКлиент.ПриИзмененииРеквизитовВТЧКлиент(Объект.Товары, ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	ОбработкаТабличнойЧастиТоварыКлиент.ВыделитьАгентскоеВознаграждение(Объект, ЭтотОбъект, СтруктураДействий, ТекущаяСтрока, КэшированныеЗначения);
	
	ОбновитьИтоговыеПоказателиКлиентСервер(ЭтотОбъект);
	
КонецПроцедуры
Показать


Я пробовал и так

	Для Каждого строкаТЗ Из Элементы.Товары Цикл
		ТоварыСтавкаНДСПриИзмененииКастом(строкаТЗ);		
	КонецЦикла;	



И так

	Для Каждого строкаТЗ Из Объект.Товары Цикл
		ТоварыСтавкаНДСПриИзмененииКастом(строкаТЗ);		
	КонецЦикла;	
6. polax 15.01.22 14:26 Сейчас в теме
(3) Последний код, с точки зрения алгоритма правильный. Вот только передавать в Процедуру ПриИзменении абсолютно неверно. Должна быть отдельная процедура и никаких получений текущих данных, у тебя они уже есть в передаваемом параметре
Для Каждого строкаТЗ Из Объект.Товары Цикл
        ТоварыСтавкаНДСКастом(строкаТЗ);        
    КонецЦикла;
&НаКлиенте
Процедура ТоварыСтавкаНДСКастом(ТекущаяСтрока)
    
    
    
    СтруктураДействий = Новый Структура;
    СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ОбработкаТабличнойЧастиТоварыКлиент.СтруктураПересчетаСуммыНДСВСтрокеТЧ(Объект));
    СтруктураДействий.Вставить("ПересчитатьСумму");
    СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
    СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
    
    ОбработкаТабличнойЧастиТоварыКлиент.ПриИзмененииРеквизитовВТЧКлиент(Объект.Товары, ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
    ОбработкаТабличнойЧастиТоварыКлиент.ВыделитьАгентскоеВознаграждение(Объект, ЭтотОбъект, СтруктураДействий, ТекущаяСтрока, КэшированныеЗначения);
    
    ОбновитьИтоговыеПоказателиКлиентСервер(ЭтотОбъект);
    
КонецПроцедуры
Показать
9. ishelper 15.01.22 14:37 Сейчас в теме
(3)
Модуль такой,
И где в этом модуле обрабатывается переданный в него параметр Элемент?
4. user1203706 15 15.01.22 13:10 Сейчас в теме
(3)

Товары - это не тз, а табличная часть
В самом последнем коде, где Объект.Товары воткни в конец после цикла
Элементы.Товары.Обновить();
5. baracuda 2 15.01.22 13:44 Сейчас в теме
(4)что то не то ты говоришь...
причем тут метод обновить? что он даст я же ничего не установил и не изменил, разве от простой итерации табличной части, текущая строка устанавливается?
7. user1203706 15 15.01.22 14:34 Сейчас в теме
(5) ёё... как всё запущено.
Нам отсюда не видно, что делает
ТоварыСтавкаНДСПриИзмененииКастом
8. user1203706 15 15.01.22 14:36 Сейчас в теме
Если не понятно, что написано в (4), поясняю:

Для Каждого строкаТЗ Из Объект.Товары Цикл
ТоварыСтавкаНДСПриИзмененииКастом(строкаТЗ);
КонецЦикла;
Элементы.Товары.Обновить();
10. baracuda 2 17.01.22 13:25 Сейчас в теме
//После обновления проверимть!!!!
&НаКлиенте
Процедура ТоварыСтавкаНДСПриИзмененииКастом(СтрокаТЗ)
	
	ИдентификаторСтроки = СтрокаТЗ.ПолучитьИдентификатор();
	Элементы.Товары.ТекущаяСтрока = ИдентификаторСтроки;
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", ОбработкаТабличнойЧастиТоварыКлиент.СтруктураПересчетаСуммыНДСВСтрокеТЧ(Объект));
	СтруктураДействий.Вставить("ПересчитатьСумму");
	СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомРучнойСкидки", Новый Структура("Очищать", Ложь));
	СтруктураДействий.Вставить("ПересчитатьСуммуСУчетомАвтоматическойСкидки", Новый Структура("Очищать", Истина));
	
	ОбработкаТабличнойЧастиТоварыКлиент.ПриИзмененииРеквизитовВТЧКлиент(Объект.Товары, ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	ОбработкаТабличнойЧастиТоварыКлиент.ВыделитьАгентскоеВознаграждение(Объект, ЭтотОбъект, СтруктураДействий, ТекущаяСтрока, КэшированныеЗначения);
	
	ОбновитьИтоговыеПоказателиКлиентСервер(ЭтотОбъект);
	
КонецПроцедуры
Показать


Сделал так. Все работаем, всем спасибо.
user1706724; jobkostya1c_ERP; strelvan; +3 Ответить
Оставьте свое сообщение

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