leshik писал(а) 14. Ноября 2008 :: 08:54:Это самый долгий запрос?
Касательно того что по дням 1С-ка обрабатывает - это связано с получением в запросе реквизитов которые не содержаться в регистре.
Приведи сюда текст запроса в отчёте.
Запрос типовый! Складываеться всего кидать не буду куча кода просто...
Расшифровка = СоздатьОбъект("СписокЗначений");
Расшифровка.Установить("Отчет", "ВедомостьПоКонтрагентам");
// все настройки помещаем в список
Расшифровка.Установить("ДатаНачала", ДатаНачала);
Расшифровка.Установить("ДатаКонца", ДатаКонца);
Расшифровка.Установить("ВыбРазделитель1",ВыбРазделитель1);
Расшифровка.Установить("ВыбРазделитель2",ВыбРазделитель2);
Расшифровка.Установить("ВыбРазделитель3",ВыбРазделитель3);
Расшифровка.Установить("ВидРазделителя",ВидРазделителя);
Расшифровка.Установить("ВыбКонтрагент", ВыбКонтрагент);
Расшифровка.Установить("ВыбДоговор", ВыбДоговор);
Расшифровка.Установить("ПоОперациям", ПоОперациям);
Расшифровка.Установить("Просроченные", Просроченные);
Расшифровка.Установить("ПоГруппам", ПоГруппам);
Расшифровка.Установить("ВыбВидВалюты", ВыбВидВалюты);
Расшифровка.Установить("Долги", Долги.ТекущаяСтрока());
Расшифровка.Установить("Группировки", Группировки);
глПриСменеСтрокиТаблицыМФ(1,ТекСтрокаВТаблице,Контекст); // записываем изменения если они были
// запомним МФ только если он задан
Если глМножественныйФильтрЗадан(ТаблицаМФ) = 1 Тогда
Расшифровка.Установить("ТаблицаМФ", ТаблицаМФ);
КонецЕсли;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ДатаНачала по ДатаКонца;";
ДобПеремЗапроса(ТекстЗапроса,"Фирма", "Фирма");
ДобПеремЗапроса(ТекстЗапроса,"УпрАналитика","Фирма.УпрАналитика");
ДобПеремЗапроса(ТекстЗапроса,"ЮрЛицо", "Фирма.ЮрЛицо");
ДобПеремЗапроса(ТекстЗапроса,"Контрагент", "Договор.Владелец");
ЗначениеСвойства");
ДобПеремЗапроса(ТекстЗапроса,"Договор", "Договор");
ДобПеремЗапроса(ТекстЗапроса,"КодОперации", "КодОперации");
ТекстЗапроса = ТекстЗапроса +
"Функция НачОст = НачОст(Сумма);
|Функция Приход = Приход(Сумма);
|Функция Расход = Расход(Сумма);
|Функция КонОст = КонОст(Сумма);
|Функция НачОстВ = НачОст(СуммаВ);
|Функция ПриходВ = Приход(СуммаВ);
|Функция РасходВ = Расход(СуммаВ);
|Функция КонОстВ = КонОст(СуммаВ);
|Функция ВозвратОтПокупателя = Расход(Сумма)Когда (КодОперации = глКО.ВозвратОтПокупателя);
|Функция ВозвратПоставщику = Приход(Сумма)Когда (КодОперации = глКО.ВозвратПоставщику);
|Функция ВозвратОтПокупателяВ = Расход(СуммаВ)Когда( КодОперации = глКО.ВозвратОтПокупателя);
|Функция ВозвратПоставщикуВ = Приход(СуммаВ)Когда (КодОперации = глКО.ВозвратПоставщику);";
........ тут еще кучка кода......
ГДЕ,
Процедура ДобПеремЗапроса(ТекстЗапроса,НазвПерем,НазвПеремРег)
ТекстЗапроса = ТекстЗапроса + РазделительСтрок;
ВидОтчета = СписокВидовОтчетов.ТекущаяСтрока();
Если (ВидОтчета=1) Тогда // покупатели
ТекстЗапроса = ТекстЗапроса +
НазвПерем+" = Регистр.Покупатели."+НазвПеремРег+";";
КонецЕсли;
Если (ВидОтчета=2) Тогда // поставщики
ТекстЗапроса = ТекстЗапроса +
НазвПерем+" = Регистр.Поставщики."+НазвПеремРег+";";
КонецЕсли;
Если (ВидОтчета=3) Тогда // оба
ТекстЗапроса = ТекстЗапроса +
НазвПерем + "= Регистр.Покупатели."+НазвПеремРег+","+
"Регистр.Поставщики."+НазвПеремРег+";";
КонецЕсли;
КонецПроцедуры //ДобПеремЗапроса()