Имя: Пароль:
1C
1С v8
УТ. РМК. По некоторым штрихкодам долго ищется номенклатура
0 Wefast
 
02.12.20
10:35
УТ. РМК. По некоторым штрихкодам долго ищется номенклатура

Собственно вбивается один шк - номенклатура подставляется мгновенно
Вводишь другой - ищет секунд 20.

В регистре записи идентичные на вид.
1 Wefast
 
02.12.20
10:36
Перепутал, Розница
2 Wefast
 
03.12.20
15:17
Так. сделал замер производительности.

Долго тупит на строчке. Запрос.Выполнить().Выгрузить()

Где тормозит - в итоговой таблице 3 строки, где не тормозит - 1 строка. Так что не думаю что дело в объеме данных.
3 Chameleon1980
 
03.12.20
16:07
запрс покажи
4 Wefast
 
03.12.20
16:37
(3)
"ВЫБРАТЬ
            |    ТаблицаНоменклатуры.Номенклатура   КАК Номенклатура,
            |    ТаблицаНоменклатуры.Характеристика КАК Характеристика,
            |    ТаблицаНоменклатуры.Серия          КАК Серия
            |ПОМЕСТИТЬ ТаблицаНоменклатуры
            |ИЗ
            |    &ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
            |ИНДЕКСИРОВАТЬ ПО
            |    Номенклатура,
            |    Характеристика,
            |    Серия
            |;
            |
            |////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ РАЗЛИЧНЫЕ
            |    Т.Номенклатура   КАК Номенклатура,
            |    Т.Характеристика КАК Характеристика,
            |    Т.Серия          КАК Серия,
            |    ВЫБОР КОГДА СоответствиеСерии.АлкогольнаяПродукция ЕСТЬ NULL
            |        И СоответствиеНоменклатура.АлкогольнаяПродукция ЕСТЬ NULL ТОГДА
            |        ЗНАЧЕНИЕ(Справочник.КлассификаторАлкогольнойПродукцииЕГАИС.ПустаяСсылка)
            |    КОГДА НЕ СоответствиеСерии.АлкогольнаяПродукция ЕСТЬ NULL ТОГДА
            |        СоответствиеСерии.АлкогольнаяПродукция
            |    ИНАЧЕ
            |        СоответствиеНоменклатура.АлкогольнаяПродукция
            |    КОНЕЦ КАК АлкогольнаяПродукция,
            |    
            |    ВЫБОР КОГДА СоответствиеСерии.АлкогольнаяПродукция ЕСТЬ NULL
            |        И СоответствиеНоменклатура.АлкогольнаяПродукция ЕСТЬ NULL ТОГДА
            |        """"
            |    КОГДА НЕ СоответствиеСерии.АлкогольнаяПродукция ЕСТЬ NULL ТОГДА
            |        СоответствиеСерии.АлкогольнаяПродукция.Код
            |    ИНАЧЕ
            |        СоответствиеНоменклатура.АлкогольнаяПродукция.Код
            |    КОНЕЦ КАК КодАлкогольнойПродукции
            |ИЗ
            |    ТаблицаНоменклатуры КАК Т
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеСерии
            |        ПО СоответствиеСерии.Номенклатура   = Т.Номенклатура
            |         И СоответствиеСерии.Характеристика = Т.Характеристика
            |         И СоответствиеСерии.Серия          = Т.Серия
            |        
            |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеНоменклатура
            |        ПО СоответствиеНоменклатура.Номенклатура   = Т.Номенклатура
            |         И СоответствиеНоменклатура.Характеристика = Т.Характеристика
            |         И СоответствиеНоменклатура.Серия В (&ПустыеЗначенияСерий)
            |ГДЕ
            |    ВЫБОР КОГДА СоответствиеСерии.АлкогольнаяПродукция ЕСТЬ NULL
            |        И СоответствиеНоменклатура.АлкогольнаяПродукция ЕСТЬ NULL ТОГДА
            |        ЗНАЧЕНИЕ(Справочник.КлассификаторАлкогольнойПродукцииЕГАИС.ПустаяСсылка)
            |    КОГДА НЕ СоответствиеСерии.АлкогольнаяПродукция ЕСТЬ NULL ТОГДА
            |        СоответствиеСерии.АлкогольнаяПродукция
            |    ИНАЧЕ
            |        СоответствиеНоменклатура.АлкогольнаяПродукция
            |    КОНЕЦ <> ЗНАЧЕНИЕ(Справочник.КлассификаторАлкогольнойПродукцииЕГАИС.ПустаяСсылка)
            |");
        
        Запрос.УстановитьПараметр("ТаблицаНоменклатуры", ТаблицаНоменклатуры);
        Запрос.УстановитьПараметр("ПустыеЗначенияСерий", ИнтеграцияИС.НезаполненныеЗначенияОпределяемогоТипа("СерияНоменклатуры"));
5 Wefast
 
03.12.20
16:50
Ну в общем там идет выборка из 1 регистра, сначала он получается 1500 строк и потом еще 1500, перемножает их и получает 2500 000 строка. А потом выводит отличающиеся строки только.

НА вскидку сделал так:

ВЫБРАТЬ
    ТаблицаНоменклатуры.Номенклатура КАК Номенклатура,
    ТаблицаНоменклатуры.Характеристика КАК Характеристика,
    ТаблицаНоменклатуры.Серия КАК Серия
ПОМЕСТИТЬ ТаблицаНоменклатуры
ИЗ
    &ТаблицаНоменклатуры КАК ТаблицаНоменклатуры

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Характеристика,
    Серия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Т.Номенклатура КАК Номенклатура,
    Т.Характеристика КАК Характеристика,
    Т.Серия КАК Серия,
    СоответствиеСерии.АлкогольнаяПродукция КАК АлкогольнаяПродукция
ПОМЕСТИТЬ серии
ИЗ
    ТаблицаНоменклатуры КАК Т
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеСерии
        ПО (СоответствиеСерии.Номенклатура = Т.Номенклатура)
            И (СоответствиеСерии.Характеристика = Т.Характеристика)
            И (СоответствиеСерии.Серия = Т.Серия)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Т.Номенклатура КАК Номенклатура,
    Т.Характеристика КАК Характеристика,
    Т.Серия КАК Серия,
    СоответствиеНоменклатура.АлкогольнаяПродукция КАК АлкогольнаяПродукция
ПОМЕСТИТЬ соотв
ИЗ
    ТаблицаНоменклатуры КАК Т
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеНоменклатурыЕГАИС КАК СоответствиеНоменклатура
        ПО (СоответствиеНоменклатура.Номенклатура = Т.Номенклатура)
            И (СоответствиеНоменклатура.Характеристика = Т.Характеристика)
            И (СоответствиеНоменклатура.Серия В (&ПустыеЗначенияСерий))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Т.Номенклатура КАК Номенклатура,
    Т.Характеристика КАК Характеристика,
    Т.Серия КАК Серия,
    ВЫБОР
        КОГДА серии.АлкогольнаяПродукция ЕСТЬ NULL
                И соотв.АлкогольнаяПродукция ЕСТЬ NULL
            ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторАлкогольнойПродукцииЕГАИС.ПустаяСсылка)
        КОГДА НЕ серии.АлкогольнаяПродукция ЕСТЬ NULL
            ТОГДА серии.АлкогольнаяПродукция
        ИНАЧЕ соотв.АлкогольнаяПродукция
    КОНЕЦ КАК АлкогольнаяПродукция,
    ВЫБОР
        КОГДА серии.АлкогольнаяПродукция ЕСТЬ NULL
                И соотв.АлкогольнаяПродукция ЕСТЬ NULL
            ТОГДА ""
        КОГДА НЕ серии.АлкогольнаяПродукция ЕСТЬ NULL
            ТОГДА серии.АлкогольнаяПродукция.Код
        ИНАЧЕ соотв.АлкогольнаяПродукция.Код
    КОНЕЦ КАК КодАлкогольнойПродукции
ИЗ
    ТаблицаНоменклатуры КАК Т
        ЛЕВОЕ СОЕДИНЕНИЕ серии КАК серии
        ПО (серии.Номенклатура = Т.Номенклатура)
            И (серии.Характеристика = Т.Характеристика)
            И (серии.Серия = Т.Серия)
        ЛЕВОЕ СОЕДИНЕНИЕ соотв КАК соотв
        ПО (соотв.Номенклатура = Т.Номенклатура)
            И (соотв.Характеристика = Т.Характеристика)
            И (соотв.Серия В (&ПустыеЗначенияСерий))
ГДЕ
    ВЫБОР
            КОГДА серии.АлкогольнаяПродукция ЕСТЬ NULL
                    И соотв.АлкогольнаяПродукция ЕСТЬ NULL
                ТОГДА ЗНАЧЕНИЕ(Справочник.КлассификаторАлкогольнойПродукцииЕГАИС.ПустаяСсылка)
            КОГДА НЕ серии.АлкогольнаяПродукция ЕСТЬ NULL
                ТОГДА серии.АлкогольнаяПродукция
            ИНАЧЕ соотв.АлкогольнаяПродукция
        КОНЕЦ <> ЗНАЧЕНИЕ(Справочник.КлассификаторАлкогольнойПродукцииЕГАИС.ПустаяСсылка)

В итоге сначала 1500 тысячи строк - потом в этом подзапросе схлопывается до 3.
Потом во втором подзапросе 3 строки.
В итоговой перемножается 3 на 3
6 Wefast
 
03.12.20
16:51
Но хз, типовой запрос из Розницы, общий модуль ШтрихкодированиеЕГАИС

Все эти изменения в РИБ(с 15+ узлами) вносить удовольствие не из приятных
Закон Брукера: Даже маленькая практика стоит большой теории.