Имя: Пароль:
1C
1С v8
Оптимизация запроса, доставшегося в наследство
0 1dvd
 
08.09.16
14:10
Приветствую всех!
Наткнулся на несколько выражений в запросе. Вот кусок Запроса


ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ТиповойДвиженияССубконто.Период КАК Период,
                ТиповойДвиженияССубконто.Регистратор КАК Регистратор,
                ТиповойДвиженияССубконто.СчетДт КАК СчетДт,
                ТиповойДвиженияССубконто.СчетКт КАК СчетКт,
                ТиповойДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1,
                ТиповойДвиженияССубконто.СубконтоДт2 КАК СубконтоДт2,
                ТиповойДвиженияССубконто.СубконтоКт1 КАК СубконтоКт1,
                ТиповойДвиженияССубконто.СубконтоКт2 КАК СубконтоКт2,
                ТиповойДвиженияССубконто.Организация КАК Организация,
                СУММА(ТиповойДвиженияССубконто.Сумма) КАК Сумма,
                ТиповойДвиженияССубконто.Шлюз КАК Шлюз
            ИЗ
                РегистрБухгалтерии.Типовой.ДвиженияССубконто(
                        &НачалоПериода,
                        &КонецПериода,
                        (ВЫРАЗИТЬ(СубконтоКт1 КАК Справочник.Контрагенты)) = &Контрагент
                            И (ВЫРАЗИТЬ(СубконтоКт2 КАК Справочник.ДоговорыКонтрагентов)) = &Договор
                            И (ВЫРАЗИТЬ(Счет.Код КАК СТРОКА(4))) = "3315"
                            И ВЫРАЗИТЬ(Регистратор КАК Документ.QD) ССЫЛКА Документ.QD
                            И (ВЫРАЗИТЬ(СчетДт.Код КАК СТРОКА(4))) = "1420"
                            И (ВЫРАЗИТЬ(СчетКт.Код КАК СТРОКА(4))) = "3315"
                            И Организация = &Организация
                            И Шлюз В ("25264"),
                        ,
                        ) КАК ТиповойДвиженияССубконто


Скажите, пожалуйста. Нафига такие навороты?

Почему ВЫРАЗИТЬ(СубконтоКт1 КАК Справочник.Контрагенты)) = &Контрагент
а не СубконтоКт1 = &Контрагент ?

Почему ВЫРАЗИТЬ(Регистратор КАК Документ.QD) ССЫЛКА Документ.QD
а не Регистратор ССЫЛКА Документ.QD ?

Почему Шлюз В ("25264")
а не Шлюз = "25264" ?

Все эти обороты как-то ускоряют запрос? Нафига это всё?
1 Fragster
 
гуру
08.09.16
14:11
Шлюз В - возможно потому что раньше их было несколько
2 Метранпаж
 
08.09.16
14:11
Последний - тут надо телепатом быть, а первые два - абсолютно правильны
3 vicof
 
08.09.16
14:11
п..ц
4 Fragster
 
гуру
08.09.16
14:11
"выразить" потому что кто-то что-то слышал про поля составного типа, без обращения через точку к подчиненным полям - убирай
5 Fragster
 
гуру
08.09.16
14:12
(2) первые два - первый избыточен, второй всегда истина...
6 Fragster
 
гуру
08.09.16
14:12
а за названия вида qd вообщ отрубыть все надо
7 1dvd
 
08.09.16
14:12
(1) ОК. Но, я так понимаю, нисколько это не ускоряет?


и ещё вот это
(ВЫРАЗИТЬ(СчетДт.Код КАК СТРОКА(4))) = "1420"

Я конечно, понимаю, что челу влом было передавать параметры в запрос. Но, это ведь замедляет его. Не?
8 Метранпаж
 
08.09.16
14:13
(5) второй может быть и нулом.
9 Fragster
 
гуру
08.09.16
14:13
собственно, с выразить счет.код как строка  тоже нафиг, передать искомые счета сразу ссылками как параметры
10 Fragster
 
гуру
08.09.16
14:13
(8) не может быть
11 Метранпаж
 
08.09.16
14:14
(10) А если там регистратор не Документ.QD ?
12 1dvd
 
08.09.16
14:14
(10) факт, отбирает только документы QD
13 Метранпаж
 
08.09.16
14:14
ну не нул, а неопределено
14 1dvd
 
08.09.16
14:15
(2) идёт отбор по конкретным счетам Дт и Кт. Разве там может быть другое субконто?
15 CMblCL
 
08.09.16
14:17
(14) Может у счета субконто меняли?
16 1dvd
 
08.09.16
14:19
(15) может, и меняли, ХЗ. Но, навряд ли

а по поводу регистратора. Зачем там ВЫРАЗИТЬ?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.