Вход | Регистрация
 

массив из 700 элементов в запрос

массив из 700 элементов в запрос
Я
   asder117
 
15.07.21 - 22:52
Коллеги, как можно в параметр запроса запихать массив значений из 700 элементов.  До 300 элементов отрабатывает больше вываливается с превышением блокировки)) Конфа УПП
   Asmody
 
1 - 15.07.21 - 22:56
(0) переделывать архитектуру
   nicxxx
 
2 - 15.07.21 - 23:08
Элементарно, Ватсон! Сделать 3 массива и запрос в цикле :)
   RomanYS
 
3 - 15.07.21 - 23:09
Проблема явно не в параметре. Запрос в студию!
   Жан Пердежон
 
4 - 15.07.21 - 23:18
в запрос таблицу значений можно передать, если что
   asder117
 
5 - 15.07.21 - 23:26
(3) ВЫБРАТЬ
                              |    ТоварыВРезервеНаСкладахОстатки.Номенклатура,
                              |    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК Резерв
                              |ПОМЕСТИТЬ ВТ_Резерв
                              |ИЗ
                              |    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
                              |            ,
                              |            Номенклатура В (&Продукция)
                              |                И Склад В (&Склад)) КАК ТоварыВРезервеНаСкладахОстатки
                              |;
                              |
                              ////////////////////////////////////////////////////////////////////////////////

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

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

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

                              |ВЫБРАТЬ
                              |    ТоварыНаСкладахОстатки.Номенклатура,
                              |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КонечныйОстаток,
                              |    КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) КАК Период
                              |ПОМЕСТИТЬ ВТ_Конец
                              |ИЗ
                              |    РегистрНакопления.ТоварыНаСкладах.Остатки(
                              |            ,
                              |            Номенклатура В
                              |                    (ВЫБРАТЬ
                              |                        ВТ_ПоПериодам.Номенклатура
                              |                    ИЗ
                              |                        ВТ_ПоПериодам КАК ВТ_ПоПериодам)
                              |                И Склад В (&Склад)) КАК ТоварыНаСкладахОстатки
                              |;
                              |
                              ////////////////////////////////////////////////////////////////////////////////

                              |ВЫБРАТЬ
                              |    ЗначенияТочкиЗаказаСрезПоследних.Номенклатура,
                              |    ЗначенияТочкиЗаказаСрезПоследних.ЗначениеТочкиЗаказа,
                              |    ЗначенияТочкиЗаказаСрезПоследних.МинимальныйСтраховойЗапас
                              |ПОМЕСТИТЬ ВТ_точкиЗаказа
                              |ИЗ
                              |    РегистрСведений.ЗначенияТочкиЗаказа.СрезПоследних(&КонецПериода, Номенклатура В (&Продукция)) КАК ЗначенияТочкиЗаказаСрезПоследних
                              |;
                              |
                              ////////////////////////////////////////////////////////////////////////////////

                              |ВЫБРАТЬ
                              |    ВТ_ПоПериодам.Номенклатура КАК Номенклатура,
                              |    ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) КАК НачальныйОстатокНаНачало,
                              |    ВТ_ПоПериодам.КоличествоПриход,
                              |    ВТ_ПоПериодам.КоличествоРасход,
                              |    ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) КАК КонечныйОстатокНаКонец,
                              //|    (ЕСТЬNULL(ВТ_ПоПериодам.КонечныйОстаток, 1) - ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) - ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) + ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) / 2 + ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) / 2) / ВЫБОР

                              //|        КОГДА ВТ_ПоПериодам.Период < 2

                              //|            ТОГДА 1

                              //|        ИНАЧЕ ВТ_ПоПериодам.Период-1 

                              //|    КОНЕЦ КАК СреднийЗапас,

                              |    ЕСТЬNULL(ВТ_ПоПериодам.КоличествоРасход, 0) / ВЫБОР
                              |        КОГДА ВТ_ПоПериодам.Период < 2
                              |            ТОГДА 1
                              |        ИНАЧЕ ВТ_ПоПериодам.Период-1 
                              |    КОНЕЦ КАК СреднийРасход,
                              //|    ЕСТЬNULL(ВТ_ПоПериодам.КоличествоРасход, 0) / ((ЕСТЬNULL(ВТ_ПоПериодам.КонечныйОстаток, 1) - ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) - ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) + ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) / 2 + ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) / 2) / ВЫБОР

                              //|        КОГДА ВТ_ПоПериодам.Период < 2

                              //|            ТОГДА 1

                              //|        ИНАЧЕ ВТ_ПоПериодам.Период 

                              //|    КОНЕЦ) КАК ОБСР,

                              //|    ЕСТЬNULL(ВТ_ПоПериодам.КоличествоРасход, 0) / ВЫБОР

                              //|        КОГДА ВТ_ПоПериодам.Период < 2

                              //|            ТОГДА 1

                              //|        ИНАЧЕ ВТ_ПоПериодам.Период 

                              //|    КОНЕЦ / ((ЕСТЬNULL(ВТ_ПоПериодам.КонечныйОстаток, 1) - ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) - ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) + ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) / 2 + ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) / 2) / ВЫБОР

                              //|        КОГДА ВТ_ПоПериодам.Период < 2

                              //|            ТОГДА 1

                              //|        ИНАЧЕ ВТ_ПоПериодам.Период 

                              //|    КОНЕЦ) КАК ОСР,

                              |    ВТ_ПоПериодам.Период КАК Период,
                              |    ВТ_ПоПериодам.НачальныйОстаток,
                              |    ВТ_ПоПериодам.КонечныйОстаток,
                              |    ВТ_Минимум.Минимум КАК ДатаПоступления,
                              |    ЕСТЬNULL(ВТ_Резерв.Резерв, 0) КАК Резерв,
                              |    ВТ_точкиЗаказа.ЗначениеТочкиЗаказа,
                              |    ВТ_точкиЗаказа.МинимальныйСтраховойЗапас
                              |ИЗ
                              |    ВТ_ПоПериодам КАК ВТ_ПоПериодам
                              |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Начало КАК ВТ_Начало
                              |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_Начало.Номенклатура
                              |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Конец КАК ВТ_Конец
                              |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_Конец.Номенклатура
                              |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Минимум КАК ВТ_Минимум
                              |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_Минимум.Номенклатура
                              |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Резерв КАК ВТ_Резерв
                              |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_Резерв.Номенклатура
                              |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_точкиЗаказа КАК ВТ_точкиЗаказа
                              |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_точкиЗаказа.Номенклатура";

В принципе вопрос снят...Деление на 0 было отловил
   TormozIT
 
6 - 15.07.21 - 23:42
(0) Текст ошибки сейчас сообщать не модно?
   МихаилМ
 
7 - 15.07.21 - 23:55
(0) в правилах форума не случайно указано писать версии ПО.
   OldCondom
 
8 - 16.07.21 - 00:04
а индекс точно номенклатура+склад, а не наоборот?
плюс можно попробовать в вт сперва выбрать свою номенклатуру, и вместо параметра подставлять выборку из ВТ
   timurhv
 
9 - 16.07.21 - 00:30
(3) Если больше 256 элементов (с количеством могу ошибаться, но около того), то вся таблица блокируется. Притом это делает платформа 1С.
Решение в (4)
   OldCondom
 
10 - 16.07.21 - 00:36
(5) Зачем врешь? Не было там деления на 0. Покупай книжку "Язык запросов 1С", небольшая такая. Переписывай весь свой запрос.
Ради интереса запустил твой и свой слегка переписанный. 168 секунд vs 18

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачалоПериода", НачалоГода(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецПериода", ТекущаяДата());
    Запрос.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 700
    |    Номенклатура.Ссылка
    |ПОМЕСТИТЬ ВТ_Номенклатура
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    Склады.Ссылка
    |ПОМЕСТИТЬ ВТ_Склады
    |ИЗ
    |    Справочник.Склады КАК Склады
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ТоварыВРезервеНаСкладахОстатки.Номенклатура,
    |    ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК Резерв
    |ПОМЕСТИТЬ ВТ_Резерв
    |ИЗ
    |    РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(
    |            ,
    |            Склад В
    |                    (ВЫБРАТЬ
    |                        ВТ_Склады.Ссылка
    |                    ИЗ
    |                        ВТ_Склады)
    |                И Номенклатура В
    |                    (ВЫБРАТЬ
    |                        ВТ_Номенклатура.Ссылка
    |                    ИЗ
    |                        ВТ_Номенклатура)) КАК ТоварыВРезервеНаСкладахОстатки
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

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

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

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

    |ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Номенклатура,
    |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КонечныйОстаток,
    |    КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) КАК Период
    |ПОМЕСТИТЬ ВТ_Конец
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки(
    |            ,
    |            Склад В
    |                    (ВЫБРАТЬ
    |                        ВТ_Склады.Ссылка
    |                    ИЗ
    |                        ВТ_Склады)
    |                И Номенклатура В
    |                    (ВЫБРАТЬ
    |                        ВТ_Номенклатура.Ссылка
    |                    ИЗ
    |                        ВТ_Номенклатура)) КАК ТоварыНаСкладахОстатки
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ЗначенияТочкиЗаказаСрезПоследних.Номенклатура,
    |    ЗначенияТочкиЗаказаСрезПоследних.ЗначениеТочкиЗаказа,
    |    ЗначенияТочкиЗаказаСрезПоследних.МинимальныйСтраховойЗапас
    |ПОМЕСТИТЬ ВТ_точкиЗаказа
    |ИЗ
    |    РегистрСведений.ЗначенияТочкиЗаказа.СрезПоследних(
    |            &КонецПериода,
    |            Номенклатура В
    |                (ВЫБРАТЬ
    |                    ВТ_Номенклатура.Ссылка
    |                ИЗ
    |                    ВТ_Номенклатура)) КАК ЗначенияТочкиЗаказаСрезПоследних
    |;
    |
    ////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ
    |    ВТ_ПоПериодам.Номенклатура КАК Номенклатура,
    |    ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) КАК НачальныйОстатокНаНачало,
    |    ВТ_ПоПериодам.КоличествоПриход,
    |    ВТ_ПоПериодам.КоличествоРасход,
    |    ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) КАК КонечныйОстатокНаКонец,
    |    ЕСТЬNULL(ВТ_ПоПериодам.КоличествоРасход, 0) / ВЫБОР
    |        КОГДА ВТ_ПоПериодам.Период < 2
    |            ТОГДА 1
    |        ИНАЧЕ ВТ_ПоПериодам.Период - 1
    |    КОНЕЦ КАК СреднийРасход,
    |    ВТ_ПоПериодам.Период КАК Период,
    |    ВТ_ПоПериодам.НачальныйОстаток,
    |    ВТ_ПоПериодам.КонечныйОстаток,
    |    ВТ_Минимум.Минимум КАК ДатаПоступления,
    |    ЕСТЬNULL(ВТ_Резерв.Резерв, 0) КАК Резерв,
    |    ВТ_точкиЗаказа.ЗначениеТочкиЗаказа,
    |    ВТ_точкиЗаказа.МинимальныйСтраховойЗапас
    |ИЗ
    |    ВТ_ПоПериодам КАК ВТ_ПоПериодам
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Начало КАК ВТ_Начало
    |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_Начало.Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Конец КАК ВТ_Конец
    |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_Конец.Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Минимум КАК ВТ_Минимум
    |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_Минимум.Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Резерв КАК ВТ_Резерв
    |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_Резерв.Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_точкиЗаказа КАК ВТ_точкиЗаказа
    |        ПО ВТ_ПоПериодам.Номенклатура = ВТ_точкиЗаказа.Номенклатура";
   timurhv
 
11 - 16.07.21 - 00:45
(9) извиняюсь, спутал с темповской таблицей
   asder117
 
12 - 17.07.21 - 12:32
(10) в (5) я как раз закомментировал те строки где падал в 0. (6) ошибка превышено ожидание блокировки а потом скульная деление на 0, вот ее я и отловил (8) точно..
   asder117
 
13 - 17.07.21 - 12:33
(7) УПП 1.3. последний релиз..звиняйте

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