Имя: Пароль:
1C
1С v8
1c 8.3 УФ, оптимизация Запроса РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто
0 Geroy
 
13.07.16
13:41
Пробую по разному, все равно максимум пару мили секунд удается ускорить
Может ткнете как по другому сделать

"ВЫБРАТЬ
|    Хозрасчетный.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТ_Счета
|ИЗ
|    ПланСчетов.Хозрасчетный КАК Хозрасчетный
|ГДЕ
|    (Хозрасчетный.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)
|            ИЛИ Хозрасчетный.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы))
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Период КАК Период,
|    ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ,
|    ВЫБОР
|        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                И ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|            ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|        ИНАЧЕ ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|    КОНЕЦ КАК Движение,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт1
|        КОНЕЦ КАК Справочник.Номенклатура) КАК Номенклатура,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт3
|        КОНЕЦ КАК Справочник.Склады) КАК Склад,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.КоличествоКт * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.КоличествоКт * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.КоличествоДт
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Количество,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма * 1.18
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаСНДС,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаБезНДС,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА (ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА (ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК НДС,
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Содержание КАК СТРОКА(200)) КАК Содержание,
|    ВЫБОР
|        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                И ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт
|        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СчетДт
|    КОНЕЦ КАК Счет
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНачало, &ДатаОкончания, ТИПЗНАЧЕНИЯ(Регистратор) <> ТИП(Документ.ПеремещениеТоваров), , ) КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
|    (ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ИЛИ ХозрасчетныйДвиженияССубконто.СчетДт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета))
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Период,
|    ХозрасчетныйДвиженияССубконто.Регистратор,
|    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК Справочник.Номенклатура),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СубконтоКт3 КАК Справочник.Склады),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.КоличествоКт * -1 КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1 КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Сумма * -1 КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ((ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1 КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Содержание КАК СТРОКА(200)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СчетКт КАК ПланСчетов.Хозрасчетный)
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
|            &ДатаНачало,
|            &ДатаОкончания,
|            ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПеремещениеТоваров),
|            СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета),
|            ) КАК ХозрасчетныйДвиженияССубконто
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Период,
|    ХозрасчетныйДвиженияССубконто.Регистратор,
|    ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК Справочник.Номенклатура),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СубконтоДт3 КАК Справочник.Склады),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.КоличествоДт КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Сумма * 1.18 КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Сумма КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Содержание КАК СТРОКА(200)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СчетДт КАК ПланСчетов.Хозрасчетный)
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
|            &ДатаНачало,
|            &ДатаОкончания,
|            ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПеремещениеТоваров),
|            СчетДт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета),
|            ) КАК ХозрасчетныйДвиженияССубконто"
1 Nuobu
 
13.07.16
13:49
Не использовать "ИЛИ", "В". Только "Объединить Все" и динамическое создание запроса.
2 Geroy
 
13.07.16
13:57
(1) а какая разница ведь количество запросов увеличится
или конкретные условия быстрее отрабатываться  и затем Объеденит Все?
3 Nuobu
 
13.07.16
14:12
Да.
4 hhhh
 
13.07.16
14:15
(2) там главное попасть в индекс. Тогда быстро будет. А применение ИЛИ - это автоматический вылет из индекса. Как оказалось.
5 H A D G E H O G s
 
13.07.16
14:18
(4) Как оказалось - нет. "Специалисты" лезут на свет.
6 Geroy
 
13.07.16
14:18
(4) буду знать
попробую еще индексировать
7 Nuobu
 
13.07.16
14:19
(5) Поясни, пожалуйста, про индекс и про "ИЛИ", "В". У меня спеца по платформе нету, поэтому не понимаю. То, что написал в (1) - это из опыта и статей в нете.
8 H A D G E H O G s
 
13.07.16
14:20
ИЛИ - это вылет из индекса при поиске по 2-м разным полям.
Если поле одно - вылета из индекса не будет.
9 H A D G E H O G s
 
13.07.16
14:21
ГДЕ
|    (Хозрасчетный.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)
|            ИЛИ Хозрасчетный.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы))

нормально отработает по индексу, так как поле "Родитель" в условии - одно.
10 Nuobu
 
13.07.16
14:21
(8)     (ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ИЛИ ХозрасчетныйДвиженияССубконто.СчетДт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета))
|

(9) Тут и таблица маленькая.
11 H A D G E H O G s
 
13.07.16
14:21
Точно также при В(&СписокЗначений)
12 H A D G E H O G s
 
13.07.16
14:22
(10) Моя первичная отсылка в утверждению в (4).
13 Nuobu
 
13.07.16
14:24
(10) Ты знаешь, мне мой опыт подсказывает другое. Я, когда менял "ИЛИ" на "Объединить все", то запрос работал быстрей. Хотя поле было одно и то же. Никаких замеров я не делал, но разница на 20К записей в таблице была внушительной - где-то минута и полсекунды.
14 hhhh
 
13.07.16
14:34
у автора тут 2 разных поля
15 Nuobu
 
13.07.16
14:36
(14) В последних двух запросах одно поле.
16 hhhh
 
13.07.16
15:26
(15) вот это?  ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПеремещениеТоваров) ?? попадет в индекс?
17 Nuobu
 
13.07.16
15:31
(16) Это ты у хандехоха спроси.
18 Geroy
 
13.07.16
16:21
(16) тоже интересно
19 Geroy
 
13.07.16
16:44
1. Запрос "Кривой" выполнился быстрее в 2 раза чем второй

Первый "Кривой"
|ВЫБРАТЬ
|    Хозрасчетный.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТ_Счета
|ИЗ
|    ПланСчетов.Хозрасчетный КАК Хозрасчетный
|ГДЕ
|    (Хозрасчетный.Родитель.КодБыстрогоВыбора = ""41""
|            ИЛИ Хозрасчетный.Родитель.КодБыстрогоВыбора = ""10"")
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Период КАК Период,
|    ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ,
|    ВЫБОР
|        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                И ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|            ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|        ИНАЧЕ ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|    КОНЕЦ КАК Движение,
|    ВЫБОР
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
|        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт1
|    КОНЕЦ КАК Номенклатура,
|    ВЫБОР
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
|        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт2
|    КОНЕЦ КАК ДокументПоступления,
|    ВЫБОР
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
|        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт3
|    КОНЕЦ КАК Склад,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.КоличествоКт * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.КоличествоКт * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.КоличествоДт
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Количество,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма * 1.18
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаСНДС,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаБезНДС,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА (ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА (ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК НДС,
|    ХозрасчетныйДвиженияССубконто.Содержание КАК Содержание,
|    ВЫБОР
|        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                И ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт
|        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СчетДт
|    КОНЕЦ КАК Счет
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНачало, &ДатаОкончания, ТИПЗНАЧЕНИЯ(Регистратор) <> ТИП(Документ.ПеремещениеТоваров), , ) КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
|    (ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ИЛИ ХозрасчетныйДвиженияССубконто.СчетДт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета))"

Второй "Почти правильный"

|ВЫБРАТЬ
|    Хозрасчетный.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТ_Счета
|ИЗ
|    ПланСчетов.Хозрасчетный КАК Хозрасчетный
|ГДЕ
|    Хозрасчетный.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Товары)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    Хозрасчетный.Ссылка
|ИЗ
|    ПланСчетов.Хозрасчетный КАК Хозрасчетный
|ГДЕ
|    Хозрасчетный.Родитель = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы)
|
|ИНДЕКСИРОВАТЬ ПО
|    Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Период КАК Период,
|    ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ,
|    ВЫБОР
|        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                И ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|            ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|        ИНАЧЕ ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|    КОНЕЦ КАК Движение,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт1
|        КОНЕЦ КАК Справочник.Номенклатура) КАК Номенклатура,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт3
|        КОНЕЦ КАК Справочник.Склады) КАК Склад,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.КоличествоКт * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.КоличествоКт * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.КоличествоДт
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Количество,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма * 1.18
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаСНДС,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаБезНДС,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА (ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА (ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма
|        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК НДС,
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Содержание КАК СТРОКА(200)) КАК Содержание,
|    ВЫБОР
|        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                И ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт
|        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СчетДт
|    КОНЕЦ КАК Счет
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНачало, &ДатаОкончания, ТИПЗНАЧЕНИЯ(Регистратор) <> ТИП(Документ.ПеремещениеТоваров), , ) КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
|    ХозрасчетныйДвиженияССубконто.СчетКт В
|            (ВЫБРАТЬ
|                ВТ_Счета.Ссылка
|            ИЗ
|                ВТ_Счета)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|    ХозрасчетныйДвиженияССубконто.Период,
|    ХозрасчетныйДвиженияССубконто.Регистратор,
|    ВЫБОР
|        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                И ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|            ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
|        ИНАЧЕ ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
|    КОНЕЦ,
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт1
|        КОНЕЦ КАК Справочник.Номенклатура),
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт3
|        КОНЕЦ КАК Справочник.Склады),
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.КоличествоКт * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.КоличествоКт * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.КоличествоДт
|        КОНЕЦ КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * 1.18 * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма * 1.18
|        КОНЕЦ КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА ХозрасчетныйДвиженияССубконто.Сумма * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма
|        КОНЕЦ КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ВЫБОР
|            КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                    И ХозрасчетныйДвиженияССубконто.СчетКт В
|                        (ВЫБРАТЬ
|                            ВТ_Счета.Ссылка
|                        ИЗ
|                            ВТ_Счета)
|                ТОГДА (ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1
|            КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|                ТОГДА (ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма) * -1
|            ИНАЧЕ ХозрасчетныйДвиженияССубконто.Сумма * 1.18 - ХозрасчетныйДвиженияССубконто.Сумма
|        КОНЕЦ КАК ЧИСЛО(15, 2)),
|    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.Содержание КАК СТРОКА(200)),
|    ВЫБОР
|        КОГДА ТИПЗНАЧЕНИЯ(ХозрасчетныйДвиженияССубконто.Регистратор) = ТИП(Документ.ВозвратТоваровОтПокупателя)
|                И ХозрасчетныйДвиженияССубконто.СчетКт В
|                    (ВЫБРАТЬ
|                        ВТ_Счета.Ссылка
|                    ИЗ
|                        ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт
|        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт В
|                (ВЫБРАТЬ
|                    ВТ_Счета.Ссылка
|                ИЗ
|                    ВТ_Счета)
|            ТОГДА ХозрасчетныйДвиженияССубконто.СчетКт
|        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СчетДт
|    КОНЕЦ
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&ДатаНачало, &ДатаОкончания, ТИПЗНАЧЕНИЯ(Регистратор) <> ТИП(Документ.ПеремещениеТоваров), , ) КАК ХозрасчетныйДвиженияССубконто
|ГДЕ
|    ХозрасчетныйДвиженияССубконто.СчетДт В
|            (ВЫБРАТЬ
|                ВТ_Счета.Ссылка
|            ИЗ
|                ВТ_Счета)"
20 Geroy
 
13.07.16
16:47
Попробую избавиться от "В"
21 H A D G E H O G s
 
13.07.16
16:49
А сколько он вообще выполняется? по времени?
22 H A D G E H O G s
 
13.07.16
16:53
Просто выборка ВСЕХ движений по 41 и 10 счету - это довольно нехилая заявка на тормоза.
23 Geroy
 
14.07.16
00:12
(22) Период 10 дней 4191 строка
1. "Кривой" 42 секунды (По Консоли запросов Время выполнения 11.14 с)
2. "Второй" 1м 32с секунды (По Консоли запросов Время выполнения 22,016 С )
24 H A D G E H O G s
 
14.07.16
00:16
(23) Всего строк - сколько?
25 H A D G E H O G s
 
14.07.16
00:16
ms sql?
26 Geroy
 
14.07.16
00:18
(25) MSSQL 2014, всего обрабатывается 4191 строка за выбранный период
27 Geroy
 
14.07.16
00:19
(25) я пока убрал 2 и 3 под запрос ( которые только перемещения)
28 H A D G E H O G s
 
14.07.16
00:20
(27) Я могу подключиться, глянуть, стучись в icq 374881272
29 Geroy
 
14.07.16
00:23
(28) завтра уже, спасибо обязательно напишу