для итогов перед началом прохода
//-----------------------------------------------
Процедура ДатаК()
Если ДатаК<ДатаН Тогдаbr> ДатаК=ДатаН;
ИначеЕсли ДатаК>ПолучитьДатуТА() Тогда
ДатаК=ПолучитьДатуТА();
КонецЕсли;
КонецПроцедуры
//-----------------------------------------------
Процедура Сформировать()
Запрос=СоздатьОбъект("Запрос");
ТекстЗапроса="
|Период с ДатаН по ДатаК;
|Контр = Регистр.Взаиморасчеты.Контрагент;
|Догов = Регистр.Взаиморасчеты.Договор;
|Сумма = Регистр.Взаиморасчеты.Сумма;
|Флаг = Регистр.Взаиморасчеты.ФлагДвижения;
|Функция СуммаНачОст = НачОст(Сумма);
|Функция СуммаПриходТов = Приход(Сумма) когда(Флаг=1);
|Функция СуммаРасходТов = Расход(Сумма) когда(Флаг=2);
|Функция СуммаРасходДен = Расход(Сумма) когда(Флаг=3);
|Функция СуммаПриходДен = Приход(Сумма) когда(Флаг=4);
|Функция СуммаКонОст = КонОст(Сумма);
|Группировка Контр упорядочить по Контр.Код;
|Группировка Догов;";
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Запрос не выполнен");
Возврат;
КонецЕсли;
Таб=СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
ИтНачОст=Запрос.СуммаНачОст;
ИтПрихТов=Запрос.СуммаПриходТов;
ИтРасхДен=Запрос.СуммаРасходДен;
ИтРасхТов=Запрос.СуммаРасходТов;
ИтПрихДен=Запрос.СуммаПриходДен;
ИтКонОст=Запрос.СуммаКонОст;
// для итогов перед началом прохода по группировкам получаем
// значения функций для всей выборки сразу
Таб.ВывестиСекцию("Шапка");
Пока Запрос.Группировка(1)=1 Цикл
Контра=Запрос.Контр;
НачОст=Запрос.СуммаНачОст;
ПрихТов=Запрос.СуммаПриходТов;
РасхДен=Запрос.СуммаРасходДен;
РасхТов=Запрос.СуммаРасходТов;
ПрихДен=Запрос.СуммаПриходДен;
Содержание Назад Вперед