Долго выполняется запрос, база бухгалтерия 3.0 + Аренда

1. user973528 08.12.21 14:50 Сейчас в теме
Всем привет,подскажите пожалуйста можно ли убыстрить такой запрос? Выполняется очень долго даже для одного договора, до этого запрос работал в базе версии 2.0, выполняется быстро, перенес запрос на 3.0, запускаю в тонком клиенте, очень долго выполняется
Сам запрос находится в модуле объекта на сервере, заранее спасибо

	Запрос.Текст = 
	"ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	АР_ВзаиморасчетыПоАрендеОстатки.УслугаАренды КАК УслугаАренды,
	|	АР_ВзаиморасчетыПоАрендеОстатки.ОбъектАренды КАК ОбъектАренды,
	|	АР_ВзаиморасчетыПоАрендеОстатки.СчетНаАренду КАК СчетНаАренду,
	|	АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов КАК ДокументРасчетов,
	|	НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов.ОкончаниеПериода, МЕСЯЦ) КАК ПериодАренды,
	|	ВЫБОР
	|		КОГДА НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДатаОплаты, ДЕНЬ) = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.Период, ДЕНЬ)
	|		ИНАЧЕ НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДатаОплаты, ДЕНЬ)
	|	КОНЕЦ КАК ДатаРасчета,
	|	СУММА(АР_ВзаиморасчетыПоАрендеОстатки.СуммаВзаиморасчетовНачальныйОстаток) КАК Сумма,
	|	МАКСИМУМ(ВЫБОР
	|			КОГДА АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов ССЫЛКА Документ.АР_НачислениеАренднойПлаты
	|				ТОГДА ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов.ОкончаниеПериода, МЕСЯЦ), МЕСЯЦ, &КоличествоПериодов), ДЕНЬ, &СрокОплаты)
	|			ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
	|		КОНЕЦ) КАК СрокОплаты,
	|	АР_ВзаиморасчетыПоАрендеОстатки.СуммаРасход,
	|	АР_ВзаиморасчетыПоАрендеОстатки.СуммаВзаиморасчетовРасход КАК СуммаВалРасход
	|ПОМЕСТИТЬ ВТЗадолженность
	|ИЗ
	|	РегистрНакопления.АР_ВзаиморасчетыПоАренде.ОстаткиИОбороты(
	|			&НачалоПериодаНачисленияПени,
	|			&МоментНачисленияПени,
	|			Запись,
	|			,
	|			ДоговорКонтрагента = &ДоговорКонтрагента
	|				И НЕ Депозит
	|				И НЕ Пени) КАК АР_ВзаиморасчетыПоАрендеОстатки
	|ГДЕ
	|	АР_ВзаиморасчетыПоАрендеОстатки.СуммаВзаиморасчетовНачальныйОстаток > 0
	|
	|СГРУППИРОВАТЬ ПО
	|	АР_ВзаиморасчетыПоАрендеОстатки.ОбъектАренды,
	|	АР_ВзаиморасчетыПоАрендеОстатки.СчетНаАренду,
	|	АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов,
	|	АР_ВзаиморасчетыПоАрендеОстатки.УслугаАренды,
	|	НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов.ОкончаниеПериода, МЕСЯЦ),
	|	АР_ВзаиморасчетыПоАрендеОстатки.СуммаРасход,
	|	АР_ВзаиморасчетыПоАрендеОстатки.СуммаВзаиморасчетовРасход,
	|	ВЫБОР
	|		КОГДА НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДатаОплаты, ДЕНЬ) = ДАТАВРЕМЯ(1, 1, 1)
	|			ТОГДА НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.Период, ДЕНЬ)
	|		ИНАЧЕ НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДатаОплаты, ДЕНЬ)
	|	КОНЕЦ
	|;
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	Задолженность.УслугаАренды КАК УслугаАренды,
	|	Задолженность.ОбъектАренды КАК ОбъектАренды,
	|	Задолженность.СчетНаАренду КАК СчетНаАренду,
	|	Задолженность.ДокументРасчетов КАК ДокументРасчетов,
	|	Задолженность.ДатаРасчета КАК ДатаРасчета,
	|	Задолженность.Сумма КАК Сумма,
	|	Задолженность.СрокОплаты КАК СрокОплаты,
	|	ДанныеПроизводственногоКалендаряОграничитель.Дата КАК СрокОплатыСОтсрочкой,
	|	Задолженность.ПериодАренды,
	|	Задолженность.СуммаРасход,
	|	Задолженность.СуммаВалРасход
	|ПОМЕСТИТЬ ВТЗадолженность2
	|ИЗ
	|	ВТЗадолженность КАК Задолженность
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаряОграничитель
	|			ПО ДанныеПроизводственногоКалендаря.Дата <= ДанныеПроизводственногоКалендаряОграничитель.Дата
	|		ПО (ДанныеПроизводственногоКалендаря.Дата >= Задолженность.СрокОплаты)
	|			И (ДанныеПроизводственногоКалендаря.Дата <= Задолженность.ДатаРасчета)
	|
	|СГРУППИРОВАТЬ ПО
	|	Задолженность.ОбъектАренды,
	|	Задолженность.УслугаАренды,
	|	Задолженность.СчетНаАренду,
	|	Задолженность.ДокументРасчетов,
	|	Задолженность.ДатаРасчета,
	|	Задолженность.СрокОплаты,
	|	Задолженность.Сумма,
	|	ДанныеПроизводственногоКалендаряОграничитель.Дата,
	|	Задолженность.ПериодАренды,
	|	Задолженность.СуммаРасход,
	|	Задолженность.СуммаВалРасход
	|
	|ИМЕЮЩИЕ
	|	СУММА(ВЫБОР
	|			КОГДА Задолженность.СрокОплаты = ДанныеПроизводственногоКалендаряОграничитель.Дата
	|				ТОГДА 1
	|			КОГДА &УчитыватьТолькоРабочиеДниОтсрочки
	|				ТОГДА ВЫБОР
	|						КОГДА ДанныеПроизводственногоКалендаря.ВидДня В (&РабочийДень)
	|							ТОГДА 1
	|						ИНАЧЕ 0
	|					КОНЕЦ
	|			ИНАЧЕ 1
	|		КОНЕЦ) = &ДнейОтсрочки + 1
	|;
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ВложенныйЗапрос.УслугаАренды КАК УслугаАренды,
	|	ВложенныйЗапрос.ОбъектАренды КАК ОбъектАренды,
	|	ВложенныйЗапрос.СчетНаАренду КАК СчетНаАренду,
	|	ВложенныйЗапрос.ДокументРасчетов КАК ДокументРасчетов,
	|	ВложенныйЗапрос.ДатаРасчета,
	|	ВложенныйЗапрос.Сумма КАК Сумма,
	|	ВложенныйЗапрос.СрокОплаты КАК СрокОплаты,
	|	МИНИМУМ(ВложенныйЗапрос.СрокОплатыСОтсрочкой) КАК СрокОплатыСОтсрочкой,
	|	ВложенныйЗапрос.ПериодАренды,
	|	ВложенныйЗапрос.СуммаРасход,
	|	ВложенныйЗапрос.СуммаВалРасход
	|ПОМЕСТИТЬ ВТЗадолженность3
	|ИЗ
	|	ВТЗадолженность2 КАК ВложенныйЗапрос
	|
	|СГРУППИРОВАТЬ ПО
	|	ВложенныйЗапрос.СчетНаАренду,
	|	ВложенныйЗапрос.СрокОплаты,
	|	ВложенныйЗапрос.ОбъектАренды,
	|	ВложенныйЗапрос.УслугаАренды,
	|	ВложенныйЗапрос.ДокументРасчетов,
	|	ВложенныйЗапрос.ДатаРасчета,
	|	ВложенныйЗапрос.Сумма,
	|	ВложенныйЗапрос.ПериодАренды,
	|	ВложенныйЗапрос.СуммаРасход,
	|	ВложенныйЗапрос.СуммаВалРасход
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ РАЗЛИЧНЫЕ
	|	ВложенныйЗапрос.УслугаАренды КАК Номенклатура,
	|	ВложенныйЗапрос.ОбъектАренды,
	|	ВложенныйЗапрос.СчетНаАренду,
	|	1 КАК Количество,
	|	1 КАК Коэффициент,
	|   """" КАК Контрагент,
	|   """" КАК ДоговорКонтрагента,
	|   """" КАК СчетРасчетов,
	|   """" КАК СуммаОтсрочки,
	|	ВложенныйЗапрос.Сумма КАК ДолгЗаПериод,
	|	ВложенныйЗапрос.СрокОплатыСОтсрочкой КАК СрокОплаты,
	|	ВложенныйЗапрос.ДокументРасчетов КАК ДокументРасчетов,
	|	ВложенныйЗапрос.ДатаРасчета КАК ДатаРасчета,
	|	МИНИМУМ(ДанныеПроизводственногоКалендаря.Дата) КАК НачДатаРасчета,
	|	СУММА(ВЫБОР
	|			КОГДА &УчитыватьТолькоРабочиеДниПросрочки
	|				ТОГДА ВЫБОР
	|						КОГДА ДанныеПроизводственногоКалендаря.ВидДня В (&РабочийДень)
	|							ТОГДА 1
	|						ИНАЧЕ 0
	|					КОНЕЦ
	|			ИНАЧЕ 1
	|		КОНЕЦ) КАК КоличествоДнейПросрочки,
	|	ВложенныйЗапрос.УслугаАренды.УдалитьСтавкаНДС КАК СтавкаНДС,
	|	ВЫБОР
	|		КОГДА &СпособНачисленияПропорциональноСуммеСроку
	|			ТОГДА СУММА(ВЫБОР
	|						КОГДА &УчитыватьТолькоРабочиеДниПросрочки
	|							ТОГДА ВЫБОР
	|									КОГДА ДанныеПроизводственногоКалендаря.ВидДня В (&РабочийДень)
	|										ТОГДА 1
	|									ИНАЧЕ 0
	|								КОНЕЦ
	|						ИНАЧЕ 1
	|					КОНЕЦ) * &СтавкаПени / 100 * ВложенныйЗапрос.Сумма
	|		ИНАЧЕ &СтавкаПени
	|	КОНЕЦ КАК Цена,
	|	ВЫБОР
	|		КОГДА &СпособНачисленияПропорциональноСуммеСроку
	|			ТОГДА СУММА(ВЫБОР
	|						КОГДА &УчитыватьТолькоРабочиеДниПросрочки
	|							ТОГДА ВЫБОР
	|									КОГДА ДанныеПроизводственногоКалендаря.ВидДня В (&РабочийДень)
	|										ТОГДА 1
	|									ИНАЧЕ 0
	|								КОНЕЦ
	|						ИНАЧЕ 1
	|					КОНЕЦ) * &СтавкаПени / 100 * ВложенныйЗапрос.Сумма
	|		ИНАЧЕ &СтавкаПени
	|	КОНЕЦ КАК Сумма,
	|	ВложенныйЗапрос.ПериодАренды,
	|	ВложенныйЗапрос.СуммаРасход,
	|	ВложенныйЗапрос.СуммаВалРасход
	|ИЗ
	|	ВТЗадолженность3 КАК ВложенныйЗапрос
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
	|		ПО (ВЫБОР
	|				КОГДА ВложенныйЗапрос.СрокОплатыСОтсрочкой < &НачалоПериодаНачисленияПени
	|					ТОГДА ВЫБОР
	|							КОГДА ВложенныйЗапрос.ДатаРасчета = &ДатаНачисленияПени
	|								ТОГДА ДанныеПроизводственногоКалендаря.Дата >= &НачалоПериодаНачисленияПени
	|										И ДанныеПроизводственногоКалендаря.Дата <= ВложенныйЗапрос.ДатаРасчета
	|							ИНАЧЕ ДанныеПроизводственногоКалендаря.Дата >= &НачалоПериодаНачисленияПени
	|									И ДанныеПроизводственногоКалендаря.Дата < ВложенныйЗапрос.ДатаРасчета
	|						КОНЕЦ
	|				ИНАЧЕ ВЫБОР
	|						КОГДА ВложенныйЗапрос.ДатаРасчета = &ДатаНачисленияПени
	|							ТОГДА ДанныеПроизводственногоКалендаря.Дата > ВложенныйЗапрос.СрокОплатыСОтсрочкой
	|									И ДанныеПроизводственногоКалендаря.Дата <= ВложенныйЗапрос.ДатаРасчета
	|						ИНАЧЕ ДанныеПроизводственногоКалендаря.Дата > ВложенныйЗапрос.СрокОплатыСОтсрочкой
	|								И ДанныеПроизводственногоКалендаря.Дата <= ВложенныйЗапрос.ДатаРасчета
	|					КОНЕЦ
	|			КОНЕЦ)
	|
	|СГРУППИРОВАТЬ ПО
	|	ВложенныйЗапрос.СчетНаАренду,
	|	ВложенныйЗапрос.ОбъектАренды,
	|	ВложенныйЗапрос.УслугаАренды,
	|	ВложенныйЗапрос.Сумма,
	|	ВложенныйЗапрос.СрокОплатыСОтсрочкой,
	|	ВложенныйЗапрос.ДокументРасчетов,
	|	ВложенныйЗапрос.ДатаРасчета,
	|	ВложенныйЗапрос.УслугаАренды.УдалитьСтавкаНДС,
	|	ВложенныйЗапрос.ПериодАренды,
	|	ВложенныйЗапрос.СуммаРасход,
	|	ВложенныйЗапрос.СуммаВалРасход
	|
	|ИМЕЮЩИЕ
	|	СУММА(ВЫБОР
	|			КОГДА &УчитыватьТолькоРабочиеДниПросрочки
	|				ТОГДА ВЫБОР
	|						КОГДА ДанныеПроизводственногоКалендаря.ВидДня В (&РабочийДень)
	|							ТОГДА 1
	|						ИНАЧЕ 0
	|					КОНЕЦ
	|			ИНАЧЕ 1
	|		КОНЕЦ) > 0
	|
	|УПОРЯДОЧИТЬ ПО
	|	ДокументРасчетов Возр,
	|	ДатаРасчета";

	СписокРабочихДней = Новый СписокЗначений;
	СписокРабочихДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий);
	СписокРабочихДней.Добавить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный);
	Запрос.УстановитьПараметр("РабочийДень"						  , СписокРабочихДней);
	Запрос.УстановитьПараметр("ДнейОтсрочки"					  ,ПараметрыНачисленияПени.ОтсрочкаПоОплате);
	Запрос.УстановитьПараметр("УчитыватьТолькоРабочиеДниПросрочки",ПараметрыНачисленияПени.УчитыватьТолькоРабочиеДниПросрочки);
	Запрос.УстановитьПараметр("УчитыватьТолькоРабочиеДниОтсрочки" ,ПараметрыНачисленияПени.УчитыватьТолькоРабочиеДниОтсрочки);
	Запрос.УстановитьПараметр("ПустойСчетНаАренду"				  ,Документы.АР_СчетНаАренду.ПустаяСсылка());
	Запрос.УстановитьПараметр("ДатаНачисленияПени"				  , НачалоДня(МоментВремени));
	Запрос.УстановитьПараметр("МоментНачисленияПени"			  , НачалоДня(МоментВремени + 60*60*24));
	Запрос.УстановитьПараметр("СрокОплаты"						  , ?(ПараметрыНачисленияПени.СрокОплаты = 0, 0, ПараметрыНачисленияПени.СрокОплаты - 1));
	Запрос.УстановитьПараметр("ДоговорКонтрагента"				  ,ДоговорКонтрагента);
	Запрос.УстановитьПараметр("СпособНачисленияПропорциональноСуммеСроку",ПараметрыНачисленияПени.СпособНачисленияПени = Перечисления.АР_СпособыНачисленияПени.ПропорциональноСуммеСроку);
	Запрос.УстановитьПараметр("СтавкаПени",ПараметрыНачисленияПени.СтавкаПени);
	Запрос.УстановитьПараметр("КоличествоПериодов", ПараметрыНачисленияПени.МесяцСрокаОплаты);
	Запрос.УстановитьПараметр("НачалоПериодаНачисленияПени", ДатаНачалаРасчета);
	
	ДанныеПоНачислениям = Запрос.Выполнить().Выгрузить();
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. homer_ 78 08.12.21 14:59 Сейчас в теме
хотя бы напиши в какой ВТ тормозит.
3. acces969 343 08.12.21 14:59 Сейчас в теме
Медленно выполняется из за того, что
РегистрНакопления.АР_ВзаиморасчетыПоАренде.ОстаткиИОбороты(
на самом деле идет выборка детальных записей.
Потом регистр сведений, тоже запрос детальных записей, но это уже мелочи. Создавайте менеджер временных таблиц, разбивайте пакет, выполняя каждый запрос отдельно - увидите, что колом встает самый первый.
4. acces969 343 08.12.21 15:01 Сейчас в теме
(3) + Не используйте левое соединение тогда, когда его можно избежать (например, внутренним соединением или объединением). Тоже значительно проседает время, когда строк в таблицах очень много.
5. user973528 08.12.21 15:01 Сейчас в теме
(4) В первой таблице получается 2 строки выводит, а тормозит как я понял при сравнении с календарем
6. homer_ 78 08.12.21 15:06 Сейчас в теме
Посмотреть Производственные календари (Справочники). Одна там запись или ...
7. user973528 08.12.21 15:12 Сейчас в теме
(6) Одна запись, календарь РФ. В регистре сведений данных производственного календаря много записей, каждый день описан с признаком рабочий или праздничный
8. homer_ 78 08.12.21 15:14 Сейчас в теме
сколько записей в РегистрСведений.ДанныеПроизводственногоКалендаря
9. user973528 08.12.21 15:15 Сейчас в теме
(8) Много, начиная с 2001 год каждый день
12. homer_ 78 08.12.21 15:27 Сейчас в теме
(9) посчитай и скажи сколько.
13. user973528 08.12.21 15:28 Сейчас в теме
(12)
  "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    АР_ВзаиморасчетыПоАрендеОстатки.УслугаАренды КАК УслугаАренды,
    |    АР_ВзаиморасчетыПоАрендеОстатки.ОбъектАренды КАК ОбъектАренды,
    |    АР_ВзаиморасчетыПоАрендеОстатки.СчетНаАренду КАК СчетНаАренду,
    |    АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов КАК ДокументРасчетов,
    |    НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов.ОкончаниеПериода, МЕСЯЦ) КАК ПериодАренды,
    |    ВЫБОР
    |        КОГДА НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДатаОплаты, ДЕНЬ) = ДАТАВРЕМЯ(1, 1, 1)
    |            ТОГДА НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.Период, ДЕНЬ)
    |        ИНАЧЕ НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДатаОплаты, ДЕНЬ)
    |    КОНЕЦ КАК ДатаРасчета,
    |    СУММА(АР_ВзаиморасчетыПоАрендеОстатки.СуммаВзаиморасчетовНачальныйОстаток) КАК Сумма,
    |    МАКСИМУМ(ВЫБОР
    |            КОГДА АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов ССЫЛКА Документ.АР_НачислениеАренднойПлаты
    |                ТОГДА ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов.ОкончаниеПериода, МЕСЯЦ), МЕСЯЦ, &КоличествоПериодов), ДЕНЬ, &СрокОплаты)
    |            ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
    |        КОНЕЦ) КАК СрокОплаты,
    |    АР_ВзаиморасчетыПоАрендеОстатки.СуммаРасход,
    |    АР_ВзаиморасчетыПоАрендеОстатки.СуммаВзаиморасчетовРасход КАК СуммаВалРасход
    |ПОМЕСТИТЬ ВТЗадолженность
    |ИЗ
    |    РегистрНакопления.АР_ВзаиморасчетыПоАренде.ОстаткиИОбороты(
    |            &НачалоПериодаНачисленияПени,
    |            &МоментНачисленияПени,
    |            Запись,
    |            ,
    |            ДоговорКонтрагента = &ДоговорКонтрагента
    |                И НЕ Депозит
    |                И НЕ Пени) КАК АР_ВзаиморасчетыПоАрендеОстатки
    |ГДЕ
    |    АР_ВзаиморасчетыПоАрендеОстатки.СуммаВзаиморасчетовНачальныйОстаток > 0
    |
    |СГРУППИРОВАТЬ ПО
    |    АР_ВзаиморасчетыПоАрендеОстатки.ОбъектАренды,
    |    АР_ВзаиморасчетыПоАрендеОстатки.СчетНаАренду,
    |    АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов,
    |    АР_ВзаиморасчетыПоАрендеОстатки.УслугаАренды,
    |    НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДокументРасчетов.ОкончаниеПериода, МЕСЯЦ),
    |    АР_ВзаиморасчетыПоАрендеОстатки.СуммаРасход,
    |    АР_ВзаиморасчетыПоАрендеОстатки.СуммаВзаиморасчетовРасход,
    |    ВЫБОР
    |        КОГДА НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДатаОплаты, ДЕНЬ) = ДАТАВРЕМЯ(1, 1, 1)
    |            ТОГДА НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.Период, ДЕНЬ)
    |        ИНАЧЕ НАЧАЛОПЕРИОДА(АР_ВзаиморасчетыПоАрендеОстатки.ДатаОплаты, ДЕНЬ)
    |    КОНЕЦ
    |;
    |////////////////////////////////////////////////////////////­­////////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    Задолженность.УслугаАренды КАК УслугаАренды,
    |    Задолженность.ОбъектАренды КАК ОбъектАренды,
    |    Задолженность.СчетНаАренду КАК СчетНаАренду,
    |    Задолженность.ДокументРасчетов КАК ДокументРасчетов,
    |    Задолженность.ДатаРасчета КАК ДатаРасчета,
    |    Задолженность.Сумма КАК Сумма,
    |    Задолженность.СрокОплаты КАК СрокОплаты,
    |    ДанныеПроизводственногоКалендаряОграничитель.Дата КАК СрокОплатыСОтсрочкой,
    |    Задолженность.ПериодАренды,
    |    Задолженность.СуммаРасход,
    |    Задолженность.СуммаВалРасход
    |ПОМЕСТИТЬ ВТЗадолженность2
    |ИЗ
    |    ВТЗадолженность КАК Задолженность
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаряОграничитель
    |            ПО ДанныеПроизводственногоКалендаря.Дата <= ДанныеПроизводственногоКалендаряОграничитель.Дата
    |        ПО (ДанныеПроизводственногоКалендаря.Дата >= Задолженность.СрокОплаты)
    |            И (ДанныеПроизводственногоКалендаря.Дата <= Задолженность.ДатаРасчета)
    |
    |СГРУППИРОВАТЬ ПО
    |    Задолженность.ОбъектАренды,
    |    Задолженность.УслугаАренды,
    |    Задолженность.СчетНаАренду,
    |    Задолженность.ДокументРасчетов,
    |    Задолженность.ДатаРасчета,
    |    Задолженность.СрокОплаты,
    |    Задолженность.Сумма,
    |    ДанныеПроизводственногоКалендаряОграничитель.Дата,
    |    Задолженность.ПериодАренды,
    |    Задолженность.СуммаРасход,
    |    Задолженность.СуммаВалРасход
    |
    |ИМЕЮЩИЕ
    |    СУММА(ВЫБОР
    |            КОГДА Задолженность.СрокОплаты = ДанныеПроизводственногоКалендаряОграничитель.Дата
    |                ТОГДА 1
    |            КОГДА &УчитыватьТолькоРабочиеДниОтсрочки
    |                ТОГДА ВЫБОР
    |                        КОГДА ДанныеПроизводственногоКалендаря.ВидДня В (&РабочийДень)
    |                            ТОГДА 1
    |                        ИНАЧЕ 0
    |                    КОНЕЦ
    |            ИНАЧЕ 1
    |        КОНЕЦ) = &ДнейОтсрочки + 1
    |;
    |////////////////////////////////////////////////////////////­­////////////////////
Показать


Стопорится этот запрос, первый где остатки обороты быстро пролетает, вот именно где левое соединение очень долго идёт
14. homer_ 78 08.12.21 15:33 Сейчас в теме
(13) ты не можешь посчитать кол записей в регистре? скажи сколько там записей
15. user973528 08.12.21 15:37 Сейчас в теме
16. homer_ 78 08.12.21 15:40 Сейчас в теме
(15) или ты преувеличиваешь что раньше все было ок на Бух 2 или ты правил запрос.
17. homer_ 78 08.12.21 15:42 Сейчас в теме
(15) Как вариант убери в ВТЗадолженность2 все группировки и скажи сколь строк получается в ВТ по одному договору
18. user973528 08.12.21 15:43 Сейчас в теме
(17) Махнул только регистр с календарем, т.к. в 3.0 он по другому стал называться и некоторые реквизиты поменялись, вот как было до
	|ИЗ
	|	ВТЗадолженность КАК Задолженность
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарьОграничитель
	|			ПО РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= РегламентированныйПроизводственныйКалендарьОграничитель.ДатаКалендаря
	|		ПО (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря >= Задолженность.СрокОплаты)
	|			И (РегламентированныйПроизводственныйКалендарь.ДатаКалендаря <= Задолженность.ДатаРасчета)
19. user973528 08.12.21 15:53 Сейчас в теме
20. homer_ 78 08.12.21 15:57 Сейчас в теме
(19) ты что то не то сделал, убери из вкладки группировки все строки, а так же условие
  |ИМЕЮЩИЕ
    |    СУММА(ВЫБОР
    |            КОГДА Задолженность.СрокОплаты = ДанныеПроизводственногоКалендаряОграничитель.Дата
    |                ТОГДА 1
    |            КОГДА &УчитыватьТолькоРабочиеДниОтсрочки
    |                ТОГДА ВЫБОР
    |                        КОГДА ДанныеПроизводственногоКалендаря.ВидДня В (&РабочийДень)
    |                            ТОГДА 1
    |                        ИНАЧЕ 0
    |                    КОНЕЦ
    |            ИНАЧЕ 1
    |        КОНЕЦ) = &ДнейОтсрочки + 1
Показать
21. user973528 08.12.21 16:09 Сейчас в теме
22. homer_ 78 08.12.21 16:12 Сейчас в теме
(21) вы аренду на 6 лет оформляете? что то мне кажется многовато записей. Смотри что у тебя попадает лишнего в ВТЗадолженность2
23. user973528 08.12.21 16:13 Сейчас в теме
(22) Заметил что год подтягивает 2022, когда момент времени 2021
24. homer_ 78 08.12.21 16:25 Сейчас в теме
(23)скорее всего проблема в данной строке, для чего все это?
  |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаряОграничитель
    |            ПО ДанныеПроизводственногоКалендаря.Дата <= ДанныеПроизводственногоКалендаряОграничитель.Дата
25. Sashares 34 08.12.21 17:18 Сейчас в теме
(24) Тоже не понял, зачем это внутреннее соединение.
28. dehro 5 12.12.21 11:12 Сейчас в теме
(13)
Попробуй у первой
Индексировать По ДатаРасчета
10. user973528 08.12.21 15:16 Сейчас в теме
(8)Получается он прокатывает каждую запись в регистре сведений? Из за этого так долго?
11. user973528 08.12.21 15:17 Сейчас в теме
(8)
  |ИЗ
    |    ВТЗадолженность КАК Задолженность
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
    |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаряОграничитель
    |            ПО ДанныеПроизводственногоКалендаря.Дата <= ДанныеПроизводственногоКалендаряОграничитель.Дата
    |        ПО (ДанныеПроизводственногоКалендаря.Дата >= Задолженность.СрокОплаты)
    |            И (ДанныеПроизводственногоКалендаря.Дата <= Задолженность.ДатаРасчета)


У меня вот тут же ограничение стоит на отбор дат в календаре
26. user790708 09.12.21 19:23 Сейчас в теме
Вот до этого ограничителя
ПО ДанныеПроизводственногоКалендаря.Дата <= ДанныеПроизводственногоКалендаряОграничитель.Дата

Может быть 2021 год 12 месяцев и 9 дней, а то и больше :-).
Если у вас там данные за 6 лет, то они все подойдут под этот отбор если например взять сегодняшнее число.
Может быть надо ограничить диапазон дат и снизу? Для уменьшения выборки возьмите интеревал: Между Задолженность.СрокОплаты и ДанныеПроизводственногоКалендаряОграничитель.Дата.
27. user790708 09.12.21 19:25 Сейчас в теме
(26)И, к стати, индексы в базе не битые? ТИИ с реиндексациейне делали? Если база SQL то ее тоже надо обслуживать постоянно средствами SQL-сервера
29. user1220551 17.12.21 12:19 Сейчас в теме
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаряОграничитель
| ПО ДанныеПроизводственногоКалендаря.Дата <= ДанныеПроизводственногоКалендаряОграничитель.Дата
| ПО (ДанныеПроизводственногоКалендаря.Дата >= Задолженность.СрокОплаты)
| И (ДанныеПроизводственногоКалендаря.Дата <= Задолженность.ДатаРасчета)

Если мы хотя бы берем период за 5 лет, то у вас уже этот запрос выдаст 2кк+ записей. И все ради того, чтобы найти количество дней в рабочем периоде. и тоже самое будет выполняться для всех дней. Хотя для всех дней, достаточно: ДОБАВИТЬКДАТЕ(Задолженность.СрокОплаты, ДЕНЬ, &ДнейОтсрочки) или +1 тут?
неважно. Остается посчитать тоже самое, но только по рабочим дням. Левое соединение по 2м лямам дат? Такоое себе.

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДанныеПроизводственногоКалендаря.Дата КАК Дата,
	ДанныеПроизводственногоКалендаря.ВидДня КАК ВидДня
ПОМЕСТИТЬ ВтРабочиеДни
ИЗ
	РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			МИНИМУМ(ВТЗадолженность .СрокОплаты) КАК ДатаНачала
		ИЗ
			ВТЗадолженность КАК ВТЗадолженность) КАК ОтборПоДатам
		ПО ДанныеПроизводственногоКалендаря.Дата >= ОтборПоДатам.ДатаНачала

ИНДЕКСИРОВАТЬ ПО
	ДанныеПроизводственногоКалендаря.Дата
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВтРабочиеДни.Дата КАК Дата,
	СУММА(ВЫБОР
			КОГДА ВтРабочиеДни1.ВидДня В (ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий), ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))
				ТОГДА 1
			ИНАЧЕ 0
		КОНЕЦ) КАК Индекс
ПОМЕСТИТЬ РабочиеПериодыСИндексом
ИЗ
	ВтРабочиеДни КАК ВтРабочиеДни
		ЛЕВОЕ СОЕДИНЕНИЕ ВтРабочиеДни КАК ВтРабочиеДни1
		ПО ВтРабочиеДни.Дата >= ВтРабочиеДни1.Дата

СГРУППИРОВАТЬ ПО
	ВтРабочиеДни.Дата
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТЗадолженность.СрокОплаты КАК СрокОплаты,
	РабочиеПериодыСИндексом1.Дата КАК СрокОплатыСОтсрочкой
ИЗ
	ВТЗадолженность КАК ВТЗадолженность
		ЛЕВОЕ СОЕДИНЕНИЕ РабочиеПериодыСИндексом КАК РабочиеПериодыСИндексом
		ПО ВтДаты.ДатаПоиска = РабочиеПериодыСИндексом.Дата
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			МИНИМУМ(РабочиеПериодыСИндексом.Дата) КАК Дата,
			РабочиеПериодыСИндексом.Индекс КАК Индекс
		ИЗ
			РабочиеПериодыСИндексом КАК РабочиеПериодыСИндексом
		
		СГРУППИРОВАТЬ ПО
			РабочиеПериодыСИндексом.Индекс) КАК РабочиеПериодыСИндексом1
		ПО (РабочиеПериодыСИндексом.Индекс + &ДнейОтсрочки = РабочиеПериодыСИндексом1.Индекс)
Показать


Такое, должно взлететь, поля подберете правильно и таблицы. Для 5ти лет запрос 1.5 секунды выполнялся. Со сроком оплаты 1 день

РабочиеПериодыСИндексом1.Дата КАК СрокОплатыСОтсрочкой
Можно заменить на
ВЫБОР КОГДА  &УчитыватьТолькоРабочиеДниОтсрочки ТОГДА ДОБАВИТЬКДАТЕ(Задолженность.СрокОплаты, ДЕНЬ, &ДнейОтсрочки) ИНАЧЕ РабочиеПериодыСИндексом1.Дата КОНЕЦ КАК СрокОплатыСОтсрочкой


Но я бы лучше сделал через объединение, и везде во врем таблицах для дат понавставлял это условие, чтобы у меня производственный календарь не соединялся, когда он не нужен
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)