УТ11.3 Зачет оплаты, производительность

1. triviumfan 97 01.03.18 20:36 Сейчас в теме
Доброго дня, коллеги.

Конфигурация: 11.3.3.178.
Описание проблемы: форма документа "РеализацияТоваровУслуги" -> Зачет оплаты. Ждём полчаса...

Оказалось, что проблемы две:
1. Ожидание блокировки записей регистра "ЗаданияКРаспределениюРасчетовСКлиентами", т.к. у нас очень часто (600с) выполняется регламентное задание "ПроведениеПоРасчетамСПартнерами" (Выполнение отложенных движений по расчетам с клиентами\поставщиками), что зачастую мешает активной работе юзеров;
2. А вот тут кое-что интересное... - огромное время выполнение запроса, который инициализируется в модуле "РаспределениеВзаиморасчетов" (РаспределениеВзаиморасчетов.ТекстРасчетыСКлиентамиИнициализация(););
ВЫБРАТЬ РАЗЛИЧНЫЕ
	Аналитики.КлючАналитики
ПОМЕСТИТЬ АналитикиРасчета
ИЗ
	РегистрСведений.АналитикаУчетаПоПартнерам КАК Аналитики
ГДЕ
	(Аналитики.КлючАналитики В (&АналитикиРасчета)
		ИЛИ &ПоВсемАналитикам)
;
///////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	Расчеты.Регистратор                             КАК Регистратор,
	Расчеты.АналитикаУчетаПоПартнерам               КАК АналитикаУчетаПоПартнерам,
	Расчеты.ЗаказКлиента                            КАК ЗаказКлиента,
	Расчеты.Валюта                                  КАК Валюта,
	ЕСТЬNULL(Суммы.Валюта, &ВалютаРеглУчета)        КАК ВалютаДокумента
ПОМЕСТИТЬ РегистраторыКРасчету
ИЗ 
	(ВЫБРАТЬ РАЗЛИЧНЫЕ
		Расчеты.Регистратор               КАК Регистратор,
		Расчеты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
		Расчеты.ЗаказКлиента              КАК ЗаказКлиента,
		Расчеты.Валюта                    КАК Валюта
	ИЗ
		РегистрНакопления.РасчетыСКлиентами КАК Расчеты 
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикиРасчета КАК Аналитики
				ПО Расчеты.АналитикаУчетаПоПартнерам = Аналитики.КлючАналитики
	ГДЕ
		Расчеты.Период МЕЖДУ &НачалоПериода И &ОкончаниеПериода
		И Расчеты.Сумма <> 0

	ОБЪЕДИНИТЬ

	ВЫБРАТЬ РАЗЛИЧНЫЕ
		РасчетыПоДокументам.Регистратор               КАК Регистратор,
		РасчетыПоДокументам.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
		РасчетыПоДокументам.ЗаказКлиента              КАК ЗаказКлиента,
		РасчетыПоДокументам.Валюта                    КАК Валюта
	ИЗ
		РегистрНакопления.РасчетыСКлиентамиПоДокументам КАК РасчетыПоДокументам 
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикиРасчета КАК Аналитики
				ПО РасчетыПоДокументам.АналитикаУчетаПоПартнерам = Аналитики.КлючАналитики
	ГДЕ
		РасчетыПоДокументам.Период МЕЖДУ &НачалоПериода И &ОкончаниеПериода
		И (РасчетыПоДокументам.Долг <> 0 ИЛИ РасчетыПоДокументам.Предоплата <> 0)
	) КАК Расчеты

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

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикиРасчета КАК Аналитики
	ПО Расчеты.АналитикаУчетаПоПартнерам = Аналитики.КлючАналитики
ГДЕ
	Расчеты.Период МЕЖДУ &НачалоПериода И &ОкончаниеПериода
	И Расчеты.Сумма <> 0
	И Расчеты.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
;
////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ДД.РасчетныйДокумент КАК Ссылка,
	МАКСИМУМ(Периодика.Регистратор) КАК Регистратор,
	МАКСИМУМ(Периодика.Период) КАК Период
ПОМЕСТИТЬ ОстаткиПоЛИФО
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоДокументам.Остатки(&НачалоПериода) КАК ДД
	ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентамиПоДокументам КАК Периодика
		ПО Периодика.Период < &НачалоПериода
		И Периодика.РасчетныйДокумент = ДД.РасчетныйДокумент
ГДЕ
	ДД.РасчетныйДокумент <> НЕОПРЕДЕЛЕНО
	И ((Периодика.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) И Периодика.Долг > 0)
		ИЛИ (Периодика.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И Периодика.Предоплата > 0)
	)
СГРУППИРОВАТЬ ПО
	ДД.РасчетныйДокумент
;
///////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	Расчеты.Регистратор КАК Регистратор,
	Расчеты.РасчетныйДокумент КАК РасчетныйДокумент,
	Расчеты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ДокументыОтгрузки.Регистратор КАК ДокументОтгрузки
ПОМЕСТИТЬ ПрошлыеОтгрузки
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоДокументам КАК Расчеты

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыОтгрузки КАК ДокументыОтгрузки
	ПО Расчеты.Регистратор = ДокументыОтгрузки.Регистратор

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикиРасчета КАК ОтборПоАналитикам
	ПО Расчеты.АналитикаУчетаПоПартнерам = ОтборПоАналитикам.КлючАналитики

	ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПоЛИФО КАК ОстаткиПоЛИФО
	ПО Расчеты.РасчетныйДокумент = ОстаткиПоЛИФО.Ссылка
ГДЕ
	Расчеты.Период < &НачалоПериода
	И ОстаткиПоЛИФО.Ссылка ЕСТЬ NULL
	И Расчеты.РасчетныйДокумент <> ДокументыОтгрузки.Регистратор
;
////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	Расчеты.Регистратор               КАК Регистратор,
	Расчеты.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	Расчеты.ЗаказКлиента              КАК ЗаказКлиента,
	Расчеты.Валюта                    КАК Валюта
ПОМЕСТИТЬ АктуальныеАналитики
ИЗ
	РегистрНакопления.РасчетыСКлиентами КАК Расчеты

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистраторыКРасчету КАК Регистраторы
	ПО Расчеты.Регистратор = Регистраторы.Регистратор

	ЛЕВОЕ СОЕДИНЕНИЕ АналитикиРасчета КАК АналитикиКРасчету
	ПО Расчеты.АналитикаУчетаПоПартнерам = АналитикиКРасчету.КлючАналитики
ГДЕ
	АналитикиКРасчету.КлючАналитики ЕСТЬ NULL
	И НЕ Расчеты.Регистратор ССЫЛКА Документ.КорректировкаРегистров
;
ВЫБРАТЬ
	ДД.Период КАК Период,
	ДД.Регистратор КАК Регистратор,
	ДД.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ДД.ЗаказКлиента КАК ЗаказКлиента,
	ДД.Валюта КАК Валюта,

	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
		ТОГДА - ДД.Сумма
		ИНАЧЕ ДД.Сумма
	КОНЕЦ) КАК Сумма,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
		ТОГДА - ДД.СуммаУпр
		ИНАЧЕ ДД.СуммаУпр
	КОНЕЦ) КАК СуммаУпр,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
		ТОГДА - ДД.СуммаРегл
		ИНАЧЕ ДД.СуммаРегл
	КОНЕЦ) КАК СуммаРегл,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
		ТОГДА - ДД.ЗалогЗаТару
		ИНАЧЕ ДД.ЗалогЗаТару
	КОНЕЦ) КАК ЗалогЗаТару,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
		ТОГДА - ДД.КОплате
		ИНАЧЕ ДД.КОплате
	КОНЕЦ) КАК КОплате,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
		ТОГДА - ДД.Оплачивается
		ИНАЧЕ ДД.Оплачивается
	КОНЕЦ) КАК Оплачивается,

	ДД.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
	ДД.ДатаПлатежа КАК ДатаПлатежа,
	ВЫБОР КОГДА ДД.Валюта = &ВалютаРеглУчета
		ИЛИ КРасчету.ВалютаДокумента = &ВалютаРеглУчета
		ИЛИ КРасчету.Валюта = &ВалютаУпрУчета
		ИЛИ КРасчету.ВалютаДокумента = &ВалютаУпрУчета
		ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК РасчетПоКурсуДокумента
ПОМЕСТИТЬ ВтКорректировки
ИЗ
	РегистрНакопления.РасчетыСКлиентами КАК ДД

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистраторыКРасчету КАК КРасчету
	ПО ДД.Регистратор = КРасчету.Регистратор
		И ДД.АналитикаУчетаПоПартнерам = КРасчету.АналитикаУчетаПоПартнерам
		И ДД.ЗаказКлиента = КРасчету.ЗаказКлиента
		И ДД.Валюта = КРасчету.Валюта
ГДЕ
	ДД.Период МЕЖДУ &НачалоПериода И &ОкончаниеПериода
	И ДД.Сумма <> 0
	И ТИПЗНАЧЕНИЯ(ДД.Регистратор) = ЗНАЧЕНИЕ(Документ.КорректировкаРеализации)

СГРУППИРОВАТЬ ПО
	ДД.Период,
	ДД.Регистратор,
	ДД.АналитикаУчетаПоПартнерам,
	ДД.ЗаказКлиента,
	ДД.Валюта,
	ДД.ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств,
	ДД.ДатаПлатежа,
	ВЫБОР КОГДА ДД.Валюта = &ВалютаРеглУчета
		ИЛИ КРасчету.ВалютаДокумента = &ВалютаРеглУчета
		ИЛИ КРасчету.Валюта = &ВалютаУпрУчета
		ИЛИ КРасчету.ВалютаДокумента = &ВалютаУпрУчета
		ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ
;
/////////////////////////////////////////////
ВЫБРАТЬ
	ДД.Период КАК Период,
	ДД.Регистратор КАК Регистратор,
	ВЫБОР КОГДА ДД.Сумма < 0 
		ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
		ИНАЧЕ ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
	КОНЕЦ КАК ВидДвижения,
	ДД.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ДД.ЗаказКлиента КАК ЗаказКлиента,
	ДД.Валюта КАК Валюта,

	ВЫБОР КОГДА ДД.Сумма < 0
		ТОГДА 0 - ДД.Сумма
		ИНАЧЕ ДД.Сумма
	КОНЕЦ КАК Сумма,
	ВЫБОР КОГДА ДД.СуммаУпр < 0
		ТОГДА 0 - ДД.СуммаУпр
		ИНАЧЕ ДД.СуммаУпр
	КОНЕЦ КАК СуммаУпр,
	ВЫБОР КОГДА ДД.СуммаРегл < 0
		ТОГДА 0 - ДД.СуммаРегл
		ИНАЧЕ ДД.СуммаРегл
	КОНЕЦ КАК СуммаРегл,

	ВЫБОР КОГДА ДД.ЗалогЗаТару < 0
		ТОГДА 0 - ДД.ЗалогЗаТару
		ИНАЧЕ ДД.ЗалогЗаТару
	КОНЕЦ КАК ЗалогЗаТару,
	ВЫБОР КОГДА ДД.КОплате < 0
		ТОГДА 0 - ДД.КОплате
		ИНАЧЕ ДД.КОплате
	КОНЕЦ КАК КОплате,
	ВЫБОР КОГДА ДД.Оплачивается < 0
		ТОГДА 0 - ДД.Оплачивается
		ИНАЧЕ ДД.Оплачивается
	КОНЕЦ КАК Оплачивается,

	ДД.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
	ДД.ДатаПлатежа КАК ДатаПлатежа,
	ДД.РасчетПоКурсуДокумента КАК РасчетПоКурсуДокумента
ПОМЕСТИТЬ Корректировки
ИЗ ВтКорректировки КАК ДД
;
////////////////////////////////////
УНИЧТОЖИТЬ ВтКорректировки
;
ВЫБРАТЬ ПЕРВЫЕ 0
	0 КАК Приоритет,
	"ХХХХХХХХХХХХХХХХХХ" КАК ТипЗаписи,
	ЛОЖЬ КАК РасчетЗавершен,
	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК Период,
	ДД.Регистратор КАК Регистратор,
	ЗНАЧЕНИЕ(Справочник.КлючиАналитикиУчетаПоПартнерам.ПустаяСсылка) КАК АналитикаУчетаПоПартнерам,
	ДД.ЗаказКлиента КАК ЗаказКлиента,
	ДД.РасчетныйДокумент КАК РасчетныйДокумент,
	ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка) КАК Валюта,
	0. КАК Сумма,
	0. КАК КВозврату,
	0. КАК Долг,
	0. КАК ДолгУпр,
	0. КАК ДолгРегл,
	0. КАК Предоплата,
	0. КАК ПредоплатаУпр,
	0. КАК ПредоплатаРегл,
	0. КАК ЗалогЗаТару,
	0. КАК ЗалогЗаТаруРегл,
	ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка) КАК ХозяйственнаяОперация,
	ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) КАК СтатьяДвиженияДенежныхСредств,
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК УдалитьДатаПлатежа,
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаПлатежа,
	НЕОПРЕДЕЛЕНО КАК ДокументОтгрузки,
	НЕОПРЕДЕЛЕНО КАК РасчетПоКурсуДокумента,
	1 КАК ИндексДвиженияВзаимозачета,
	0 КАК ПриоритетРасчетногоДокумента
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоДокументам КАК ДД
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
	10 КАК Приоритет,
	ВЫБОР КОГДА ДД.ПредоплатаОстаток <> 0 
		ТОГДА "ОстатокОплат"
		ИНАЧЕ "ОстатокОтгрузок"
	КОНЕЦ КАК ТипЗаписи,
	ИСТИНА КАК РасчетЗавершен,
	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
	ЕСТЬNULL(Периодика.Период, &НачалоПериода) КАК Период,
	ЕСТЬNULL(Периодика.Регистратор, ДД.РасчетныйДокумент) КАК Регистратор,
	ДД.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ВЫБОР КОГДА ДД.ЗаказКлиента = НЕОПРЕДЕЛЕНО
		ТОГДА NULL
		ИНАЧЕ ДД.ЗаказКлиента
	КОНЕЦ КАК ЗаказКлиента,
	ДД.РасчетныйДокумент КАК РасчетныйДокумент,
	ДД.Валюта КАК Валюта,
	ВЫБОР КОГДА (ДД.ДолгОстаток + ЕСТЬNULL(Корректировки.Долг,0) + ДД.ПредоплатаОстаток + ЕСТЬNULL(Корректировки.Предоплата,0)) < 0
		ТОГДА 0 - (ДД.ДолгОстаток + ЕСТЬNULL(Корректировки.Долг,0) + ДД.ПредоплатаОстаток + ЕСТЬNULL(Корректировки.Предоплата,0))
		ИНАЧЕ (ДД.ДолгОстаток + ЕСТЬNULL(Корректировки.Долг,0)  + ДД.ПредоплатаОстаток + ЕСТЬNULL(Корректировки.Предоплата,0))
	КОНЕЦ КАК Сумма,
	ВЫБОР КОГДА ДД.КВозвратуОстаток + ЕСТЬNULL(Корректировки.КВозврату,0) < 0
		ТОГДА 0 - (ДД.КВозвратуОстаток + ЕСТЬNULL(Корректировки.КВозврату,0))
		ИНАЧЕ ДД.КВозвратуОстаток + ЕСТЬNULL(Корректировки.КВозврату,0)
	КОНЕЦ КАК КВозврату,
	ВЫБОР КОГДА ДД.ДолгОстаток + ЕСТЬNULL(Корректировки.Долг,0) < 0
		ТОГДА 0 - (ДД.ДолгОстаток + ЕСТЬNULL(Корректировки.Долг,0))
		ИНАЧЕ ДД.ДолгОстаток + ЕСТЬNULL(Корректировки.Долг,0)
	КОНЕЦ КАК Долг,
	ВЫБОР КОГДА ДД.ДолгУпрОстаток + ЕСТЬNULL(Корректировки.ДолгУпр,0) < 0
		ТОГДА 0 - (ДД.ДолгУпрОстаток + ЕСТЬNULL(Корректировки.ДолгУпр,0))
		ИНАЧЕ ДД.ДолгУпрОстаток + ЕСТЬNULL(Корректировки.ДолгУпр,0)
	КОНЕЦ КАК ДолгУпр,
	ВЫБОР КОГДА ДД.ДолгРеглОстаток + ЕСТЬNULL(Корректировки.ДолгРегл,0) < 0
		ТОГДА 0 - (ДД.ДолгРеглОстаток + ЕСТЬNULL(Корректировки.ДолгРегл,0))
		ИНАЧЕ ДД.ДолгРеглОстаток + ЕСТЬNULL(Корректировки.ДолгРегл,0)
	КОНЕЦ КАК ДолгРегл,
	ВЫБОР КОГДА ДД.ПредоплатаОстаток + ЕСТЬNULL(Корректировки.Предоплата,0) < 0
		ТОГДА 0 - (ДД.ПредоплатаОстаток + ЕСТЬNULL(Корректировки.Предоплата,0))
		ИНАЧЕ ДД.ПредоплатаОстаток + ЕСТЬNULL(Корректировки.Предоплата,0)
	КОНЕЦ КАК Предоплата,
	ВЫБОР КОГДА ДД.ПредоплатаУпрОстаток + ЕСТЬNULL(Корректировки.ПредоплатаУпр,0) < 0
		ТОГДА 0 - (ДД.ПредоплатаУпрОстаток + ЕСТЬNULL(Корректировки.ПредоплатаУпр,0))
		ИНАЧЕ ДД.ПредоплатаУпрОстаток + ЕСТЬNULL(Корректировки.ПредоплатаУпр,0)
	КОНЕЦ КАК ПредоплатаУпр,
	ВЫБОР КОГДА ДД.ПредоплатаРеглОстаток + ЕСТЬNULL(Корректировки.ПредоплатаРегл,0) < 0
		ТОГДА 0 - (ДД.ПредоплатаРеглОстаток + ЕСТЬNULL(Корректировки.ПредоплатаРегл,0))
		ИНАЧЕ ДД.ПредоплатаРеглОстаток + ЕСТЬNULL(Корректировки.ПредоплатаРегл,0)
	КОНЕЦ КАК ПредоплатаРегл,
	ВЫБОР КОГДА ДД.ЗалогЗаТаруОстаток + ЕСТЬNULL(Корректировки.ЗалогЗаТару,0) < 0
		ТОГДА 0 - (ДД.ЗалогЗаТаруОстаток + ЕСТЬNULL(Корректировки.ЗалогЗаТару,0))
		ИНАЧЕ ДД.ЗалогЗаТаруОстаток + ЕСТЬNULL(Корректировки.ЗалогЗаТару,0)
	КОНЕЦ КАК ЗалогЗаТару,
	ВЫБОР КОГДА ДД.ЗалогЗаТаруРеглОстаток + ЕСТЬNULL(Корректировки.ЗалогЗаТаруРегл,0)< 0
		ТОГДА 0 - (ДД.ЗалогЗаТаруРеглОстаток + ЕСТЬNULL(Корректировки.ЗалогЗаТаруРегл,0))
		ИНАЧЕ ДД.ЗалогЗаТаруРеглОстаток + ЕСТЬNULL(Корректировки.ЗалогЗаТаруРегл,0)
	КОНЕЦ КАК ЗалогЗаТаруРегл,
	ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПустаяСсылка) КАК ХозяйственнаяОперация,
	ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ПустаяСсылка) КАК СтатьяДвиженияДенежныхСредств,
	ДД.УдалитьДатаПлатежа КАК УдалитьДатаПлатежа,
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаПлатежа,
	ЕСТЬNULL(Периодика.Регистратор, ДД.РасчетныйДокумент) КАК ДокументОтгрузки,
	НЕОПРЕДЕЛЕНО КАК РасчетПоКурсуДокумента,
	1 КАК ИндексДвиженияВзаимозачета,
	ВЫБОР КОГДА ЕСТЬNULL(Периодика.Регистратор, 0) = ДД.РасчетныйДокумент 
		ТОГДА 1 
			ИНАЧЕ 0 
	КОНЕЦ КАК ПриоритетРасчетногоДокумента
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоДокументам.Остатки(&НачалоПериода) КАК ДД

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ АналитикиРасчета КАК Аналитики
	ПО ДД.АналитикаУчетаПоПартнерам = Аналитики.КлючАналитики

	ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПоЛИФО КАК Периодика
		ПО Периодика.Ссылка = ДД.РасчетныйДокумент

	ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 
							Корректировки.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
							Корректировки.ЗаказКлиента              КАК ЗаказКлиента,
							Корректировки.РасчетныйДокумент         КАК РасчетныйДокумент,
							Корректировки.Валюта                    КАК Валюта,
							СУММА(Корректировки.КВозврату)          КАК КВозврату,
							СУММА(Корректировки.Долг)               КАК Долг,
							СУММА(Корректировки.ДолгУпр)            КАК ДолгУпр,
							СУММА(Корректировки.ДолгРегл)           КАК ДолгРегл,
							СУММА(Корректировки.Предоплата)         КАК Предоплата,
							СУММА(Корректировки.ПредоплатаУпр)      КАК ПредоплатаУпр,
							СУММА(Корректировки.ПредоплатаРегл)     КАК ПредоплатаРегл,
							СУММА(Корректировки.ЗалогЗаТару)        КАК ЗалогЗаТару,
							СУММА(Корректировки.ЗалогЗаТаруРегл)    КАК ЗалогЗаТаруРегл
						ИЗ	
							РегистрНакопления.РасчетыСКлиентамиПоДокументам КАК Корректировки
						ГДЕ
							Корректировки.Регистратор ССЫЛКА Документ.КорректировкаРегистров
							И Корректировки.Период МЕЖДУ  &НачалоПериода И &ОкончаниеПериода
						СГРУППИРОВАТЬ ПО 
							Корректировки.АналитикаУчетаПоПартнерам,
							Корректировки.ЗаказКлиента,
							Корректировки.РасчетныйДокумент,
							Корректировки.Валюта) КАК Корректировки
		ПО ДД.АналитикаУчетаПоПартнерам = Корректировки.АналитикаУчетаПоПартнерам
			И ДД.ЗаказКлиента           = Корректировки.ЗаказКлиента
			И ДД.РасчетныйДокумент         = Корректировки.РасчетныйДокумент
			И ДД.Валюта                    = Корректировки.Валюта
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
	ВЫБОР КОГДА ДД.Регистратор <> ДД.РасчетныйДокумент
		ТОГДА 9
		ИНАЧЕ 10
	КОНЕЦ КАК Приоритет,
	"ПрошлаяОтгрузка" КАК ТипЗаписи,
	ИСТИНА КАК РасчетЗавершен,
	ДД.ВидДвижения КАК ВидДвижения,
	ДД.Период КАК Период,
	ДД.Регистратор КАК Регистратор,
	ДД.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ВЫБОР КОГДА ДД.ЗаказКлиента = НЕОПРЕДЕЛЕНО
		ТОГДА NULL
		ИНАЧЕ ДД.ЗаказКлиента
	КОНЕЦ КАК ЗаказКлиента,
	ВЫБОР КОГДА ДД.РасчетныйДокумент = ПрошлыеОтгрузки.ДокументОтгрузки
		ТОГДА ДД.Регистратор
		ИНАЧЕ ДД.РасчетныйДокумент
	КОНЕЦ КАК РасчетныйДокумент,
	ДД.Валюта КАК Валюта,
	СУММА(ВЫБОР КОГДА (ДД.Долг + ДД.Предоплата) < 0
		ТОГДА 0 - (ДД.Долг + ДД.Предоплата)
		ИНАЧЕ (ДД.Долг + ДД.Предоплата)
	КОНЕЦ) КАК Сумма,
	СУММА(ДД.КВозврату) КАК КВозврату,
	СУММА(ВЫБОР КОГДА ДД.РасчетныйДокумент = ДД.Регистратор
			ТОГДА ДД.Долг
			ИНАЧЕ 0
	КОНЕЦ) КАК Долг,
	СУММА(ВЫБОР КОГДА ДД.РасчетныйДокумент = ДД.Регистратор
			ТОГДА ДД.ДолгУпр
			ИНАЧЕ 0
	КОНЕЦ) КАК ДолгУпр,
	СУММА(ВЫБОР КОГДА ДД.РасчетныйДокумент = ДД.Регистратор
			ТОГДА ДД.ДолгРегл
			ИНАЧЕ 0
	КОНЕЦ) КАК ДолгРегл,
	СУММА(ВЫБОР КОГДА ДД.РасчетныйДокумент <> ДД.Регистратор И ДД.Долг <> 0
			ТОГДА ДД.Долг
			ИНАЧЕ ДД.Предоплата
	КОНЕЦ) КАК Предоплата,
	СУММА(ВЫБОР КОГДА ДД.РасчетныйДокумент <> ДД.Регистратор И ДД.ДолгУпр <> 0
			ТОГДА ДД.ДолгУпр
			ИНАЧЕ ДД.ПредоплатаУпр
	КОНЕЦ) КАК ПредоплатаУпр,
	СУММА(ВЫБОР КОГДА ДД.РасчетныйДокумент <> ДД.Регистратор И ДД.ДолгРегл <> 0
			ТОГДА ДД.ДолгРегл
			ИНАЧЕ ДД.ПредоплатаРегл
	КОНЕЦ) КАК ПредоплатаРегл,
	СУММА(ДД.ЗалогЗаТару) КАК ЗалогЗаТару,
	СУММА(ДД.ЗалогЗаТаруРегл) КАК ЗалогЗаТаруРегл,
	ДД.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК УдалитьДатаПлатежа,
	ДД.ДатаПлатежа КАК ДатаПлатежа,
	ПрошлыеОтгрузки.ДокументОтгрузки КАК ДокументОтгрузки,
	НЕОПРЕДЕЛЕНО КАК РасчетПоКурсуДокумента,
	1 КАК ИндексДвиженияВзаимозачета,
	ВЫБОР КОГДА ДД.Регистратор = ДД.РасчетныйДокумент 
		ТОГДА 1
			ИНАЧЕ 0 
	КОНЕЦ КАК ПриоритетРасчетногоДокумента
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоДокументам КАК ДД

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПрошлыеОтгрузки КАК ПрошлыеОтгрузки
	ПО ДД.Регистратор = ПрошлыеОтгрузки.Регистратор
		И ДД.РасчетныйДокумент = ПрошлыеОтгрузки.РасчетныйДокумент
		И ДД.АналитикаУчетаПоПартнерам = ПрошлыеОтгрузки.АналитикаУчетаПоПартнерам
СГРУППИРОВАТЬ ПО
	ВЫБОР КОГДА ДД.Регистратор <> ДД.РасчетныйДокумент
		ТОГДА 9
		ИНАЧЕ 10
	КОНЕЦ,
	ДД.ВидДвижения,
	ДД.Период,
	ДД.Регистратор,
	ДД.АналитикаУчетаПоПартнерам,
	ДД.ЗаказКлиента,
	ДД.РасчетныйДокумент,
	ДД.Валюта,
	ДД.ДатаПлатежа,
	ДД.ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств,
	ДД.ДатаПлатежа,
	ПрошлыеОтгрузки.ДокументОтгрузки,
	ВЫБОР КОГДА ДД.Регистратор = ДД.РасчетныйДокумент 
		ТОГДА 1
			ИНАЧЕ 0 
	КОНЕЦ
ОБЪЕДИНИТЬ ВСЕ
 // Движения по Расчетам с клиентами без корректировок реализаций
ВЫБРАТЬ
	ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) 
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0)
			ТОГДА 12
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
		ТОГДА 14
		ИНАЧЕ 13
	КОНЕЦ,
	ВЫБОР
		КОГДА (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Оплачивается > 0)
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.КОплате > 0)
				И ДД.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента)
			ТОГДА "Оплата"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
			ТОГДА "Отгрузка"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация В (
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента),
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя),
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОтчетКомитенту))
			ТОГДА "ВозвратТоваров"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
			ТОГДА "СторноОтгрузки"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0
			ТОГДА "СторноОплаты"
	КОНЕЦ КАК ТипЗаписи,
	ЛОЖЬ КАК РасчетЗавершен,
	ДД.ВидДвижения КАК ВидДвижения,
	ДД.Период КАК Период,
	ДД.Регистратор КАК Регистратор,
	ДД.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ВЫБОР КОГДА ДД.ЗаказКлиента = НЕОПРЕДЕЛЕНО
		ТОГДА NULL
		ИНАЧЕ ДД.ЗаказКлиента
	КОНЕЦ КАК ЗаказКлиента,
	ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ДД.Регистратор) = ТИП(Документ.ВводОстатков)
		И ТИПЗНАЧЕНИЯ(ДД.ЗаказКлиента) НЕ В (&СписокТиповЗаказов)
		И ДД.ЗаказКлиента <> НЕОПРЕДЕЛЕНО
		И ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
		ТОГДА ДД.ЗаказКлиента
		ИНАЧЕ ДД.Регистратор
	КОНЕЦ КАК РасчетныйДокумент,
	ДД.Валюта КАК Валюта,
	СУММА(ДД.Сумма) КАК Сумма,
	0. КАК КВозврату,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) 
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
					 И ДД.Сумма < 0)
			ТОГДА ДД.Сумма
			ИНАЧЕ 0
		КОНЕЦ
	) КАК Долг,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) 
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
					 И ДД.Сумма < 0)
			ТОГДА ДД.СуммаУпр
			ИНАЧЕ 0
		КОНЕЦ
	) КАК ДолгУпр,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) 
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
					 И ДД.Сумма < 0)
			ТОГДА ДД.СуммаРегл
			ИНАЧЕ 0
		КОНЕЦ
	) КАК ДолгРегл,
	СУММА(
		ВЫБОР КОГДА (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0)
				ТОГДА ДД.Сумма
			ИНАЧЕ 0
		КОНЕЦ
	) КАК Предоплата,
	СУММА(
		ВЫБОР КОГДА (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0)
				ТОГДА ДД.СуммаУпр
			ИНАЧЕ 0
		КОНЕЦ
	) КАК ПредоплатаУпр,
	СУММА(
		ВЫБОР КОГДА (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0)
				ТОГДА ДД.СуммаРегл
			ИНАЧЕ 0
		КОНЕЦ
	) КАК ПредоплатаРегл,
	СУММА(ДД.ЗалогЗаТару) КАК ЗалогЗаТару,
	0. КАК ЗалогЗаТаруРегл,
	ДД.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК УдалитьДатаПлатежа,
	ДД.ДатаПлатежа КАК ДатаПлатежа,
	ВЫБОР КОГДА ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
		ТОГДА ДД.Регистратор.ДокументОснование
		ИНАЧЕ ДД.Регистратор
	КОНЕЦ КАК ДокументОтгрузки,
	ВЫБОР КОГДА ДД.Валюта = &ВалютаРеглУчета
		ИЛИ КРасчету.ВалютаДокумента = &ВалютаРеглУчета
		ИЛИ КРасчету.Валюта = &ВалютаУпрУчета
		ИЛИ КРасчету.ВалютаДокумента = &ВалютаУпрУчета
		ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ КАК РасчетПоКурсуДокумента,

	ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ДД.Регистратор) = ТИП(Документ.ВзаимозачетЗадолженности)
			И ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
		ТОГДА 0
		КОГДА ТИПЗНАЧЕНИЯ(ДД.Регистратор) = ТИП(Документ.ВзаимозачетЗадолженности)
			И ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0
		ТОГДА -1
		ИНАЧЕ 1
	КОНЕЦ КАК ИндексДвиженияВзаимозачета,
	0 КАК ПриоритетРасчетногоДокумента
ИЗ
	РегистрНакопления.РасчетыСКлиентами КАК ДД

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистраторыКРасчету КАК КРасчету
	ПО ДД.Регистратор = КРасчету.Регистратор
		И ДД.АналитикаУчетаПоПартнерам = КРасчету.АналитикаУчетаПоПартнерам
		И ДД.ЗаказКлиента = КРасчету.ЗаказКлиента
		И ДД.Валюта = КРасчету.Валюта
ГДЕ
	ДД.Период МЕЖДУ &НачалоПериода И &ОкончаниеПериода
	И ДД.Сумма <> 0
	И ТИПЗНАЧЕНИЯ(ДД.Регистратор) <> ЗНАЧЕНИЕ(Документ.КорректировкаРеализации)
	И НЕ ДД.Регистратор ССЫЛКА Документ.КорректировкаРегистров
СГРУППИРОВАТЬ ПО
	ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) 
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0)
			ТОГДА 12
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
		ТОГДА 14
		ИНАЧЕ 13
	КОНЕЦ,
	ВЫБОР
		КОГДА (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Оплачивается > 0)
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.КОплате > 0)
				И ДД.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента)
			ТОГДА "Оплата"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
			ТОГДА "Отгрузка"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация В (
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента),
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя),
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОтчетКомитенту))
			ТОГДА "ВозвратТоваров"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
			ТОГДА "СторноОтгрузки"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0
			ТОГДА "СторноОплаты"
	КОНЕЦ,
	ДД.Период,
	ДД.Регистратор,
	ДД.ВидДвижения,
	ДД.АналитикаУчетаПоПартнерам,
	ДД.ЗаказКлиента,
	ДД.Валюта,
	ДД.ДатаПлатежа,
	ДД.ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств,
	ДД.ДатаПлатежа,
	ВЫБОР КОГДА ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
		ТОГДА ДД.Регистратор.ДокументОснование
		ИНАЧЕ ДД.Регистратор
	КОНЕЦ,
	ВЫБОР КОГДА ДД.Валюта = &ВалютаРеглУчета
		ИЛИ КРасчету.ВалютаДокумента = &ВалютаРеглУчета
		ИЛИ КРасчету.Валюта = &ВалютаУпрУчета
		ИЛИ КРасчету.ВалютаДокумента = &ВалютаУпрУчета
		ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ,
	ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ДД.Регистратор) = ТИП(Документ.ВзаимозачетЗадолженности)
			И ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
		ТОГДА 0
		КОГДА ТИПЗНАЧЕНИЯ(ДД.Регистратор) = ТИП(Документ.ВзаимозачетЗадолженности)
			И ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0
		ТОГДА -1
		ИНАЧЕ 1
	КОНЕЦ,
	0

ОБЪЕДИНИТЬ ВСЕ

 // Движения документа Корректировка реализации
ВЫБРАТЬ
	ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) 
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0)
			ТОГДА 12
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
		ТОГДА 14
		ИНАЧЕ 13
	КОНЕЦ,
	ВЫБОР
		КОГДА (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Оплачивается > 0)
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.КОплате > 0)
				И ДД.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента)
			ТОГДА "Оплата"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
			ТОГДА "Отгрузка"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0 И ДД.КОплате <> 0
			И ДД.ХозяйственнаяОперация В (
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента),
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя))
			ТОГДА "ВозвратТоваров"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
			ТОГДА "СторноОтгрузки"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Оплачивается = 0
			ТОГДА "СторноОплаты"
	КОНЕЦ КАК ТипЗаписи,
	ЛОЖЬ КАК РасчетЗавершен,
	ДД.ВидДвижения КАК ВидДвижения,
	ДД.Период КАК Период,
	ДД.Регистратор КАК Регистратор,
	ДД.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ВЫБОР КОГДА ДД.ЗаказКлиента = НЕОПРЕДЕЛЕНО
		ТОГДА NULL
		ИНАЧЕ ДД.ЗаказКлиента
	КОНЕЦ КАК ЗаказКлиента,
	ВЫБОР КОГДА ТИПЗНАЧЕНИЯ(ДД.Регистратор) = ТИП(Документ.ВводОстатков)
		И ТИПЗНАЧЕНИЯ(ДД.ЗаказКлиента) <> ТИП(Справочник.ДоговорыКонтрагентов)
		И ДД.ЗаказКлиента <> НЕОПРЕДЕЛЕНО
		И ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
		ТОГДА ДД.ЗаказКлиента
		ИНАЧЕ ДД.Регистратор
	КОНЕЦ КАК РасчетныйДокумент,
	ДД.Валюта КАК Валюта,
	СУММА(ДД.Сумма) КАК Сумма,
	0. КАК КВозврату,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) 
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0)
			ТОГДА ДД.Сумма
			ИНАЧЕ 0
		КОНЕЦ
	) КАК Долг,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0)
			ТОГДА ДД.СуммаУпр
			ИНАЧЕ 0
		КОНЕЦ
	) КАК ДолгУпр,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0)
			ТОГДА ДД.СуммаРегл
			ИНАЧЕ 0
		КОНЕЦ
	) КАК ДолгРегл,
	СУММА(
		ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			ТОГДА ДД.Сумма
			ИНАЧЕ 0
		КОНЕЦ
	) КАК Предоплата,
	СУММА(
		ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			ТОГДА ДД.СуммаУпр
			ИНАЧЕ 0
		КОНЕЦ
	) КАК ПредоплатаУпр,
	СУММА(ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			ТОГДА ДД.СуммаРегл
			ИНАЧЕ 0
		КОНЕЦ
	) КАК ПредоплатаРегл,
	СУММА(ДД.ЗалогЗаТару) КАК ЗалогЗаТару,
	0. КАК ЗалогЗаТаруРегл,
	ДД.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК УдалитьДатаПлатежа,
	ДД.ДатаПлатежа КАК ДатаПлатежа,
	ВЫБОР КОГДА ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
		ТОГДА ДД.Регистратор.ДокументОснование
		ИНАЧЕ ДД.Регистратор
	КОНЕЦ КАК ДокументОтгрузки,
	ДД.РасчетПоКурсуДокумента КАК РасчетПоКурсуДокумента,
	1 КАК ИндексДвиженияВзаимозачета,
	0 КАК ПриоритетРасчетногоДокумента
ИЗ
	Корректировки КАК ДД
СГРУППИРОВАТЬ ПО
	ВЫБОР КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) 
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма < 0)
			ТОГДА 12
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
		ТОГДА 14
		ИНАЧЕ 13
	КОНЕЦ,
	ВЫБОР
		КОГДА (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Оплачивается > 0)
				ИЛИ (ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.КОплате > 0)
				И ДД.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента)
			ТОГДА "Оплата"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
			ТОГДА "Отгрузка"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0 И ДД.КОплате <> 0
			И ДД.ХозяйственнаяОперация В (
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента),
				ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя))
			ТОГДА "ВозвратТоваров"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Сумма > 0
			И ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
			ТОГДА "СторноОтгрузки"
		КОГДА ДД.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ДД.Оплачивается = 0
			ТОГДА "СторноОплаты"
	КОНЕЦ,
	ДД.Период,
	ДД.Регистратор,
	ДД.ВидДвижения,
	ДД.АналитикаУчетаПоПартнерам,
	ДД.ЗаказКлиента,
	ДД.Валюта,
	ДД.ДатаПлатежа,
	ДД.ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств,
	ДД.ДатаПлатежа,
	ВЫБОР КОГДА ДД.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.КорректировкаЗадолженности)
		ТОГДА ДД.Регистратор.ДокументОснование
		ИНАЧЕ ДД.Регистратор
	КОНЕЦ,
	ДД.РасчетПоКурсуДокумента,
	0
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
	11 КАК Приоритет,
	"Актуальные" КАК ТипЗаписи,
	ИСТИНА КАК РасчетЗавершен,
	ДД.ВидДвижения КАК ВидДвижения,
	ДД.Период КАК Период,
	ДД.Регистратор КАК Регистратор,
	ДД.АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
	ДД.ЗаказКлиента КАК ЗаказКлиента,
	ДД.РасчетныйДокумент КАК РасчетныйДокумент,
	ДД.Валюта КАК Валюта,
	0. КАК Сумма,
	ДД.КВозврату КАК КВозврату,
	ДД.Долг КАК Долг,
	ДД.ДолгУпр КАК ДолгУпр,
	ДД.ДолгРегл КАК ДолгРегл,
	ДД.Предоплата КАК Предоплата,
	ДД.ПредоплатаУпр КАК ПредоплатаУпр,
	ДД.ПредоплатаРегл КАК ПредоплатаРегл,
	ДД.ЗалогЗаТару КАК ЗалогЗаТару,
	ДД.ЗалогЗаТаруРегл КАК ЗалогЗаТаруРегл,
	ДД.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
	ДД.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств,
	ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК УдалитьДатаПлатежа,
	ДД.ДатаПлатежа КАК ДатаПлатежа,
	НЕОПРЕДЕЛЕНО КАК ДокументОтгрузки,
	ЛОЖЬ КАК РасчетПоКурсуДокумента,
	1 КАК ИндексДвиженияВзаимозачета,
	0 КАК ПриоритетРасчетногоДокумента
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоДокументам КАК ДД

	ВНУТРЕННЕЕ СОЕДИНЕНИЕ АктуальныеАналитики КАК АктуальныеАналитики
	ПО ДД.Регистратор = АктуальныеАналитики.Регистратор
		И ДД.АналитикаУчетаПоПартнерам = АктуальныеАналитики.АналитикаУчетаПоПартнерам
		И ДД.ЗаказКлиента = АктуальныеАналитики.ЗаказКлиента
		И ДД.Валюта = АктуальныеАналитики.Валюта

УПОРЯДОЧИТЬ ПО
	Период, Приоритет, Регистратор
Показать

В глаз "врезалась" ВТ "ОстаткиПоЛИФО" - именно эта заноза вешает скуль... время выполнения запроса порядка 25 минут! В таблице всего 304 537 записей.

Подскажите, куда копать? В релизе 11.3.4.185 тот же запрос, видимо "проблема не в бобине".
Найденные решения
16. triviumfan 97 02.03.18 11:58 Сейчас в теме
(15) Попробую создать индекс средствами sql на тестовой базе, отпишусь о результате.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Xershi 1555 02.03.18 00:11 Сейчас в теме
(1) снять галку расчетов при проведении документов и выполнении отчетов?
4. triviumfan 97 02.03.18 00:22 Сейчас в теме
(3) Не понял, причем тут галка... Вы про 1й пункт? речь про константы "АктуализироватьВзаиморасчетыПриФормированииОтчетов" и "Актуализировать взаиморасчеты при проведении документов"? Так они итак ложны. А если их активировать, боюсь, что будет ещё хуже... 50 человек будут формировать отчет и каждый будет фоновое запускать =\
5. Xershi 1555 02.03.18 01:11 Сейчас в теме
(4) сделайте ТИИ может полегчает. А так объем то какой? Может надо оптимизацию скуля еще сделать?
2. triviumfan 97 01.03.18 23:32 Сейчас в теме
ХП:
exec sp_executesql N'SEL ECT DISTINCT
T1.Fld16125_TYPE,
T1.Fld16125_RTRef,
T1.Fld16125_RRRef,
SUBSTRING(MAX(T3._RecorderTRef + T3._RecorderRRef),1,4),
SUBSTRING(MAX(T3._RecorderTRef + T3._RecorderRRef),5,16),
MAX(T3._Period)
FR OM (SELECT
T2._Fld16125_TYPE AS Fld16125_TYPE,
T2._Fld16125_RTRef AS Fld16125_RTRef,
T2._Fld16125_RRRef AS Fld16125_RRRef,
CAST(SUM(T2._Fld16128) AS NUMERIC(33, 8)) AS Fld16128Balance_,
CAST(SUM(T2._Fld16129) AS NUMERIC(33, 8)) AS Fld16129Balance_,
CAST(SUM(T2._Fld16130) AS NUMERIC(33, 8)) AS Fld16130Balance_,
CAST(SUM(T2._Fld16131) AS NUMERIC(33, 8)) AS Fld16131Balance_,
CAST(SUM(T2._Fld16132) AS NUMERIC(33, 8)) AS Fld16132Balance_,
CAST(SUM(T2._Fld16133) AS NUMERIC(33, 8)) AS Fld16133Balance_,
CAST(SUM(T2._Fld16134) AS NUMERIC(33, 8)) AS Fld16134Balance_,
CAST(SUM(T2._Fld16135) AS NUMERIC(33, 8)) AS Fld16135Balance_,
CAST(SUM(T2._Fld16136) AS NUMERIC(33, 8)) AS Fld16136Balance_,
CAST(SUM(T2._Fld16137) AS NUMERIC(33, 8)) AS Fld16137Balance_,
CAST(SUM(T2._Fld16138) AS NUMERIC(33, 8)) AS Fld16138Balance_
FR OM dbo._AccumRgT16142 T2
WHERE ((T2._Fld706 = @P1)) AND (T2._Period = @P2 AND (T2._Fld16128 <> @P3 OR T2._Fld16129 <> @P4 OR T2._Fld16130 <> @P5 OR T2._Fld16131 <> @P6 OR T2._Fld16132 <> @P7 OR T2._Fld16133 <> @P8 OR T2._Fld16134 <> @P9 OR T2._Fld16135 <> @P10 OR T2._Fld16136 <> @P11 OR T2._Fld16137 <> @P12 OR T2._Fld16138 <> @P13) AND (T2._Fld16128 <> @P14 OR T2._Fld16129 <> @P15 OR T2._Fld16130 <> @P16 OR T2._Fld16131 <> @P17 OR T2._Fld16132 <> @P18 OR T2._Fld16133 <> @P19 OR T2._Fld16134 <> @P20 OR T2._Fld16135 <> @P21 OR T2._Fld16136 <> @P22 OR T2._Fld16137 <> @P23 OR T2._Fld16138 <> @P24))
GROUP BY T2._Fld16125_TYPE,
T2._Fld16125_RTRef,
T2._Fld16125_RRRef
HAVING (CAST(SUM(T2._Fld16128) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16129) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16130) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16131) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16132) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16133) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16134) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16135) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16136) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16137) AS NUMERIC(33, 8))) <> 0.0 OR (CAST(SUM(T2._Fld16138) AS NUMERIC(33, 8))) <> 0.0) T1
INNER JOIN dbo._AccumRg16122 T3
ON ((T3._Period < @P25) AND (T3._Fld16125_TYPE = T1.Fld16125_TYPE AND T3._Fld16125_RTRef = T1.Fld16125_RTRef AND T3._Fld16125_RRRef = T1.Fld16125_RRRef))
WH ERE ((T3._Fld706 = @P26)) AND ((T1.Fld16125_TYPE <> 0x01) AND (((T3._RecordKind = @P27) AND (T3._Fld16131 > @P28)) OR ((T3._RecordKind = @P29) AND (T3._Fld16134 > @P30))))
GROUP BY T1.Fld16125_TYPE,
T1.Fld16125_RTRef,
T1.Fld16125_RRRef',N'@P1 numeric(10),@P2 datetime2(3),@P3 numeric(10),@P4 numeric(10),@P5 numeric(10),@P6 numeric(10),@P7 numeric(10),@P8 numeric(10),@P9 numeric(10),@P10 numeric(10),@P11 numeric(10),@P12 numeric(10),@P13 numeric(10),@P14 numeric(10),@P15 numeric(10),@P16 numeric(10),@P17 numeric(10),@P18 numeric(10),@P19 numeric(10),@P20 numeric(10),@P21 numeric(10),@P22 numeric(10),@P23 numeric(10),@P24 numeric(10),@P25 datetime2(3),@P26 numeric(10),@P27 numeric(10),@P28 numeric(10),@P29 numeric(10),@P30 numeric(10)',0,'4018-02-01 00:00:00',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'4018-02-01 00:00:00',0,0,0,1,0
Показать

Что скажете? Ведь это типовой запрос... и "ложит на лопатки".
План выполнения
6. Maxisussr 02.03.18 09:47 Сейчас в теме
(2)
Тут на индекс сик много уходит, попробуйте реиндексацию этой таблицы сделать и после этого посмотрите время.
Плюс как оборудование в этот момент нагружено? Где узкое место?
7. triviumfan 97 02.03.18 10:03 Сейчас в теме
(6) Так на скан/сик и должно много "уходить". И вообще тут не понять, на что реально уходит время, это всего лишь план. Реиндексацию делать некогда, БД всегда активна =\
9. Maxisussr 02.03.18 10:09 Сейчас в теме
(7)
Ну можно на копии такое провернуть.
А с оборудованием что? с диска долго читает ? или проц?
В скуле есть такое

sel ect * fr om sys.dm_exec_query_stats

выполните ее для вашей БД, посмотрите на этот запрос там. что он грузит больше всего.
14. triviumfan 97 02.03.18 11:27 Сейчас в теме
(9) Там ведь не определить, что за запрос грузит сервер. Если только по дате создания...
sel ect 
* 
fr om sys.dm_exec_query_stats
order by creation_time
Прикрепленные файлы:
Результат.csv
8. triviumfan 97 02.03.18 10:05 Сейчас в теме
Я не понимаю, почему остатки берутся по всем партнерам, хотя я зачитываю оплату по конкретному партнеру конкретной реализации. Зачем мне тут ОстаткиПоЛИФО всех партнеров?!
Ещё момент - остатков по документам в разрезе документов порядка 12тыс. Почему то они не "закрылись" ещё с 2015 года. Данные ведь по РасчетыСКлиентами и РасчетыСКлиентамиПоДокументам в разрезе партнера должны совпадать?
10. Maxisussr 02.03.18 10:10 Сейчас в теме
(8)
Запили доп условие в регистр остатков и сравни время
11. triviumfan 97 02.03.18 10:19 Сейчас в теме
(10) добавил условие по партнеру
РегистрНакопления.РасчетыСКлиентамиПоДокументам.Остатки(&НачалоПериода, АналитикаУчетаПоПартнерам.Партнер = &Партнер) КАК ДД

Запрос выполнился мгновенно.
12. triviumfan 97 02.03.18 10:45 Сейчас в теме
(10) Корректно ли будет добавить условие в виртуальную таблицу?
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ДД.РасчетныйДокумент КАК Ссылка,
	МАКСИМУМ(Периодика.Регистратор) КАК Регистратор,
	МАКСИМУМ(Периодика.Период) КАК Период
ПОМЕСТИТЬ ОстаткиПоЛИФО
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоДокументам.Остатки(&НачалоПериода, АналитикаУчетаПоПартнерам В (Выбрать КлючАналитики Из АналитикиРасчета)) КАК ДД
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентамиПоДокументам КАК Периодика
		ПО (Периодика.Период < &НачалоПериода)
			И (Периодика.РасчетныйДокумент = ДД.РасчетныйДокумент)
ГДЕ
	ДД.РасчетныйДокумент <> НЕОПРЕДЕЛЕНО
	И (Периодика.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
				И Периодика.Долг > 0
			ИЛИ Периодика.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
				И Периодика.Предоплата > 0)

СГРУППИРОВАТЬ ПО
	ДД.РасчетныйДокумент
;
Показать

Вроде везде соединение по ключу аналитики идёт, почему тогда в параметр не добавили разработчики? Или я логику запроса не понимаю.
Вызывается он как регламентным заданием, так и вручную при зачете оплаты. Соответственно в первом случае &ПоВсемАналитикам = Истина, а во втором/моём уже с отбором &АналитикиРасчета.

ИсходныйЗапрос = Новый Запрос(ИсходныйТекстЗапроса);
ИсходныйЗапрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
ИсходныйЗапрос.УстановитьПараметр("ОкончаниеПериода", ОкончаниеПериода);
ИсходныйЗапрос.УстановитьПараметр("АналитикиРасчета", АналитикиРасчета);
ИсходныйЗапрос.УстановитьПараметр("ПоВсемАналитикам", АналитикиРасчета = Неопределено);
ИсходныйЗапрос.УстановитьПараметр("ВалютаРеглУчета", Константы.ВалютаРегламентированногоУчета.Получить());
ИсходныйЗапрос.УстановитьПараметр("ВалютаУпрУчета", Константы.ВалютаУправленческогоУчета.Получить());
Показать
13. Maxisussr 02.03.18 11:02 Сейчас в теме
(12)
хз, конкретно тут не скажу.
А чем не нравится условие по партнеру ?
15. triviumfan 97 02.03.18 11:32 Сейчас в теме
(13) Да вроде все ок, но что-то "страхово".
Ещё заметил, что IntelliSense как бы намекает "Отсутствует индекс (влияние 99%), отсюда, видимо, и 2 nested loops.
Вероятно, нужно доп. составной индекс с измерением "Документ", для него по умолчанию установлено "Не индексировать".
Но я слабо знаком со всем этим, поэтому и создал тему...
16. triviumfan 97 02.03.18 11:58 Сейчас в теме
(15) Попробую создать индекс средствами sql на тестовой базе, отпишусь о результате.
17. triviumfan 97 02.03.18 15:49 Сейчас в теме
(16) Индекс довольно быстро создаётся, меньше минуты, и прирост колоссальный.
Правда это не помогло избавиться от вложенных циклов, да и сортировка видимо лишняя =\
Прикрепленные файлы:
18. Nadezhda_1 04.04.18 19:13 Сейчас в теме
Доброго времени суток!
Скажите, пожалуйста, проблему решили или нет?
У нас ситуация чуть получше, но пользователи не хотят ждать и минуту (зачет оплат, по их мнению, должен "пролетать" за пару-тройку секунд).
19. nano1c 172 28.12.22 16:50 Сейчас в теме
(18) Оказывается проблема до сих пор есть - у нас в какой-то момент стала дико виснуть база при зачете оплат и даже при печати УПД - схема, конечно, офлайн. Чтобы решить проблему (которую почемуто 1с не решила до сих пор), нужно добавить всего одно условие в 4 строки и модуле РаспределениеВзаиморасчетовВызовСервера:

две строки по поставщикам:
| РегистрНакопления.РасчетыСПоставщикамиПоДокументам.Остатки(&НачалоПериода, АналитикаУчетаПоПартнерам В (&АналитикиРасчета) ИЛИ &ПоВсемАналитикам) КАК ДД //Юрий АналитикаУчетаПоПартнерам В (&АналитикиРасчета) ИЛИ &ПоВсемАналитикам

и две по клиентам:
| РегистрНакопления.РасчетыСКлиентамиПоДокументам.Остатки(&НачалоПериода, АналитикаУчетаПоПартнерам В (&АналитикиРасчета) ИЛИ &ПоВсемАналитикам) КАК ДД //Юрий АналитикаУчетаПоПартнерам В (&АналитикиРасчета) ИЛИ &ПоВсемАналитикам
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот