Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

УТ. РМК. По некоторым штрихкодам долго ищется номенклатура

УТ. РМК. По некоторым штрихкодам долго ищется номенклатура
Я
   Wefast
 
02.12.20 - 10:35
УТ. РМК. По некоторым штрихкодам долго ищется номенклатура

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

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

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

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

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

Все эти изменения в РИБ(с 15+ узлами) вносить удовольствие не из приятных

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.