|
массив из 700 элементов в запрос | ☑ | ||
---|---|---|---|---|
0
asder117
15.07.21
✎
22:52
|
Коллеги, как можно в параметр запроса запихать массив значений из 700 элементов. До 300 элементов отрабатывает больше вываливается с превышением блокировки)) Конфа УПП
|
|||
1
Asmody
15.07.21
✎
22:56
|
(0) переделывать архитектуру
|
|||
2
nicxxx
15.07.21
✎
23:08
|
Элементарно, Ватсон! Сделать 3 массива и запрос в цикле :)
|
|||
3
RomanYS
15.07.21
✎
23:09
|
Проблема явно не в параметре. Запрос в студию!
|
|||
4
Жан Пердежон
15.07.21
✎
23:18
|
в запрос таблицу значений можно передать, если что
|
|||
5
asder117
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 было отловил |
|||
6
TormozIT
гуру
15.07.21
✎
23:42
|
(0) Текст ошибки сейчас сообщать не модно?
|
|||
7
МихаилМ
15.07.21
✎
23:55
|
(0) в правилах форума не случайно указано писать версии ПО.
|
|||
8
OldCondom
16.07.21
✎
00:04
|
а индекс точно номенклатура+склад, а не наоборот?
плюс можно попробовать в вт сперва выбрать свою номенклатуру, и вместо параметра подставлять выборку из ВТ |
|||
9
timurhv
16.07.21
✎
00:30
|
(3) Если больше 256 элементов (с количеством могу ошибаться, но около того), то вся таблица блокируется. Притом это делает платформа 1С.
Решение в (4) |
|||
10
OldCondom
16.07.21
✎
00:36
|
(5) Зачем врешь? Не было там деления на 0. Покупай книжку "Язык запросов 1С", небольшая такая. Переписывай весь свой запрос.
Ради интереса запустил твой и свой слегка переписанный. 168 секунд vs 18 Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачалоПериода", НачалоГода(ТекущаяДата())); Запрос.УстановитьПараметр("КонецПериода", ТекущаяДата()); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 700 | Номенклатура.Ссылка |ПОМЕСТИТЬ ВТ_Номенклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Склады.Ссылка |ПОМЕСТИТЬ ВТ_Склады |ИЗ | Справочник.Склады КАК Склады |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыВРезервеНаСкладахОстатки.Номенклатура, | ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК Резерв |ПОМЕСТИТЬ ВТ_Резерв |ИЗ | РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки( | , | Склад В | (ВЫБРАТЬ | ВТ_Склады.Ссылка | ИЗ | ВТ_Склады) | И Номенклатура В | (ВЫБРАТЬ | ВТ_Номенклатура.Ссылка | ИЗ | ВТ_Номенклатура)) КАК ТоварыВРезервеНаСкладахОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура, | МИНИМУМ(ТоварыНаСкладахОстаткиИОбороты.Период) КАК Минимум |ПОМЕСТИТЬ ВТ_Минимум |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( | НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), | КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), | Регистратор, | , | Склад В | (ВЫБРАТЬ | ВТ_Склады.Ссылка | ИЗ | ВТ_Склады) | И Номенклатура В | (ВЫБРАТЬ | ВТ_Номенклатура.Ссылка | ИЗ | ВТ_Номенклатура)) КАК ТоварыНаСкладахОстаткиИОбороты | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТоварыНаСкладахОстаткиИОбороты.Период) КАК Период, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК НачальныйОстаток, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КонечныйОстаток, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход |ПОМЕСТИТЬ ВТ_ПоПериодам |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( | &НачалоПериода, | &КонецПериода, | Месяц, | , | Склад В | (ВЫБРАТЬ | ВТ_Склады.Ссылка | ИЗ | ВТ_Склады) | И Номенклатура В | (ВЫБРАТЬ | ВТ_Номенклатура.Ссылка | ИЗ | ВТ_Номенклатура)) КАК ТоварыНаСкладахОстаткиИОбороты | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК НачальныйОстаток, | &НачалоПериода КАК Период |ПОМЕСТИТЬ ВТ_Начало |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), | Склад В | (ВЫБРАТЬ | ВТ_Склады.Ссылка | ИЗ | ВТ_Склады) | И Номенклатура В | (ВЫБРАТЬ | ВТ_Номенклатура.Ссылка | ИЗ | ВТ_Номенклатура)) КАК ТоварыНаСкладахОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК КонечныйОстаток, | КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) КАК Период |ПОМЕСТИТЬ ВТ_Конец |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | , | Склад В | (ВЫБРАТЬ | ВТ_Склады.Ссылка | ИЗ | ВТ_Склады) | И Номенклатура В | (ВЫБРАТЬ | ВТ_Номенклатура.Ссылка | ИЗ | ВТ_Номенклатура)) КАК ТоварыНаСкладахОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗначенияТочкиЗаказаСрезПоследних.Номенклатура, | ЗначенияТочкиЗаказаСрезПоследних.ЗначениеТочкиЗаказа, | ЗначенияТочкиЗаказаСрезПоследних.МинимальныйСтраховойЗапас |ПОМЕСТИТЬ ВТ_точкиЗаказа |ИЗ | РегистрСведений.ЗначенияТочкиЗаказа.СрезПоследних( | &КонецПериода, | Номенклатура В | (ВЫБРАТЬ | ВТ_Номенклатура.Ссылка | ИЗ | ВТ_Номенклатура)) КАК ЗначенияТочкиЗаказаСрезПоследних |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ПоПериодам.Номенклатура КАК Номенклатура, | ЕСТЬNULL(ВТ_Начало.НачальныйОстаток, 0) КАК НачальныйОстатокНаНачало, | ВТ_ПоПериодам.КоличествоПриход, | ВТ_ПоПериодам.КоличествоРасход, | ЕСТЬNULL(ВТ_Конец.КонечныйОстаток, 0) КАК КонечныйОстатокНаКонец, | ЕСТЬNULL(ВТ_ПоПериодам.КоличествоРасход, 0) / ВЫБОР | КОГДА ВТ_ПоПериодам.Период < 2 | ТОГДА 1 | ИНАЧЕ ВТ_ПоПериодам.Период - 1 | КОНЕЦ КАК СреднийРасход, | ВТ_ПоПериодам.Период КАК Период, | ВТ_ПоПериодам.НачальныйОстаток, | ВТ_ПоПериодам.КонечныйОстаток, | ВТ_Минимум.Минимум КАК ДатаПоступления, | ЕСТЬNULL(ВТ_Резерв.Резерв, 0) КАК Резерв, | ВТ_точкиЗаказа.ЗначениеТочкиЗаказа, | ВТ_точкиЗаказа.МинимальныйСтраховойЗапас |ИЗ | ВТ_ПоПериодам КАК ВТ_ПоПериодам | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Начало КАК ВТ_Начало | ПО ВТ_ПоПериодам.Номенклатура = ВТ_Начало.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Конец КАК ВТ_Конец | ПО ВТ_ПоПериодам.Номенклатура = ВТ_Конец.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Минимум КАК ВТ_Минимум | ПО ВТ_ПоПериодам.Номенклатура = ВТ_Минимум.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Резерв КАК ВТ_Резерв | ПО ВТ_ПоПериодам.Номенклатура = ВТ_Резерв.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ ВТ_точкиЗаказа КАК ВТ_точкиЗаказа | ПО ВТ_ПоПериодам.Номенклатура = ВТ_точкиЗаказа.Номенклатура"; |
|||
11
timurhv
16.07.21
✎
00:45
|
(9) извиняюсь, спутал с темповской таблицей
|
|||
12
asder117
17.07.21
✎
12:32
|
(10) в (5) я как раз закомментировал те строки где падал в 0. (6) ошибка превышено ожидание блокировки а потом скульная деление на 0, вот ее я и отловил (8) точно..
|
|||
13
asder117
17.07.21
✎
12:33
|
(7) УПП 1.3. последний релиз..звиняйте
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |