Имя: Пароль:
1C
 
Можно ли ускорить отбор виртуальных таблиц регистра остатков?
0 Гений 1С
 
гуру
09.09.14
15:47
Есть справочники номеналатура и характеристики номенклатуры.

Обычно в типовом запросе отбор на виртуальную таблицу накладывается так:

ВЫБРАТЬ
    ТоварыВРозницеОстатки.Номенклатура,
    ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры,
    ТоварыВРозницеОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(
            ,
            Номенклатура В
                    (ВЫБРАТЬ
                        &Номенклатура)
                И ХарактеристикаНоменклатуры В
                    (ВЫБРАТЬ
                        &ХарактеристикаНоменклатуры)) КАК ТоварыВРозницеОстатки

А хотелось бы накладывать так (было бы быстрее):

ВЫБРАТЬ
    ТоварыВРозницеОстатки.Номенклатура,
    ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры,
    ТоварыВРозницеОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(
            ,
            Номенклатура = &Номенклатура
                И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры
            ИЛИ Номенклатура = &Номенклатура2
                И ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры2
                
                
                ) КАК ТоварыВРозницеОстатки


Например, если у меня есть товары:

Компьютер, Европа
Компьютер, Китай
Ткань, Красная
Ткань, Синяя
Мыло
Чехол

То оно отберет и все товары с пустыми (незаполненными) характеристиками, что иногда существенно замедлит процесс.

Т.е. в данном случае в результат войдут и Компьютер, и Ткань, (т.е. с пустыми характеристиками), хотя их и не было в исходном документе и по ним остатки не нужны.
1 Timon1405
 
09.09.14
15:55
ВЫБРАТЬ
    &Компьютер КАК Номенклатура,
    &Европа КАК Характеристика
ПОМЕСТИТЬ ВТ_НомХам

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

ВЫБРАТЬ
    &Компьютер2,
    &Азиопа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыОрганизацийОстатки.Организация,
    ТоварыОрганизацийОстатки.Номенклатура,
    ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры,
    ТоварыОрганизацийОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыОрганизаций.Остатки(
            ,
            (Номенклатура, ХарактеристикаНоменклатуры) В
                (ВЫБРАТЬ
                    ВТ_НомХам.Номенклатура,
                    ВТ_НомХам.Характеристика
                ИЗ
                    ВТ_НомХам КАК ВТ_НомХам)) КАК ТоварыОрганизацийОстатки
2 H A D G E H O G s
 
09.09.14
16:02
(1) Плохо.
3 Гений 1С
 
гуру
09.09.14
16:04
(2) почему?
4 H A D G E H O G s
 
09.09.14
16:04
Измерение Организация идет первым (в типовых).

Отбор по ней не наложен.

Индекс использоваться не будет.
5 Гений 1С
 
гуру
09.09.14
16:07
(1)  Большое человеческое спасибо.

А то я уже хотел так переписать (даже чуть быстрее работает), но ваш метод универсальнее и лучше, в принципе:


ВЫБРАТЬ
    ТоварыВРозницеОстатки.Номенклатура,
    ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры,
    ТоварыВРозницеОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварыВРознице.Остатки(
            ,
            ВЫБОР
                КОГДА ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
                    ТОГДА Номенклатура В
                            (ВЫБРАТЬ
                                &Номенклатура)
                ИНАЧЕ ХарактеристикаНоменклатуры В
                        (ВЫБРАТЬ
                            &ХарактеристикаНоменклатуры)
            КОНЕЦ) КАК ТоварыВРозницеОстатки
6 Гений 1С
 
гуру
09.09.14
16:07
(4) не суть, главное, что после переписки полчаса тупления запроса превращаются в 7 секунд! ;-)
7 Timon1405
 
09.09.14
16:08
(4) Извиняйте, выбрал звездочку, выкинул лишнее, просто для примера написал
8 SeiOkami
 
09.09.14
16:08
"ИЛИ" в запросе - Зло
9 H A D G E H O G s
 
09.09.14
16:08
(6) Плохо, Сергей Осипов, плохо.

Запрос в 7 секунд - это плохо.
10 Гений 1С
 
гуру
15.09.14
13:27
(9) там еще ускорил немного. Оказывается, если сначала отобрать списанные товары в временную таблицу в запросе, то соединение как раз на порядки быстрее работает, чем со всей таблицей с отбором по регистратору.
11 H A D G E H O G s
 
15.09.14
13:35
(10) Ты прямо в каком то устькукуйске живешь с диалапом.
Это было известно уже года 4 как.
12 H A D G E H O G s
 
15.09.14
13:36
(10) Г1С начал что-то подозревать.
13 Fragster
 
гуру
15.09.14
13:36
подпишусь на комменты
14 Timon1405
 
15.09.14
13:39
(13) для этого придумана кнопка "Закладка" слева %)
15 МишельЛагранж
 
15.09.14
13:55
(0) Сергей, а что, 1С уже стала избирательно делать запросы? Т.е. по "ИЛИ" будет избирательно выполнена только одна из веток запроса?
16 МишельЛагранж
 
15.09.14
13:55
(14) не работает закладка
17 Гений 1С
 
гуру
15.09.14
14:00
(15) тут как раз не принципиально.