Имя: Пароль:
1C
1C 7.7
v7: Обработка итогов на:.... зависает на долго
0 serpentt
 
20.06.22
09:14
Здравствуйте, база SQL. Запрос простой 1Совский(черный)

ПЕРИОД С НачДата По КонДата;
Фирма = Регистр.Покупатели.Фирма;
ДоговорВладелец = Регистр.Покупатели.Договор.Владелец;
я_ТипУчета = Регистр.Покупатели.я_ТипУчета;
Себестоимость = Регистр.Покупатели.Себестоимость;
СуммаВал = Регистр.Покупатели.СуммаВал;
Группировка Фирма;
Группировка ДоговорВладелец Без Групп;
Группировка я_ТипУчета;
Группировка Документ;
Функция НачОстСебестоимость = НачОст(Себестоимость);
Функция ПриходСебестоимость = Приход(Себестоимость);
Функция РасходСебестоимость = Расход(Себестоимость);
Функция КонОстСуммаВал = КонОст(СуммаВал);
Функция КонОстСебестоимость = КонОст(Себестоимость);
Условие (ДоговорВладелец = Фильтр1);
Условие (Фирма = Фильтр2);

Если строить запрос на даты с окрнчанием ТочкаАктуальности... то отчет строится быстро(поясняю)
ТА 20-06-22
Периоды НачДата = Любаядата и КонДата = ТА.... ВСЕ ок
но если делать запрос с ДатаКонца меньше ТА, то запрос уходит в долгое плавание и в строке состояния висит сообщение "Обработка итогов на: "

Куда подсмотреть? почему именно так происходит.
Прямые запросы на 1С++ строятся без проблем.
1 Builder
 
20.06.22
09:32
(0) Это норма :)
Итоги хранятся на определенный период, как правило месяц.
На остальные даты рассчитываются  = Начост + Приход - Расход.
Если регистр не закрыт или неправильно сделан или много движений - так и будет.
2 serpentt
 
20.06.22
09:35
(1) Спасибо, буду дальше разбираться.
3 Злопчинский
 
20.06.22
10:13
С учётом измерения я-типучета вангую что регистр таки не закрыт...
4 Харлампий Дымба
 
20.06.22
22:43
С учётом знака "равно" в условиях

Условие (ДоговорВладелец = Фильтр1);
Условие (Фирма = Фильтр2);

видно, что

Группировка Фирма;
Группировка ДоговорВладелец Без Групп;

явно лишнее. А это уже серьёзное ускорение.

Не большой знаток ОУ, но думаю, что КонОст(Себестоимость) можно в запросе не считать, так как всё-равно для Группировки "Документ" НачОст() и КонОст() не определены и их придётся считать вручную по приходу и расходу документа, а также начальному остатку от группировки я_ТипУчета. Так что тут можно уже в момент обхода итогов посчитать КонОст = Начост + Приход - Расход.
5 uno-group
 
21.06.22
10:51
Если дата = концу периода то тоже должно быстро считаться.
можно попробовать Фильтр1 перед выполением запроса обработать и загнать в фильтр2 список договоров по контрагенту.
Договор = Регистр.Покупатели.Договор;
и фильтр по договорам сделать
Основная теорема систематики: Новые системы плодят новые проблемы.