Посчитать сумму выделенных строк в форме списка

1. IgoX 31.05.13 15:22 Сейчас в теме
Добрый день
Управляемая форма.
Хочется посчитать сумму по полю выделенных строк, так что бы весь код исполнялся на клиенте.
Подскажите как?
ВыделенныеСтроки - содержат только ссылки, а дергать сервер не хочется.
Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. killitch 30 31.05.13 15:28 Сейчас в теме
Выводи невидимую колонку с суммой и ее обсчитывай на клиенте.
3. IgoX 31.05.13 15:53 Сейчас в теме
извините не понял чем эта колонка будет отличается от той которая уже есть.
если данные на клиенте уже есть то почему их нельзя посчитать?
4. killitch 30 31.05.13 15:57 Сейчас в теме
Выделенные строки содержит массив выделенных строк. Каждая строка будет иметь, кроме всего прочего, колонку с суммой. Обход массива, сложение сумм, результат на форму. Уж к чему привязать пересчет разберетесь.
5. Pasha121212 2 31.05.13 17:49 Сейчас в теме
а почему проблема к серверу обратится?
6. beldieff 31.05.13 17:55 Сейчас в теме
(5) Pasha121212,
а почему проблема к серверу обратится?

А зачем на сервере делать то что можно сделать на клиенте?
7. IgoX 01.06.13 10:25 Сейчас в теме
(5) Pasha121212,
Представьте что человек 30 сидят по веб клиенту и еще на каких нибудь gprs модемах и выделяют строчки для подсчета - эта нагрузка на сеть, а у кого хорошая сеть например в локалке они просто будут мучить очень сильно БД и сервер приложений.

Извините но не пойму как добраться до данных(естественно без обращения к серверу).
Дебагом смотрю вот так этаформа.Элементы.ПользователиСписок.ВыделенныеСтроки - содержит массив в котором есть только индекс массива, значение элемента и ссылка на СправочникСсылка.Пользователи. Как добраться до колонок выделенных строк всеравно не пойму.
8. juntatalor 63 01.06.13 12:30 Сейчас в теме
(7) IgoX, а что у вас за список? Если поставить динамический список, тогда можно делать:

ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
Сумма = 0;
Для Каждого Строка Из ВыделенныеСтроки Цикл
Сумма = Сумма + Элементы.Список.ДанныеСтроки(Строка).Сумма;
КонецЦикла;
tata111; user1296291; kandellaster; Nimfetamin; igor-pn; vittany; Kyrandian; Xytras; akR00b; saver77; +10 Ответить
12. MarkMY 22.06.16 16:36 Сейчас в теме
(8) juntatalor, А когда снимаешь выделение строки, что бы сумма отнималась. Как посоветуете сделать, ведь событие ПриАктивации уже произошло
13. Boneman 301 22.06.16 17:00 Сейчас в теме
(12) MarkMY, не знаю, я делал в другом событии "ПриАктивацииЯчейки", но в принципе то-же самое. Все пересчитывает, когда выделение снимаешь, то кликается на другую ячейку, и алгоритм заново пересчитывает сумму выделенных. Т.е. не нужно ничего отнимать, нужно просто еще раз сумму выделенных строк пересчитать
9. IgoX 01.06.13 14:27 Сейчас в теме
Большое спасибо, то что надо!
10. chmv 27.04.16 11:59 Сейчас в теме
11. Fox-trot 163 27.04.16 12:04 Сейчас в теме
(10) chmv, не кричи, смотри событие ПриАктивацииСтроки
14. acanta 26.07.18 14:05 Сейчас в теме
В форме списка регистра сведений в массиве выделенных строк нет ресурсов.
15. DarkUser 26.07.18 14:44 Сейчас в теме
(14) Там идентификатор строки. Можно сделать как то так:

// Получим список выделенных строк
МассивНомеровСтрок = Элементы.НаименованиеНашейТаблицы.ВыделенныеСтроки;
Сумма = 0;
	
// Обойдем строки и посчитаем сумму
Для Каждого СтрокаМассива Из МассивНомеровСтрок Цикл	
	СтрокаТаблицы = НаименованиеНашейТаблицы.НайтиПоИдентификатору(СтрокаМассива);
	Сумма = Сумма + СтрокаТаблицы.Сумма;		
КонецЦикла
Показать
16. Evgeniia_S 20.12.21 16:36 Сейчас в теме
У меня почему-то дважды попадает в событие ПриАктивизацииСтроки, первый раз с корректным количеством в ВыделенныеСтроки, второй раз там одна позиция, выделение при этом остается.
17. Evgeniia_S 20.12.21 17:21 Сейчас в теме
(16) Сама себе отвечу. Причина сбрасывания корректного количества выделенных строк в событии ПриАктивизацииСтроки была в том, что я меняла заголовок декорации на форме. Убрала изменение декорации - всё стало корректно.
18. Serg2000mr 618 26.08.22 10:30 Сейчас в теме
(17) Если использовать ПриАктивизацииСтроки, то вы не поймаете Ctrl-A от пользователя. Мой вариант такой:


&НаКлиенте
Перем мКоличествоВыделенныхСтрок;

&НаКлиенте
Процедура ПриОткрытии(Отказ) 
	
	мКоличествоВыделенныхСтрок = 1; 
	ПодключитьОбработчикОжидания("ПроверитьВыделениеСтрок", 0.5, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьВыделениеСтрок() 
	
	КоличествоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество();
	
	Если КоличествоВыделенныхСтрок <> мКоличествоВыделенныхСтрок Тогда
		ПересчитатьИтоги();
		мКоличествоВыделенныхСтрок = КоличествоВыделенныхСтрок;
	КонецЕсли;	
	
	ПодключитьОбработчикОжидания("ПроверитьВыделениеСтрок", 0.5, Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ПересчитатьИтоги() 
	
	КоличествоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество();
	
	СуммаЗаказовИтог = 0;

	Если Элементы.Список.ТекущиеДанные = Неопределено Или КоличествоВыделенныхСтрок <= 1 Тогда
		Возврат;
	КонецЕсли;	
	
	ОбщаяСумма = 0;
	
	Для каждого выбЗаказ Из Элементы.Список.ВыделенныеСтроки Цикл
		Если ТипЗнч(выбЗаказ) <> Тип("ДокументСсылка.Заказ") Тогда  //пользователь может добавить группировку по колонке
			Продолжить;
		КонецЕсли;
		
		Данные = Элементы.Список.ДанныеСтроки(выбЗаказ);
		
		ОбщаяСумма = ОбщаяСумма + Данные.Сумма;
	КонецЦикла;
	
	СуммаЗаказовИтог = ОбщаяСумма;
	
КонецПроцедуры
Показать


СуммаЗаказовИтог - реквизит формы. У нужной колонки списка свойство ПутьКДаннымПодвала = СуммаЗаказовИтог
JinAir7460; +1 Ответить
19. user1940018 08.11.23 16:13 Сейчас в теме
Спасибо, помогли
(18)
Serg2000mr; +1 Ответить
21. JinAir7460 30.11.23 08:36 Сейчас в теме
(18)
(17) Если использовать ПриАктивизацииСтроки, то вы не поймаете Ctrl-A от пользователя. Мой вариант такой:

сделано классно, но выходит что при открытии формы условие не сработает и если будешь поочередно щёлкать по строкам тоже не сработает так как количество выделенных строк должно отличаться.
но всё равно спасибо
22. Serg2000mr 618 30.11.23 09:17 Сейчас в теме
(21) При открытии формы выделена одна строка, расчет выделенных строк не нужен. То же самое и при выделении поочередно разных строк.
20. triton34 09.11.23 09:06 Сейчас в теме
Если дорабатываете типовую конфигурацию (ут, ерп), то советую посмотреть как сделано у разработчиков.
Оставьте свое сообщение

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