Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 10:31

УТ 10.3: В SQL-версии базы отчёт "Задолженность по срокам долга" (Латвия) падает с ошибкой из-за мно

Автор PavelVaskan, 01 мар 2024, 14:23

0 Пользователей и 1 гость просматривают эту тему.

PavelVaskan

УТ 10.3: В SQL-версии базы отчёт "Задолженность по срокам долга" (Латвия), сделанный с помощью построителя, использующего универсальный отчёт, падает с ошибкой из-за множественности таблиц и полей.

При выборе параметра Интервал с большим множеством интервалов отчёт выдаёт ошибку:



Текст сообщения об ошибке:

{Отчет.УниверсальныйОтчет.МодульОбъекта(134)}: Ошибка при вызове метода контекста (Вывести)      
ПостроительОтчета.Вывести (ТабличныйДокумент);
по причине: Ошибка выполнения запроса           по причине: Ошибка при выполнении операции над данными:
Microsoft SQL Server Native Client 11.0: Internal error: An expression services limit has been reached. Please look for potentially complex expressions in your query, and try to simplify them.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=2, Severity=11, native=8632, line=1

Перевод последней (английской) части сообщения:
Собственный клиент Microsoft SQL Server 11.0: внутренняя ошибка: достигнуто ограничение служб выражений. Найдите в запросе потенциально сложные выражения и попытайтесь их упростить.
HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=2, Severity=11, native=8632, line=1


Если погуглить, гугл выдаёт:
Эта проблема возникает, поскольку SQL Server ограничивает количество идентификаторов и констант, которые могут содержаться в одном выражении запроса. Лимит составляет 65 535. Проверка количества идентификаторов и констант выполняется после того, как SQL Server развернет все ссылочные идентификаторы и константы. В SQL Server 2005 и более поздних версиях запросы внутренне нормализованы и упрощены. И это включает в себя * (звездочка), вычисленные столбцы и т. Д. Чтобы обойти эту проблему, перепишите запрос. Укажите меньшее число идентификаторов и констант в наибольшем выражении запроса. Необходимо убедиться, что количество идентификаторов и констант в каждом выражении запроса не превышает предел. Для этого может потребоваться разбить запрос на несколько отдельных запросов. Затем создайте временный промежуточный результат.


Текст запроса "аппликационно склеивается-собирается" кодом... Выглядит с 7-ю интервалами так:

ВЫБРАТЬ
ОстаткиПоПериодам.Организация КАК Организация,
ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Организация) КАК ОрганизацияПредставление,
ОстаткиПоПериодам.Контрагент КАК Контрагент,
ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Контрагент) КАК КонтрагентПредставление,
ОстаткиПоПериодам.ДоговорКонтрагента КАК ДоговорКонтрагента,
ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ДоговорКонтрагента) КАК ДоговорКонтрагентаПредставление,
ОстаткиПоПериодам.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ДоговорКонтрагента.ВалютаВзаиморасчетов) КАК ВалютаВзаиморасчетовПредставление,
ОстаткиПоПериодам.Сделка КАК Сделка,
ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.Сделка) КАК СделкаПредставление,
ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
ПРЕДСТАВЛЕНИЕ(ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом) КАК ДокументРасчетовСКонтрагентомПредставление,
ОстаткиПоПериодам.ОстатокДолга0 КАК ОстатокДолга,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга0 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокДолгаУпр,
ОстаткиПоПериодам.ОстатокДолга1 КАК ОстатокПериода1,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга1 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода1Упр,
ОстаткиПоПериодам.ОстатокДолга2 КАК ОстатокПериода2,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга2 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода2Упр,
ОстаткиПоПериодам.ОстатокДолга3 КАК ОстатокПериода3,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга3 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода3Упр,
ОстаткиПоПериодам.ОстатокДолга4 КАК ОстатокПериода4,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга4 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода4Упр,
ОстаткиПоПериодам.ОстатокДолга5 КАК ОстатокПериода5,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга5 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода5Упр,
ОстаткиПоПериодам.ОстатокДолга6 КАК ОстатокПериода6,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга6 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода6Упр,
ОстаткиПоПериодам.ОстатокДолга7 КАК ОстатокПериода7,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга7 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода7Упр,
ВЫБОР
КОГДА ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.Подразделение ЕСТЬ NULL
ТОГДА ТаблЧастьРасшифровкаПлатежа.Подразделение
ИНАЧЕ ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.Подразделение
КОНЕЦ КАК ДокументРасчетовСКонтрагентомПодразделение,
ОстаткиПоПериодам.ОбщийДолг КАК ОбщийДолг,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОбщийДолг * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОбщийДолгУпр
//ПОЛЯ_СВОЙСТВА
//ПОЛЯ_КАТЕГОРИИ
{ВЫБРАТЬ
Организация.*,
Контрагент.*,
ДоговорКонтрагента.*,
ВалютаВзаиморасчетов.*,
Сделка.*,
ДокументРасчетовСКонтрагентом.*,
ОбщийДолг,
ОбщийДолгУпр,
ОстаткиПоПериодам.ОстатокДолга0 КАК ОстатокДолга,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга0 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокДолгаУпр,
ОстаткиПоПериодам.ОстатокДолга1 КАК ОстатокПериода1,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга1 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода1Упр,
ОстаткиПоПериодам.ОстатокДолга2 КАК ОстатокПериода2,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга2 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода2Упр,
ОстаткиПоПериодам.ОстатокДолга3 КАК ОстатокПериода3,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга3 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода3Упр,
ОстаткиПоПериодам.ОстатокДолга4 КАК ОстатокПериода4,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга4 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода4Упр,
ОстаткиПоПериодам.ОстатокДолга5 КАК ОстатокПериода5,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга5 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода5Упр,
ОстаткиПоПериодам.ОстатокДолга6 КАК ОстатокПериода6,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга6 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода6Упр,
ОстаткиПоПериодам.ОстатокДолга7 КАК ОстатокПериода7,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга7 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода7Упр,
ВЫБОР
КОГДА ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.Подразделение ЕСТЬ NULL
ТОГДА ТаблЧастьРасшифровкаПлатежа.Подразделение
ИНАЧЕ ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.Подразделение
КОНЕЦ КАК ДокументРасчетовСКонтрагентомПодразделение,
ОстаткиПоПериодам.ОбщийДолг КАК ОбщийДолг,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОбщийДолг * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОбщийДолгУпр
//ПСЕВДОНИМЫ_СВОЙСТВА
//ПСЕВДОНИМЫ_КАТЕГОРИИ
}
ИЗ
(ВЫБРАТЬ
ОстатокИОбороты.Организация,
ОстатокИОбороты.Контрагент,
ОстатокИОбороты.ДоговорКонтрагента,
ОстатокИОбороты.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
ОстатокИОбороты.Сделка,
ОстатокИОбороты.ДокументРасчетовСКонтрагентом,
ОстатокИОбороты.ОбщийДолг КАК ОбщийДолг,
ОстатокИОбороты.ОстатокДолга0,
ВЫБОР
КОГДА ОстатокИОбороты.УвеличениеДолга1 = ОстатокИОбороты.УвеличениеДолга2
ТОГДА 0
КОГДА ОстатокИОбороты.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
И (НЕ ОстатокИОбороты.УвеличениеДолга1 = ОстатокИОбороты.ОстатокДолга0)
ТОГДА 0
ИНАЧЕ ОстатокИОбороты.УвеличениеДолга1
КОНЕЦ КАК ОстатокДолга1,
ВЫБОР
КОГДА ОстатокИОбороты.УвеличениеДолга2 = ОстатокИОбороты.УвеличениеДолга3
ТОГДА 0
КОГДА ОстатокИОбороты.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
И (НЕ ОстатокИОбороты.УвеличениеДолга2 = ОстатокИОбороты.ОстатокДолга0)
ТОГДА 0
ИНАЧЕ ОстатокИОбороты.УвеличениеДолга2
КОНЕЦ КАК ОстатокДолга2,
ВЫБОР
КОГДА ОстатокИОбороты.УвеличениеДолга3 = ОстатокИОбороты.УвеличениеДолга4
ТОГДА 0
КОГДА ОстатокИОбороты.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
И (НЕ ОстатокИОбороты.УвеличениеДолга3 = ОстатокИОбороты.ОстатокДолга0)
ТОГДА 0
ИНАЧЕ ОстатокИОбороты.УвеличениеДолга3
КОНЕЦ КАК ОстатокДолга3,
ВЫБОР
КОГДА ОстатокИОбороты.УвеличениеДолга4 = ОстатокИОбороты.УвеличениеДолга5
ТОГДА 0
КОГДА ОстатокИОбороты.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
И (НЕ ОстатокИОбороты.УвеличениеДолга4 = ОстатокИОбороты.ОстатокДолга0)
ТОГДА 0
ИНАЧЕ ОстатокИОбороты.УвеличениеДолга4
КОНЕЦ КАК ОстатокДолга4,
ВЫБОР
КОГДА ОстатокИОбороты.УвеличениеДолга5 = ОстатокИОбороты.УвеличениеДолга6
ТОГДА 0
КОГДА ОстатокИОбороты.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
И (НЕ ОстатокИОбороты.УвеличениеДолга5 = ОстатокИОбороты.ОстатокДолга0)
ТОГДА 0
ИНАЧЕ ОстатокИОбороты.УвеличениеДолга5
КОНЕЦ КАК ОстатокДолга5,
ВЫБОР
КОГДА ОстатокИОбороты.УвеличениеДолга6 = ОстатокИОбороты.УвеличениеДолга7
ТОГДА 0
КОГДА ОстатокИОбороты.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
И (НЕ ОстатокИОбороты.УвеличениеДолга6 = ОстатокИОбороты.ОстатокДолга0)
ТОГДА 0
ИНАЧЕ ОстатокИОбороты.УвеличениеДолга6
КОНЕЦ КАК ОстатокДолга6,
ВЫБОР
КОГДА ОстатокИОбороты.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
И (НЕ ОстатокИОбороты.УвеличениеДолга7 = ОстатокИОбороты.ОстатокДолга0)
ТОГДА 0
ИНАЧЕ ОстатокИОбороты.УвеличениеДолга7
КОНЕЦ КАК ОстатокДолга7
ИЗ
(ВЫБРАТЬ
Остатки.Организация,
Остатки.Контрагент,
Остатки.ДоговорКонтрагента,
Остатки.Сделка,
Остатки.ДокументРасчетовСКонтрагентом,
Остатки.ОбщийДолг КАК ОбщийДолг,
Остатки.ОстатокДолга0,
ВЫБОР
КОГДА Обороты1.УвеличениеДолга1 ЕСТЬ NULL И (Остатки.ДатаОплаты МЕЖДУ &НачалоИнтервала1 И &КонецИнтервала1)
ТОГДА Остатки.ОстатокДолга0
КОГДА Обороты1.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
ТОГДА Обороты1.УвеличениеДолга1
КОГДА Обороты1.ДатаОплаты МЕЖДУ &НачалоИнтервала1 И &КонецИнтервала1
ТОГДА Остатки.ОстатокДолга0
ИНАЧЕ 0
КОНЕЦ КАК УвеличениеДолга1,
ВЫБОР
КОГДА Обороты2.УвеличениеДолга2 ЕСТЬ NULL И (Остатки.ДатаОплаты МЕЖДУ &НачалоИнтервала2 И &КонецИнтервала2)
ТОГДА Остатки.ОстатокДолга0
КОГДА Обороты2.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
ТОГДА Обороты2.УвеличениеДолга2
КОГДА Обороты2.ДатаОплаты МЕЖДУ &НачалоИнтервала2 И &КонецИнтервала2
ТОГДА Остатки.ОстатокДолга0
ИНАЧЕ 0
КОНЕЦ КАК УвеличениеДолга2,
ВЫБОР
КОГДА Обороты3.УвеличениеДолга3 ЕСТЬ NULL И (Остатки.ДатаОплаты МЕЖДУ &НачалоИнтервала3 И &КонецИнтервала3)
ТОГДА Остатки.ОстатокДолга0
КОГДА Обороты3.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
ТОГДА Обороты3.УвеличениеДолга3
КОГДА Обороты3.ДатаОплаты МЕЖДУ &НачалоИнтервала3 И &КонецИнтервала3
ТОГДА Остатки.ОстатокДолга0
ИНАЧЕ 0
КОНЕЦ КАК УвеличениеДолга3,
ВЫБОР
КОГДА Обороты4.УвеличениеДолга4 ЕСТЬ NULL И (Остатки.ДатаОплаты МЕЖДУ &НачалоИнтервала4 И &КонецИнтервала4)
ТОГДА Остатки.ОстатокДолга0
КОГДА Обороты4.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
ТОГДА Обороты4.УвеличениеДолга4
КОГДА Обороты4.ДатаОплаты МЕЖДУ &НачалоИнтервала4 И &КонецИнтервала4
ТОГДА Остатки.ОстатокДолга0
ИНАЧЕ 0
КОНЕЦ КАК УвеличениеДолга4,
ВЫБОР
КОГДА Обороты5.УвеличениеДолга5 ЕСТЬ NULL И (Остатки.ДатаОплаты МЕЖДУ &НачалоИнтервала5 И &КонецИнтервала5)
ТОГДА Остатки.ОстатокДолга0
КОГДА Обороты5.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
ТОГДА Обороты5.УвеличениеДолга5
КОГДА Обороты5.ДатаОплаты МЕЖДУ &НачалоИнтервала5 И &КонецИнтервала5
ТОГДА Остатки.ОстатокДолга0
ИНАЧЕ 0
КОНЕЦ КАК УвеличениеДолга5,
ВЫБОР
КОГДА Обороты6.УвеличениеДолга6 ЕСТЬ NULL И (Остатки.ДатаОплаты МЕЖДУ &НачалоИнтервала6 И &КонецИнтервала6)
ТОГДА Остатки.ОстатокДолга0
КОГДА Обороты6.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
ТОГДА Обороты6.УвеличениеДолга6
КОГДА Обороты6.ДатаОплаты МЕЖДУ &НачалоИнтервала6 И &КонецИнтервала6
ТОГДА Остатки.ОстатокДолга0
ИНАЧЕ 0
КОНЕЦ КАК УвеличениеДолга6,
ВЫБОР
КОГДА Обороты7.УвеличениеДолга7 ЕСТЬ NULL И (Остатки.ДатаОплаты МЕЖДУ &НачалоИнтервала7 И &КонецИнтервала7)
ТОГДА Остатки.ОстатокДолга0
КОГДА Обороты7.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
ТОГДА Обороты7.УвеличениеДолга7
КОГДА Обороты7.ДатаОплаты МЕЖДУ &НачалоИнтервала7 И &КонецИнтервала7
ТОГДА Остатки.ОстатокДолга0
ИНАЧЕ 0
КОНЕЦ КАК УвеличениеДолга7
ИЗ
(ВЫБРАТЬ
ВзаиморасчетыПоДокументамОстатки.Организация КАК Организация,
ВзаиморасчетыПоДокументамОстатки.Контрагент КАК Контрагент,
ВзаиморасчетыПоДокументамОстатки.ДоговорКонтрагента КАК ДоговорКонтрагента,
ВзаиморасчетыПоДокументамОстатки.Сделка КАК Сделка,
ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
ВЫБОР
КОГДА (ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты ЕСТЬ NULL
ИЛИ ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты = &ПустаяДата)
И ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом.Дата <= &ДатаОстатков
ТОГДА ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток
КОГДА ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты <= &ДатаОстатков
ТОГДА ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток
ИНАЧЕ 0
КОНЕЦ КАК ОстатокДолга0,
ВзаиморасчетыПоДокументамОстатки.СуммаВзаиморасчетовОстаток КАК ОбщийДолг,
ВЫБОР
КОГДА ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты ЕСТЬ NULL
ИЛИ ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты = &ПустаяДата
ТОГДА ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом.Дата
ИНАЧЕ ВзаиморасчетыПоДокументамОстатки.ДокументРасчетовСКонтрагентом.ДатаОплаты
КОНЕЦ КАК ДатаОплаты
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Остатки(&ДатаОстатков, {(Организация).* КАК Организация, (Контрагент).* КАК Контрагент, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (Сделка).* КАК Сделка}) КАК ВзаиморасчетыПоДокументамОстатки
ГДЕ
ВЫБОР
КОГДА &ПереключательЗадолженность = 1
ТОГДА ВзаиморасчетыПоДокументамОстатки.ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)
ИЛИ ВзаиморасчетыПоДокументамОстатки.ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СКомиссионером)
КОГДА &ПереключательЗадолженность = 2
ТОГДА ВзаиморасчетыПоДокументамОстатки.ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком)
ИЛИ ВзаиморасчетыПоДокументамОстатки.ДоговорКонтрагента.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СКомитентом)
ИНАЧЕ ИСТИНА
КОНЕЦ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ВЫБРАТЬ
ВзаиморасчетыБезДокументовОбороты.Организация,
ВзаиморасчетыБезДокументовОбороты.Контрагент,
ВзаиморасчетыБезДокументовОбороты.ДоговорКонтрагента,
ВзаиморасчетыБезДокументовОбороты.Сделка,
НЕОПРЕДЕЛЕНО,
ВзаиморасчетыБезДокументовОбороты.СуммаВзаиморасчетовОстаток,
НЕОПРЕДЕЛЕНО
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&КонецИнтервала7, (НЕ ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом)) КАК ВзаиморасчетыБезДокументовОбороты) КАК Обороты7
ПО
Остатки.Организация = Обороты7.Организация
И Остатки.Контрагент = Обороты7.Контрагент
И Остатки.ДоговорКонтрагента = Обороты7.ДоговорКонтрагента
И Остатки.Сделка = Обороты7.Сделка
И Остатки.ДокументРасчетовСКонтрагентом = Обороты7.ДокументРасчетовСКонтрагентом) КАК ОстатокИОбороты) КАК ОстаткиПоПериодам
//СОЕДИНЕНИЯ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОстатков, ) КАК КурсыВалют
ПО (КурсыВалют.Валюта = ОстаткиПоПериодам.ДоговорКонтрагента.ВалютаВзаиморасчетов)
{ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ДенежныйДокументРасшифровкаПлатежа.Подразделение КАК Подразделение,
ДенежныйДокументРасшифровкаПлатежа.Ссылка КАК Документ
ИЗ
Документ.ПлатежноеПоручениеВходящее.РасшифровкаПлатежа КАК ДенежныйДокументРасшифровкаПлатежа

ОБЪЕДИНИТЬ

ВЫБРАТЬ
ДенежныйДокументРасшифровкаПлатежа.Подразделение,
ДенежныйДокументРасшифровкаПлатежа.Ссылка
ИЗ
Документ.ПлатежноеПоручениеИсходящее.РасшифровкаПлатежа КАК ДенежныйДокументРасшифровкаПлатежа

ОБЪЕДИНИТЬ

ВЫБРАТЬ
ДенежныйДокументРасшифровкаПлатежа.Подразделение,
ДенежныйДокументРасшифровкаПлатежа.Ссылка
ИЗ
Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ДенежныйДокументРасшифровкаПлатежа

ОБЪЕДИНИТЬ

ВЫБРАТЬ
ДенежныйДокументРасшифровкаПлатежа.Подразделение,
ДенежныйДокументРасшифровкаПлатежа.Ссылка
ИЗ
Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК ДенежныйДокументРасшифровкаПлатежа) КАК ТаблЧастьРасшифровкаПлатежа
ПО ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом = ТаблЧастьРасшифровкаПлатежа.Документ},
РегистрСведений.КурсыВалют.СрезПоследних(&ДатаОстатков, Валюта = &ВалютаУпрУчета) КАК КурсВалютыУпрУчета
ГДЕ
НЕ ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом = НЕОПРЕДЕЛЕНО
{ГДЕ
ОстаткиПоПериодам.ОстатокДолга0 КАК ОстатокДолга,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга0 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокДолгаУпр,
ОстаткиПоПериодам.ОстатокДолга1 КАК ОстатокПериода1,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга1 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода1Упр,
ОстаткиПоПериодам.ОстатокДолга2 КАК ОстатокПериода2,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга2 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода2Упр,
ОстаткиПоПериодам.ОстатокДолга3 КАК ОстатокПериода3,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга3 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода3Упр,
ОстаткиПоПериодам.ОстатокДолга4 КАК ОстатокПериода4,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга4 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода4Упр,
ОстаткиПоПериодам.ОстатокДолга5 КАК ОстатокПериода5,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга5 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода5Упр,
ОстаткиПоПериодам.ОстатокДолга6 КАК ОстатокПериода6,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга6 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода6Упр,
ОстаткиПоПериодам.ОстатокДолга7 КАК ОстатокПериода7,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОстатокДолга7 * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОстатокПериода7Упр,
ВЫБОР
КОГДА ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.Подразделение ЕСТЬ NULL
ТОГДА ТаблЧастьРасшифровкаПлатежа.Подразделение
ИНАЧЕ ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.Подразделение
КОНЕЦ КАК ДокументРасчетовСКонтрагентомПодразделение,
ОстаткиПоПериодам.ОбщийДолг КАК ОбщийДолг,
ВЫРАЗИТЬ(ОстаткиПоПериодам.ОбщийДолг * (ВЫБОР
КОГДА КурсыВалют.Курс = 1
ТОГДА 1/(КурсыВалют.Курс * КурсыВалют.Кратность)
ИНАЧЕ КурсыВалют.Курс * КурсыВалют.Кратность
КОНЕЦ) / (КурсВалютыУпрУчета.Курс * КурсВалютыУпрУчета.Кратность) КАК ЧИСЛО(15, 2)) КАК ОбщийДолгУпр,
ОстаткиПоПериодам.ДокументРасчетовСКонтрагентом.*,
ТаблЧастьРасшифровкаПлатежа.Подразделение.*

//УСЛОВИЯ_СВОЙСТВА
//УСЛОВИЯ_КАТЕГОРИИ
}
{УПОРЯДОЧИТЬ ПО
Организация.*,
Контрагент.*,
ДоговорКонтрагента.*,
Сделка.*,
ДокументРасчетовСКонтрагентом.*,
ВалютаВзаиморасчетов.*,
ДокументРасчетовСКонтрагентомПодразделение.*,
ОстатокДолга,
ОстатокДолгаУпр,
ОбщийДолг,
ОбщийДолгУпр,
ОстатокПериода1,
ОстатокПериода1Упр,
ОстатокПериода2,
ОстатокПериода2Упр,
ОстатокПериода3,
ОстатокПериода3Упр,
ОстатокПериода4,
ОстатокПериода4Упр,
ОстатокПериода5,
ОстатокПериода5Упр,
ОстатокПериода6,
ОстатокПериода6Упр,
ОстатокПериода7,
ОстатокПериода7Упр
//ПСЕВДОНИМЫ_СВОЙСТВА
//ПСЕВДОНИМЫ_КАТЕГОРИИ
}
ИТОГИ
СУММА(ОстатокДолга),
СУММА(ОстатокДолгаУпр),
СУММА(ОбщийДолг),
СУММА(ОбщийДолгУпр),
СУММА(ОстатокПериода1),
СУММА(ОстатокПериода1Упр),
СУММА(ОстатокПериода2),
СУММА(ОстатокПериода2Упр),
СУММА(ОстатокПериода3),
СУММА(ОстатокПериода3Упр),
СУММА(ОстатокПериода4),
СУММА(ОстатокПериода4Упр),
СУММА(ОстатокПериода5),
СУММА(ОстатокПериода5Упр),
СУММА(ОстатокПериода6),
СУММА(ОстатокПериода6Упр),
СУММА(ОстатокПериода7),
СУММА(ОстатокПериода7Упр)
//ИТОГИ_СВОЙСТВА
//ИТОГИ_КАТЕГОРИИ
ПО
ОБЩИЕ
{ИТОГИ ПО
Организация.*,
Контрагент.*,
ДоговорКонтрагента.*,
Контрагент.*,
Сделка.*,
ДокументРасчетовСКонтрагентом.*,
ВалютаВзаиморасчетов.*,
ДокументРасчетовСКонтрагентомПодразделение.*
//ПСЕВДОНИМЫ_СВОЙСТВА
//ПСЕВДОНИМЫ_КАТЕГОРИИ
}

Не понимаю, как можно ещё получить интервалы (остатки с оборотами) другим способом (меньшим количеством таблиц)???

Спасибо, если кто чего посоветует!


Настройка периода выглядит так (сорри за рисование: перевёл с латышского):


Максим75

PavelVaskan, вложенность вложенных запросов 4 (вроде так насчитал). Скорее всего здесь и порылась собака.
Выводите вложенные запросы во временные таблицы и работайте с ними.

PavelVaskan

Цитата: Максим75 от 01 мар 2024, 14:52PavelVaskan, вложенность вложенных запросов 4 (вроде так насчитал). Скорее всего здесь и порылась собака.
Выводите вложенные запросы во временные таблицы и работайте с ними.


Спасибо! Попробую...

PavelVaskan

Цитата: Максим75 от 01 мар 2024, 14:52PavelVaskan, вложенность вложенных запросов 4 (вроде так насчитал). Скорее всего здесь и порылась собака.
Выводите вложенные запросы во временные таблицы и работайте с ними.


Огромное спасибо, ПОМОГЛО!  :zebzdr:  :zebzdr:  :zebzdr:

Максим75

PavelVaskan, замечательно.
видимо СУБД имеет ограничение на вложенность запросов.

Теги: #1c 8.3 #УТ10.3 #sql 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск