Пересчитать итог При изменении в табличной части, созданной программно

1. user1988332 13.03.24 13:48 Сейчас в теме
УФ, Внешняя Обработка для конфигурации БП 3.0.
Исходная задача: По заданным условиям на форме создаются ПРОГРАММНО страницы, на каждой странице табличная часть, в табличной части несколько колонок, одна из них СуммаПлатежа, в подвале этой колонки ИТОГ. Пользователь будет менять суммы платежей в колонке чтобы подогнать к определенной итоговой сумме. Далее эти табличные части будут передаваться на подготовленные Макеты на печать.
Код рабочий, всё ок, тут вопросов нет.

Проблема: НЕ пересчитывается ИТОГ по колонке СуммаПлатежа если в ячейки пользователь меняет цифру:
НоваяКолонка.УстановитьДействие("ПриИзменении", "СуммаПлатежаПриИзменении").
Не понимаю как этот метод должен отрабатывать, нужно ли создать процедуру с директивой на клиенте и как это увязать.

*Напоминаю что это программно созданные реквизиты формы (страницы, табличные части, колонки табличной части и подвал табличной части).

Весь код процедуры по ссылке: https://paste1c.ru/9872w9phy6q

Часть кода:

&НаСервере
Процедура СформироватьНаСервере()
	//...
	
		//Создаем ТабличнуюЧасть на выше созданной странице
		НоваяТаблица = Элементы.Добавить("Стр"+ИмяСтраницы,Тип("ТаблицаФормы"),НоваяСтраница);     
		НоваяТаблица.ПутьКДанным = "НовТаб";
		НоваяТаблица.Отображение = ОтображениеТаблицы.Список;
		НоваяТаблица.ТолькоПросмотр = Ложь;
		НоваяТаблица.Подвал = Истина;
		НоваяТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
		//Прописываем пути к Колонкам Новой Таблицы
		//1.Ваучер
		НоваяКолонка  = Элементы.Добавить("Ваучер"+ИмяСтраницы, Тип("ПолеФормы"), НоваяТаблица);
		НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;      
		НоваяКолонка.ПутьКДанным = "НовТаб.Ваучер";
		НоваяКолонка.Заголовок = "Ваучер";
		//2.СуммаПлатежа
		НоваяКолонка  = Элементы.Добавить("СуммаПлатежа"+ИмяСтраницы, Тип("ПолеФормы"), НоваяТаблица);
		НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;      
		НоваяКолонка.ПутьКДанным = "НовТаб.СуммаПлатежа";
		НоваяКолонка.Заголовок = "Сумма платежа";  
		//ИмяДляДействия = НоваяКолонка.Имя; 
		
//...

		
		//Добавляем подвал ТабличнойЧасти
		ДобавляемыеРеквизиты    = Новый Массив; 
		РеквизитПодвала = Новый РеквизитФормы("Итого"+ИмяСтраницы, Новый ОписаниеТипов("Число"));
		ДобавляемыеРеквизиты.Добавить(РеквизитПодвала);
		ИзменитьРеквизиты(ДобавляемыеРеквизиты);
		НоваяКолонка.ПутьКДаннымПодвала = "Итого"+ИмяСтраницы+""; 
		
		Если ТЗДанныеПроформы.Количество()>0 Тогда
			ОтборПоПроформе = Новый Структура;
			ОтборПоПроформе.Вставить("ДокументПроформы", Строчка.ДокументПроформы);
			НоваяТаблицаСОтбором = ТЗДанныеПроформы.НайтиСтроки(ОтборПоПроформе); 
			ВсегоСуммаПлатежей = 0;
			Для каждого СтрокаМассива из НоваяТаблицаСОтбором Цикл
				НовСтрока = НовТаб.Добавить();
				НовСтрока.Ваучер = СтрокаМассива.Ваучер;
				НовСтрока.СуммаПлатежа = СтрокаМассива.СуммаПлатежа;
				НовСтрока.ВалютаПлатежа = СтрокаМассива.ВалютаПлатежа;
				НовСтрока.ДокументПроформы = СтрокаМассива.ДокументПроформы;
				ВсегоСуммаПлатежей = ВсегоСуммаПлатежей + СтрокаМассива.СуммаПлатежа; //Цифра для ИТОГа по Колонке СуммаПлатежа
			КонецЦикла;
		КонецЕсли;
		Элементы["СуммаПлатежа"+ИмяСтраницы+""].ТекстПодвала = ВсегоСуммаПлатежей; //Выводим в ПОДВАЛ Сумму по колонке СуммаПлатежа
		
		НоваяКолонка.УстановитьДействие("ПриИзменении", "СуммаПлатежаПриИзменении"); //вот тут загвоздка Как обновить сумму в подвале если в строках колонки СуммаПлатежа изменили цифру?? 
	
	КонецЦикла;
			
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1988332 14.03.24 17:24 Сейчас в теме
Я сама смогла. Антон *Дед* Беляков, если вдруг однажды будешь это читать, то большое спасибо тебе за точную наводку и по делу, без праздных нравоучений :)
Решение: https://paste1c.ru/b5rs1fevauo
Оставьте свое сообщение

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