Как посчитать суммы по колонке для выделенных строк динамического списка?

1. demon1981 03.02.25 17:03 Сейчас в теме
Создал обработку. Добавил динамический список с произвольными запросом к документам, в качестве колонки есть некие цифры которые собираются в запросе. Хочу на форме видеть суммы для выделенных строк динамического списка, но проблема в том что массив выделенных строк содержит только ссылки на документы. Как получить строки для этих ссылок, чтоб выдернуть откуда содержимое колонки.

Манипуляции с текущей строкой списка ломают все, приводя к срабатыванию АктивацииСтроки, НайтиПоИдентификатору для списка не работает, хотя вроед такие рекомендации по интерентам есть, но пишет что метода такого нет.
По теме из базы знаний
Найденные решения
4. Sashares 33 03.02.25 17:49 Сейчас в теме
(3) Не надо у декорации заголовок менять.
Добавьте реквизит формы типа число или строка и выведите его на форму.

А при активизации срабатывает всегда?
Например, если снять выделение у строки, срабатывает?
Проверил, срабатывает, но там остается столько же строк, сколько было до отмены выделения.
То есть на момент активизации строки, строка все еще остается выделенной, и выделение пропадает после события.

Лучше такое делать на отдельную кнопку, или может обработчик ожидания.
При активизации строки, имхо, плохая затея.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 03.02.25 17:13 Сейчас в теме
(1) Метод ДанныеСтроки() динамического списка.
3. demon1981 03.02.25 17:45 Сейчас в теме
Может это баг платформы, но у меня такое поведение, если в коде есть строки где суммируется ОбщийВес и ОбщийОбъем то ПриАктивацииСтроки срабатывает дважды, второй раз он срабатывает на первую строку массива и массив выбранных строк содержит одну эту строку, при этом на форме выделено несколько строк. ДекорацияОбщийВесЗначение обновляется неправильным значением из одной строки, а не суммой выделенных. Если эти строчку удалить, получение данных строки при этом остается, то ПриАктивацииСтроки срабатывает штатно, один раз, ВыбранныеСтроки содержат правильное количество строк.

ОбщийВес 	= ОбщийВес 		+ ДанныеВыделенойСтроки.Вес;
ОбщийОбъем 	= ОбщийОбъем 	+ ДанныеВыделенойСтроки.Объем;	



Процедура ЖурналДокументовПриАктивизацииСтроки(Элемент)
	
	ОбщийВес = 0; ОбщийОбъем = 0;
	
	Для каждого СтрокаСписка из Элементы.ЖурналДокументов.ВыделенныеСтроки Цикл
		
		ДанныеВыделенойСтроки = Элементы.ЖурналДокументов.ДанныеСтроки(СтрокаСписка);
		//
		ОбщийВес 	= ОбщийВес 		+ ДанныеВыделенойСтроки.Вес;
		ОбщийОбъем 	= ОбщийОбъем 	+ ДанныеВыделенойСтроки.Объем;	
		//
	КонецЦикла;    
	
	Элементы.ДекорацияОбщийВесЗначение.Заголовок 	= ОбщийВес;
	Элементы.ДекорацияОбщийОбъемЗначение.Заголовок 	= ОбщийОбъем;	
	
КонецПроцедуры
Показать
4. Sashares 33 03.02.25 17:49 Сейчас в теме
(3) Не надо у декорации заголовок менять.
Добавьте реквизит формы типа число или строка и выведите его на форму.

А при активизации срабатывает всегда?
Например, если снять выделение у строки, срабатывает?
Проверил, срабатывает, но там остается столько же строк, сколько было до отмены выделения.
То есть на момент активизации строки, строка все еще остается выделенной, и выделение пропадает после события.

Лучше такое делать на отдельную кнопку, или может обработчик ожидания.
При активизации строки, имхо, плохая затея.
8. demon1981 04.02.25 10:53 Сейчас в теме
(4) Помогло добавление реквизитов формы и вывод их на форму, вместо Декорации и обновления заголовка. А в чем причина? Похоже при обновлении Заголовка декорации формы, срабатывает ПриАктивацииСтроки, причем само обновление заголовка в коде я не удалил, просто оно всегда обновляло заголовок нулем, ПриАктивацииСтроки повторно срабатывает только если заголовок декорации обновляется новым значением.
9. Sashares 33 04.02.25 10:54 Сейчас в теме
(8) Изменение заголовка декорации делает вызов сервера и перерисовку формы.
5. miniogn 44 03.02.25 19:27 Сейчас в теме
Не надо ходить по строкам.
При активации строки подключай обработчик ожидания и вызывай без контекстную серверную функцию, в которой по массиву ссылок, запросом, получай сумму, которую затем присваивай числовому реквизиту.
d4rkmesa; +1 Ответить
6. user1936660 03.02.25 22:05 Сейчас в теме
(5) Зачем делать серверный вызов, если все данные уже есть на клиенте?
7. demon1981 04.02.25 10:44 Сейчас в теме
(5) это было самое крайнее решение, как заметили выше, хотелось бы всеже получать данные уже имеющиеся в списке, чем отдельно еще запросом ходить в БД.
10. user1936660 04.02.25 12:28 Сейчас в теме
(8)
А в чем причина? Похоже при обновлении Заголовка декорации формы
Прикрепленные файлы:
VyacheslavShilov; +1 Ответить
Оставьте свое сообщение

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