Добавляем подвал в ЭлементыФормы, и вот примерный текст обработчика "ПриПолученииДанных()" списка документов:
Запрос = Новый Запрос();
ТекстОтбора = "";
Список = ДокументСписок;
ш = 0;
Для Каждого ЭлементНастройкиОтбора Из ЭлементыФормы.Список.НастройкаОтбора Цикл
Если Список.Отбор[ЭлементНастройкиОтбора.Имя].Использование Тогда
ВидСравненияЭлементаОтбора = Список.Отбор[ЭлементНастройкиОтбора.Имя].ВидСравнения;
ш = ш + 1;
Если ВидСравненияЭлементаОтбора = ВидСравнения.Больше Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " > &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.БольшеИлиРавно Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " >= &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.ВИерархии Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " В ИЕРАРХИИ(&ЗначениеПараметра"+ш+")";
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.ВСписке Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " В (&ЗначениеПараметра"+ш+")";
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.ВСпискеПоИерархии Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " В ИЕРАРХИИ(&ЗначениеПараметра"+ш+")";
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.Интервал Тогда
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].ЗначениеС);
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " > &ЗначениеПараметра"+ш; ш = ш + 1;
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " < &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].ЗначениеПо);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.ИнтервалВключаяГраницы Тогда
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].ЗначениеС);
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " >= &ЗначениеПараметра"+ш; ш = ш + 1;
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " <= &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].ЗначениеПо);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.ИнтервалВключаяНачало Тогда
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].ЗначениеС);
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " >= &ЗначениеПараметра"+ш; ш = ш + 1;
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " < &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].ЗначениеПо);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.ИнтервалВключаяОкончание Тогда
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].ЗначениеС);
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " > &ЗначениеПараметра"+ш; ш = ш + 1;
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " <= &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].ЗначениеПо);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.Меньше Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " < &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.МеньшеИлиРавно Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " <= &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.НеВИерархии Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И (НЕ ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " В ИЕРАРХИИ(&ЗначениеПараметра"+ш+"))";
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.НеВСписке Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И (НЕ ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " В (&ЗначениеПараметра"+ш+"))";
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.НеВСпискеПоИерархии Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И (НЕ ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " В ИЕРАРХИИ(&ЗначениеПараметра"+ш+"))";
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.НеРавно Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " <> &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.НеСодержит Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И (НЕ ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " ПОДОБНО &ЗначениеПараметра"+ш+")";
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, "%" + Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение + "%");
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.Равно Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " = &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение);
ИначеЕсли ВидСравненияЭлементаОтбора = ВидСравнения.Содержит Тогда
ТекстОтбора = ТекстОтбора + Символы.ПС + " И ТаблицаСписка." + ЭлементНастройкиОтбора.Имя + " ПОДОБНО &ЗначениеПараметра"+ш;
Запрос.УстановитьПараметр("ЗначениеПараметра"+ш, "%" + Список.Отбор[ЭлементНастройкиОтбора.Имя].Значение + "%");
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ТекстОтбора <> "" Тогда
ТекстОтбора = "ГДЕ" + Символы.ПС + " " + Сред(ТекстОтбора, 8);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Сумма(СуммаДокумента) КАК Сумма
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ТаблицаСписка
|" + ТекстОтбора;
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЭлементыФормы.Список.Колонки.СуммаДокумента.ТекстПодвала = Формат(Выборка.Сумма, "ЧЦ=15; ЧДЦ=2");
Иначе
ЭлементыФормы.Список.Колонки.СуммаДокумента.ТекстПодвала = 0;
КонецЕсли;
Далее меняем в запросе имя таблицы Документ.ПриходныйКассовыйОрдер
на нужное вам и вуаля! Имеем сумму документов, которая вычисляется мнгновенно, с любым отбором.
По материалам http://www.kb.mista.ru/article.php?id=471