0. CXY 318 28.05.18 11:57 Сейчас в теме

Итоги в динамическом списке

Предлагаю вариант, как быстро сделать итоги в динамическом списке, например в форме списка журнала документов.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. ifal 266 28.05.18 17:13 Сейчас в теме
2. CXY 318 28.05.18 17:19 Сейчас в теме
(1) Здесь намного короче
jONES1979; +1 Ответить
3. DarkUser 28.05.18 18:44 Сейчас в теме
Но лучше так не делать, хотя заказчику это бывает трудно объяснить. Правда потом он сам всё понимает, когда перелистывание страниц дин.списка превращается в диафильм.
ЧерныйКот; Plotks2017; Orlando Skibraves; AlexGroovy; ivanov660; olbu; t278; +7 Ответить
4. CXY 318 29.05.18 05:16 Сейчас в теме
(3) Далее можно этот алгоритм совершенствовать. Если это нужно.
5. ildary 29.05.18 10:03 Сейчас в теме
(4) а если сделать не в СписокПриАктивизацииСтроки(), а через ПодключитьОбработчикОжидания?
6. CXY 318 29.05.18 11:10 Сейчас в теме
(5) Не пробовал. Скорее всего тоже можно.
7. Бубузяка 62 30.05.18 09:42 Сейчас в теме
(6) Если у вас есть доступ к ИТС, тогда в этой статье вы получите объяснение почему в вашем случае надо использовать "Подключить обработчик ожидания".
8. CXY 318 30.05.18 10:43 Сейчас в теме
(7) Я понимаю, о чём Вы. Более расширенное представление об этом в https://infostart.ru/public/568012/ , где можно и подключить обработчик ожидания, и ограничить используемые в обработке ресурсы в структуре СКД. Но я уже ранее сказал, дальше можно совершенствовать алгоритм...
9. Glebis 11 30.05.18 11:09 Сейчас в теме
(8)
ограничить используемые в обработке ресурсы в структуре СКД
Имеется ввиду в убрать из Схемы все поля, по которым не нужно получать итог?
10. CXY 318 30.05.18 12:40 Сейчас в теме
И это тоже. Если использовать процедуру ПодключитьОбработчикОжидания, тогда надо сделать так:

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

&НаКлиенте
Процедура ПриИзменении()
РассчитатьИтоги();
КонецПроцедуры


&НаСервере
Процедура РассчитатьИтоги()

Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема,
Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);

ПроцессорВывода = Новый
ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);

ЭтотОбъект.ЭтаФорма.Элементы.СуммаКОплате.ТекстПодвала = "Итого: " + Формат(Результат.Итог("СуммаКОплате"),"ЧДЦ=2; ЧН=-");

КонецПроцедуры

Работает.
12. nikita0832 173 06.06.18 15:28 Сейчас в теме
Ещё промежуточные итоги можно в запросе получить. Не сильно бьет по производительности и проблем с перемоткой не будет. А общие итоги лучше выводить как Вы написали, но есть у дин списка "путь к данным подвала"
13. par_62 12.06.18 19:50 Сейчас в теме
По моему для системы лучше сделать на форме кнопку или пункт меню обновить итоги и пусть пользователь сам их получает. А то такие вызовы даже с промежутком в 1 сек да еще и с тасканием формы на сервер... Слишком затратно
14. CXY 318 13.06.18 17:31 Сейчас в теме
(13) Разработчик сам решает, каким событием воспользоваться. Моя задача была показать путь быстрого и правильного решения, с использованием СКД. Одними запросами здесь проблему не решить, потому что пользователь может использовать фильтры, поиск и так далее... Ну а частота пересчета итогов и на какое событие повесить этот пересчет - это на усмотрение разработчика, вариантов множество.
15. insurgut 195 24.01.19 19:03 Сейчас в теме
{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(46)}: В обработчике ТаблицаОплатПриАктивизацииСтрокиПосле используется вызов контекстного серверного метода формы

И как обойти? Конечно же работа на тонком клиенте, ибо облачно вокруг.
16. CXY 318 25.01.19 16:45 Сейчас в теме
(15) Процедура РассчитатьИтоги должна выполняться на сервере, т.е. перед ней должна стоять строка &НаСервере. А вот вызвать эту процедуру можно из Вашей процедуры, которая априори должна выполняться на клиенте.
insurgut; +1 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Специалист техподдержки 1С
Иркутск
зарплата от 28 000 руб. до 34 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 48 000 руб. до 96 000 руб.
По совместительству

Программист 1С
Ставрополь
зарплата от 40 000 руб. до 60 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист 1С
Благовещенск (Амурская область)
зарплата от 40 000 руб. до 70 000 руб.
Полный день