|
Построенный запрос использует слишком много таблиц... Что в запросе можно изменить? | ☑ | ||
---|---|---|---|---|
0
slafor
30.12.19
✎
10:29
|
УПП. Есть запрос:
"ВЫБРАТЬ ОборотыБюджетов.Период, ОборотыБюджетов.Регистратор, ОборотыБюджетов.СтатьяОборотов, ОборотыБюджетов.Контрагент, ОборотыБюджетов.Валюта, ОборотыБюджетов.ДокументОснование, ВЫБОР КОГДА ОборотыБюджетов.ДокументОснование ССЫЛКА Документ.ПлатежноеПоручениеИсходящее ИЛИ ОборотыБюджетов.ДокументОснование ССЫЛКА Документ.ПлатежноеПоручениеВходящее ТОГДА ВЫРАЗИТЬ(ОборотыБюджетов.ДокументОснование.Комментарий КАК СТРОКА(100)) ИНАЧЕ NULL КОНЕЦ КАК Комментарий, СУММА(ВЫБОР КОГДА ОборотыБюджетов.ДокументОснование ССЫЛКА Документ.ПлатежноеПоручениеВходящее ТОГДА ОборотыБюджетов.СуммаУпр ИНАЧЕ 0 КОНЕЦ) КАК СуммаБанкПриход, СУММА(ВЫБОР КОГДА ОборотыБюджетов.ДокументОснование ССЫЛКА Документ.ПлатежноеПоручениеИсходящее ТОГДА ОборотыБюджетов.СуммаУпр ИНАЧЕ 0 КОНЕЦ) КАК СуммаБанкРасход, СУММА(ОборотыБюджетов.СуммаУпр) КАК СуммаУпр, СУММА(ОборотыБюджетов.ВалютнаяСумма) КАК ВалютнаяСумма ИЗ РегистрНакопления.ОборотыБюджетов КАК ОборотыБюджетов ГДЕ ОборотыБюджетов.Период МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) СГРУППИРОВАТЬ ПО ОборотыБюджетов.Период, ОборотыБюджетов.Регистратор, ОборотыБюджетов.СтатьяОборотов, ОборотыБюджетов.Контрагент, ОборотыБюджетов.Валюта, ОборотыБюджетов.ДокументОснование, ВЫБОР КОГДА ОборотыБюджетов.ДокументОснование ССЫЛКА Документ.ПлатежноеПоручениеИсходящее ИЛИ ОборотыБюджетов.ДокументОснование ССЫЛКА Документ.ПлатежноеПоручениеВходящее ТОГДА ВЫРАЗИТЬ(ОборотыБюджетов.ДокументОснование.Комментарий КАК СТРОКА(100)) ИНАЧЕ NULL КОНЕЦ". При выводе его через консоль отчетов выдает ошибку: "{Обработка.КонсольОтчетов.Форма.Форма.Форма(801)}: Ошибка при вызове метода контекста (Вывести) ПостроительОтчетов.Вывести(ЭлементыФормы.РезультатТабДокСвод); по причине: Ошибка выполнения запроса по причине: Построенный запрос к СУБД использует слишком много таблиц. Допустимо не более 256. Microsoft SQL Native Client: Too many table names in the query. The maximum allowable is 256. HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, HRESULT=80040E14, SQLSrvr: SQLSTATE=42000, state=1, Severity=F, native=319, line=771 SQLSrvr: SQLSTATE=42000, state=1, Severity=F, native=319, line=769 SQLSrvr: SQLSTATE=42000, state=1, Severity=F, native=319, line=767 SQLSrvr: SQLSTATE=42000, state=1, Severity=F, native=31". При попытке вывести через обычный отчет система просто "падает" и требует перезагрузки. Из-за чего это и что в запросе можно изменить? Как я понимаю, это из-за попытки сгруппировать по полю неограниченной длины (Комментарий), но там же явно указано ВЫРАЗИТЬ КАК Строка(100), т.е. в принципе, должно работать... |
|||
1
Автосервис
30.12.19
✎
10:33
|
Уверены что вам вообще этот комментарий в запросе нужен? Без него нормально отрабатывает?
|
|||
2
acht
30.12.19
✎
10:37
|
(0)
ВЫРАЗИТЬ( ВЫБОР КОГДА ОборотыБюджетов.ДокументОснование ССЫЛКА Документ.ПлатежноеПоручениеИсходящее ТОГДА ВЫРАЗИТЬ(ОборотыБюджетов.ДокументОснование КАК Документ.ПлатежноеПоручениеИсходящее).Комментарий КОГДА ОборотыБюджетов.ДокументОснование ССЫЛКА Документ.ПлатежноеПоручениеВходящее ТОГДА ВЫРАЗИТЬ(ОборотыБюджетов.ДокументОснование КАК Документ.ПлатежноеПоручениеВходящее).Комментарий КОНЕЦ КАК СТРОКА(100) ) |
|||
3
mistеr
30.12.19
✎
10:37
|
(0) У регистра ОборотыБюджетов слишком много регистраторов. Идет неявное соединение со всеми ними.
Если тебе нужны только обороты по платежкам, пропиши это в ГДЕ. |
|||
4
Cyberhawk
30.12.19
✎
10:38
|
ДокументОснование.Комментарий вот из-за этого
|
|||
5
Cyberhawk
30.12.19
✎
10:39
|
Добавляй в ГДЕ условия на типы регистраторов
|
|||
6
polosov
30.12.19
✎
10:39
|
(0) Возможно ОборотыБюджетов.ДокументОснование содержит много типов документов.
И ОборотыБюджетов.ДокументОснование.Комментарий вызывает слишком много соединений. Поэтому надо: 1. избавиться от ИЛИ в ВЫБОР КОГДА 2. Переделать на ВЫРАЗИТЬ(ВЫРАЗИТЬ(ОборотыБюджетов.ДокументОснование КАК Документ.ПлатежноеПоручениеИсходящее).Комментарий КАК СТРОКА(100)) |
|||
7
slafor
30.12.19
✎
10:49
|
(2) Спасибо, работает!
(3)(5) Нужны обороты по всем регистраторам, а комментарии только по платежкам. |
|||
8
Simod
30.12.19
✎
10:54
|
(7) Сделай левое соединение с документами ПлатежноеПоручениеИсходящее и ПлатежноеПоручениеВходящее и получай комментарий из них через ЕСТЬNULL.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |