Запрос.Текст="ВЫБРАТЬ
| ПродажиТочекТовары.ДисконтКл КАК ДисконтКл,
| ПродажиТочекТовары.Сумма + ПродажиТочекТовары.Скидка КАК Сумма,
| НАЧАЛОПЕРИОДА(ПродажиТочекТовары.Ссылка.Дата, МЕСЯЦ) КАК Период,
| ПродажиТочекТовары.Время КАК Время
|ИЗ
| Документ.ПродажиТочек.Товары КАК ПродажиТочекТовары
|ГДЕ
| ПродажиТочекТовары.ДисконтКл <> ЗНАЧЕНИЕ(Справочник.ДисконтКлиенты.ПустаяСсылка)
| И ПродажиТочекТовары.Ссылка.Дата МЕЖДУ &ДатаС И &ДатаПо
| И ПродажиТочекТовары.Ссылка.Проведен = ИСТИНА
|
|УПОРЯДОЧИТЬ ПО
| ПродажиТочекТовары.ДисконтКл.КартНом
|ИТОГИ
| СУММА(Сумма),
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Время)
|ПО
| ОБЩИЕ,
| ДисконтКл,
| Период";
Таб=Новый ТабличныйДокумент;
Макет=ПолучитьМакет("ПоМес");
ОШап=Макет.ПолучитьОбласть("Шапка");
ОШЗ=Макет.ПолучитьОбласть("Шап|Заг");
ОШМ=Макет.ПолучитьОбласть("Шап|Мес");
ОСЗ=Макет.ПолучитьОбласть("Строка|Заг");
ОСМ=Макет.ПолучитьОбласть("Строка|Мес");
ОШап.Параметры.Заполнить(Новый Структура("ДатаС, ДатаПо", формат(ДатаС, "ДЛФ=Д"), формат(ДатаПо, "ДЛФ=Д")));
Таб.Вывести(ОШап);
ОСтр=Макет.ПолучитьОбласть("Строка");
ОДно=Макет.ПолучитьОбласть("Дно");
Таб.Вывести(ОШЗ);
ПериодВыб=Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период");
Пока ПериодВыб.Следующий() Цикл
ОШМ.Параметры.Мес=ПериодВыб.Период;
Таб.Присоединить(ОШМ);
КонецЦикла;
ПериодВыб.Сбросить();
ОбщВыб=Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Общие");
Кол=0;
Сум=0;
Пока ОбщВыб.Следующий() Цикл
ДискКлВыб=ОбщВыб.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ДисконтКл");
Пока ДискКлВыб.Следующий() Цикл
Состояние("Обрабатываю карту "+ДискКлВыб.ДисконтКл.КартНом);
ОСЗ.Параметры.Карт=ДискКлВыб.ДисконтКл.КартНом;
Таб.Вывести(ОСЗ);
Пока ПериодВыб.Следующий() Цикл
Кол=0;
Сум=0;
ОбработкаПрерыванияПользователя();
ДисВыб=ПериодВыб.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ДисконтКл");
Пока ДисВыб.НайтиСледующий(Новый Структура("ДисконтКл", ДискКлВыб.ДисконтКл)) Цикл
Кол=ДисВыб.Время;
Сум=ДисВыб.Сумма;
КонецЦикла;
ОСМ.Параметры.Заполнить(Новый Структура("Кол,Сум",Кол,Сум));
Таб.Присоединить(ОСМ);
КонецЦикла;
ПериодВыб.Сбросить();
КонецЦикла;
КонецЦикла;
В таком варианте код работает, но очень медленно. Кто может подсказать какие – то варианты по оптимизации.