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

28.05.18

Разработка - Работа с интерфейсом

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

Итак, мне необходимо вставить итог по колонке СуммаКОплате в динамическом списке формы списка журнала документов. Для этого в модуле формы списка журнала документов создаем новую процедуру, я назвал ее РассчитатьИтоги(), и вставляем в неё такой код:

Процедура РассчитатьИтоги()
    Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    ЭтотОбъект.ЭтаФорма.Элементы.СуммаКОплате.ТекстПодвала =  "Итого: " + Формат(Результат.Итог("СуммаКОплате"),"ЧДЦ=2; ЧН=-");
КонецПроцедуры

Затем делаем вставку вызова этой процедуры в любом обработчике событий, например СписокПриАктивизацииСтроки()

На этом всё, должно работать. Проверялась на релизах 8.3.10.2667, 8.3.11.2899.

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

См. также

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62998    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18866    26    6    

41

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10239    7    7    

10

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    16885    mrXoxot    43    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    7421    smielka    37    

100

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    14825    919    elcoan    47    

117

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    11923    162    acces969    31    

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

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

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


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

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

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

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

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

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

Работает.
ketr; stig812; Famza; wowik; Enziger; +5 Ответить
22. nickperel 5 20.07.22 17:48 Сейчас в теме
(10)
Все прекрасно работает. только присоединенный обработчик дергается как паралитик.
Можно так все переделать:
Если в списке с итогами, например, документы в их форме:

1. в доке, в ПослеЗаписи - Оповестить("ОбновитьСписок",,Объект.Ссылка);
2. в форме, где список
в ОбработкаОповещения
Если ИмяСобытия = "ОбновитьСписок" Тогда
СписокРассчитатьИтоги();
Элементы.Список.Обновить();
КонецЕсли;
Все это на клиенте

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

И как обойти? Конечно же работа на тонком клиенте, ибо облачно вокруг.
16. CXY 398 25.01.19 16:45 Сейчас в теме
(15) Процедура РассчитатьИтоги должна выполняться на сервере, т.е. перед ней должна стоять строка &НаСервере. А вот вызвать эту процедуру можно из Вашей процедуры, которая априори должна выполняться на клиенте.
insurgut; +1 Ответить
17. deutsch2008 28.08.19 16:29 Сейчас в теме
Было бы не плохо если отображало итоги по выделенным строкам :-)
Ставлю +
18. Kaval88 174 11.02.22 09:47 Сейчас в теме
Не работает для колонок, добавленных в расширении. Пока не нашел в чем проблема.
19. Kaval88 174 11.02.22 10:15 Сейчас в теме
(18) Поправка, проверено работает. Был заменен запрос списка.
20. Fristayla 05.03.22 15:48 Сейчас в теме
А другие более гуманные способы вывода итогов есть?
Shteiman; +1 Ответить
21. ILNIK 34 26.05.22 17:43 Сейчас в теме
До сих пор нет нормального решения от разработчиков 1с даже в новых версиях платформы?
Оставьте свое сообщение