|
Как убыстрить данный запрос? | ☑ | ||
---|---|---|---|---|
0
Маленький Вопросик
16.04.14
✎
22:40
|
предлагаю "кусок" функции, как ее убыстрить?
Остатки1 = Новый Запрос("ВЫБРАТЬ | ХозрасчетныйОстатки.СуммаОстаток КАК СуммаНоменклатуры, | ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоНоменклатуры |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки( | &Дата, | Счет = &Счет, | , | Субконто1 = &Номенклатура | И Субконто2 = &Склад | И Организация = &Организация) КАК ХозрасчетныйОстатки"); ОстаткиВмагазине.УстановитьПараметр("Номенклатура", Номенклатура); ОстаткиВмагазине.УстановитьПараметр("Склад", Склад); ОстаткиВмагазине.УстановитьПараметр("Организация", Организация); ОстаткиВмагазине.УстановитьПараметр("Дата", КонецДня(Дата)); ОстаткиВмагазине.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.11")); ОстаткиПоНоменклатуре = ОстаткиВмагазине.Выполнить().Выгрузить(); Если ОстаткиПоНоменклатуре.Количество()=0 Тогда Возврат 0; Иначе Возврат Номенклатура; КонецЕсли; |
|||
1
ДенисЧ
16.04.14
✎
22:41
|
Как минимум - субконты выразить
|
|||
2
Маленький Вопросик
16.04.14
✎
22:43
|
(1) а как максимум?
как ВЫРАЗИТЬ??? |
|||
3
ДенисЧ
16.04.14
✎
22:45
|
(2) как максимум - заявление написать :-)
А ВЫРАЗИТЬ - точно так, как описано в документации |
|||
4
Маленький Вопросик
16.04.14
✎
22:47
|
непонятно что во что нужно выражать
|
|||
5
vi0
16.04.14
✎
22:51
|
(4) с субконто вроде все ок
сколько времени запрос выполняется? |
|||
6
Маленький Вопросик
16.04.14
✎
22:54
|
идея такая - есть документ реализации (100 строк) - на период создания документа нужно определить остаток позиции по каждой строке....
|
|||
7
ramir
16.04.14
✎
22:55
|
И что, на каждую строку по запросу?) Выгружай тч во временную таблицу и через join делай запрос. Так будет точно быстрее)
|
|||
8
Маленький Вопросик
16.04.14
✎
23:08
|
(7) через join - приведи примерчик
|
|||
9
Dionis Sergeevich
16.04.14
✎
23:15
|
(8) select * from Table1 as a
inner join table2 as b on a.id = b.id вот тебе примерчик |
|||
10
ramir
16.04.14
✎
23:17
|
СОЕДИНЕНИЕ - это JOIN, про это-то уж знаешь?
|
|||
11
dimaldinho
16.04.14
✎
23:21
|
ВЫБРАТЬ РАЗЛИЧНЫЕ
РеализацияТоваровУслугТовары.Номенклатура ПОМЕСТИТЬ ВТНоменклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка = &Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОстатки.СуммаОстаток ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки( &Дата, Счет = &Счет, , Организация = &Организация И Субконто1 В (ВЫБРАТЬ ВТНоменклатура.Номенклатура ИЗ ВТНоменклатура КАК ВТНоменклатура) И Субконто2 = &Субконто2 И Субконто3 = &Субконто3) КАК ХозрасчетныйОстатки |
|||
12
Dionis Sergeevich
16.04.14
✎
23:22
|
(11) зачем тут вт? в подзапрос запрос по тч сунуть и все
|
|||
13
ramir
16.04.14
✎
23:25
|
(12) Видимо не знаешь, что из параметра можно выбирать только во временную таблицу.
|
|||
14
Hans
16.04.14
✎
23:25
|
(12) так отладить проще.
|
|||
15
ramir
16.04.14
✎
23:25
|
(12) Или это уже отменили?)
|
|||
16
Dionis Sergeevich
16.04.14
✎
23:28
|
(15) нет разницы, все отработает
|
|||
17
ramir
16.04.14
✎
23:31
|
В ~8.2.8 точно не работало.
|
|||
18
Ненавижу 1С
гуру
16.04.14
✎
23:33
|
указать явно виды субконто в соответствующем параметре
|
|||
19
Dionis Sergeevich
16.04.14
✎
23:33
|
(17) ты имеешь ввиду что в параметрах виртуальной таблици нельзя использовать подзапросы? Проверю завтра - интересно стало
|
|||
20
sanja26
16.04.14
✎
23:55
|
ОстаткиПоНоменклатуре = ОстаткиВмагазине.Выполнить().Выгрузить();
Если ОстаткиПоНоменклатуре.Количество()=0 Тогда В типовые не заглядывал? Сделай проверку на результат запроса, а потом уже выгрузку, если строк много. |
|||
21
sanja26
16.04.14
✎
23:57
|
(17) может не умеешь конструктор открывать в параметрах?)
|
|||
22
sanja26
16.04.14
✎
23:59
|
(5) с чего это ок?
по релевантности сначали надо организацию, потом склад, потом номенклатуру |
|||
23
ramir
17.04.14
✎
00:12
|
(19) Из таблицы-параметра можно выбирать только во временную таблицу.
|
|||
24
Dionis Sergeevich
17.04.14
✎
00:19
|
(23) ты про передачу таблицы значений в параметр запроса? Так в (11) нет такого
|
|||
25
sanja26
17.04.14
✎
00:19
|
(23) Зачем свою таблицу подсовывать, если можно ее получить запросом, поместить в ВТ, а потом уже из нее выбирать в параметре
|
|||
26
Dionis Sergeevich
17.04.14
✎
00:21
|
я имею ввиду что так будет быстрее
ВЫБРАТЬ ХозрасчетныйОстатки.СуммаОстаток ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки( &Дата, Счет = &Счет, , Организация = &Организация И Субконто1 В (ВЫБРАТЬ РеализацияТоваровУслугТовары.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка = &Ссылка) И Субконто2 = &Субконто2 И Субконто3 = &Субконто3) КАК ХозрасчетныйОстатки |
|||
27
ramir
17.04.14
✎
00:31
|
(25) По-хорошему нужно перед записью проверять.
|
|||
28
sanja26
17.04.14
✎
00:37
|
(26) это уже как религия. Я вот вложенных запросов избегаю вообще и разгребать их не нравится.
|
|||
29
Tobi906
17.04.14
✎
00:39
|
кто кто-то помогите и мне у меня тоже проблемы с запросом!!!
v8: Помогите сделать Автозаполнение ТЧ при выборе значение из справочника! за раннее благодарю! |
|||
30
Dionis Sergeevich
17.04.14
✎
00:44
|
(28)вложенный запрос можно выполнить отдельно в консоли - там даже есть такое как выполнение только выделенного фрагмента - легко потдается анализу и отлаке. А куча временных таблиц в километровых запросах... одно мучение разбирать. КОгда создаются ВТ с выборкой из других ВТ. Ну просто геморой разобрать такое. Написать то много ума не надо. Дело вкуса конечно) Или действительно религии
|
|||
31
cons74
17.04.14
✎
08:20
|
(0) а еще можно посмотреть типовой механизм вывода остатка в форме подбора номенклатуры
|
|||
32
Drac0
17.04.14
✎
08:26
|
(25) во-первых, проверка обычно перед записью. Во-вторых, зачем делать лишнее обращение к БД, если нужные данные уже есть?
|
|||
33
Drac0
17.04.14
✎
08:28
|
(30) Запросы с ВТ просто стабильнее работают. Вложенные запросы могут так озадачить оптимизатор, что он выдаст абсолютно неадекватный план выполнения.
|
|||
34
ptiz
17.04.14
✎
08:46
|
Ввести новый РН по остаткам, заполнять его в подписке ПриЗаписи бух.регистра.
Чуть замедлится запись, зато получение остатков будет летать! |
|||
35
AlexITGround
17.04.14
✎
08:52
|
(23) верно, только во временную, без к-л джоинов, а потом уже в след запросе пакеты делай, что нужно
|
|||
36
AlexITGround
17.04.14
✎
08:52
|
+ 35 правда тут не тот случай :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |