Посчитать сумму выделенных строк в форме списка
По теме из базы знаний
- Интеграция сценарного тестирования в процесс разработки
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- Модель состояния для MVC
- Самые используемые методы БСП 3.1.9
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) Pasha121212,
Представьте что человек 30 сидят по веб клиенту и еще на каких нибудь gprs модемах и выделяют строчки для подсчета - эта нагрузка на сеть, а у кого хорошая сеть например в локалке они просто будут мучить очень сильно БД и сервер приложений.
Извините но не пойму как добраться до данных(естественно без обращения к серверу).
Дебагом смотрю вот так этаформа.Элементы.ПользователиСписок.ВыделенныеСтроки - содержит массив в котором есть только индекс массива, значение элемента и ссылка на СправочникСсылка.Пользователи. Как добраться до колонок выделенных строк всеравно не пойму.
Представьте что человек 30 сидят по веб клиенту и еще на каких нибудь gprs модемах и выделяют строчки для подсчета - эта нагрузка на сеть, а у кого хорошая сеть например в локалке они просто будут мучить очень сильно БД и сервер приложений.
Извините но не пойму как добраться до данных(естественно без обращения к серверу).
Дебагом смотрю вот так этаформа.Элементы.ПользователиСписок.ВыделенныеСтроки - содержит массив в котором есть только индекс массива, значение элемента и ссылка на СправочникСсылка.Пользователи. Как добраться до колонок выделенных строк всеравно не пойму.
(7) IgoX, а что у вас за список? Если поставить динамический список, тогда можно делать:
ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
Сумма = 0;
Для Каждого Строка Из ВыделенныеСтроки Цикл
Сумма = Сумма + Элементы.Список.ДанныеСтроки(Строка).Сумма;
КонецЦикла;
ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
Сумма = 0;
Для Каждого Строка Из ВыделенныеСтроки Цикл
Сумма = Сумма + Элементы.Список.ДанныеСтроки(Строка).Сумма;
КонецЦикла;
(12) MarkMY, не знаю, я делал в другом событии "ПриАктивацииЯчейки", но в принципе то-же самое. Все пересчитывает, когда выделение снимаешь, то кликается на другую ячейку, и алгоритм заново пересчитывает сумму выделенных. Т.е. не нужно ничего отнимать, нужно просто еще раз сумму выделенных строк пересчитать
(14) Там идентификатор строки. Можно сделать как то так:
// Получим список выделенных строк
МассивНомеровСтрок = Элементы.НаименованиеНашейТаблицы.ВыделенныеСтроки;
Сумма = 0;
// Обойдем строки и посчитаем сумму
Для Каждого СтрокаМассива Из МассивНомеровСтрок Цикл
СтрокаТаблицы = НаименованиеНашейТаблицы.НайтиПоИдентификатору(СтрокаМассива);
Сумма = Сумма + СтрокаТаблицы.Сумма;
КонецЦикла
Показать
(17) Если использовать ПриАктивизацииСтроки, то вы не поймаете Ctrl-A от пользователя. Мой вариант такой:
СуммаЗаказовИтог - реквизит формы. У нужной колонки списка свойство ПутьКДаннымПодвала = СуммаЗаказовИтог
&НаКлиенте
Перем мКоличествоВыделенныхСтрок;
&НаКлиенте
Процедура ПриОткрытии(Отказ)
мКоличествоВыделенныхСтрок = 1;
ПодключитьОбработчикОжидания("ПроверитьВыделениеСтрок", 0.5, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьВыделениеСтрок()
КоличествоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество();
Если КоличествоВыделенныхСтрок <> мКоличествоВыделенныхСтрок Тогда
ПересчитатьИтоги();
мКоличествоВыделенныхСтрок = КоличествоВыделенныхСтрок;
КонецЕсли;
ПодключитьОбработчикОжидания("ПроверитьВыделениеСтрок", 0.5, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьИтоги()
КоличествоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество();
СуммаЗаказовИтог = 0;
Если Элементы.Список.ТекущиеДанные = Неопределено Или КоличествоВыделенныхСтрок <= 1 Тогда
Возврат;
КонецЕсли;
ОбщаяСумма = 0;
Для каждого выбЗаказ Из Элементы.Список.ВыделенныеСтроки Цикл
Если ТипЗнч(выбЗаказ) <> Тип("ДокументСсылка.Заказ") Тогда //пользователь может добавить группировку по колонке
Продолжить;
КонецЕсли;
Данные = Элементы.Список.ДанныеСтроки(выбЗаказ);
ОбщаяСумма = ОбщаяСумма + Данные.Сумма;
КонецЦикла;
СуммаЗаказовИтог = ОбщаяСумма;
КонецПроцедуры
ПоказатьСуммаЗаказовИтог - реквизит формы. У нужной колонки списка свойство ПутьКДаннымПодвала = СуммаЗаказовИтог
(18)
сделано классно, но выходит что при открытии формы условие не сработает и если будешь поочередно щёлкать по строкам тоже не сработает так как количество выделенных строк должно отличаться.
но всё равно спасибо
(17) Если использовать ПриАктивизацииСтроки, то вы не поймаете Ctrl-A от пользователя. Мой вариант такой:
сделано классно, но выходит что при открытии формы условие не сработает и если будешь поочередно щёлкать по строкам тоже не сработает так как количество выделенных строк должно отличаться.
но всё равно спасибо
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот