|
Тест запроса | ☑ | ||
---|---|---|---|---|
0
happysan
28.06.22
✎
10:54
|
Всем привет!
У кого есть возможность давайте совместно протестируем запрос: Прокомментируйте запрос, всё что вы увидите: рабочий или в нем есть ошибка, оптимален или нет, какой будет результат и т.д.? Примечание: В конфигурации описан регистр накопления ТоварыНаСкладах, для которого по умолчанию определен индекс по периоду и всем измерениям в том порядке, в котором они перечислены в конфигураторе. ВЫБРАТЬ ТоварыНаСкладахОбороты.Регистратор КАК Регистратор, ТоварыНаСкладахОбороты.Регистратор.Номер КАК НомерРегистратора, ТоварыНаСкладахОбороты.Регистратор.Дата КАК ДатаРегистратора, ТоварыНаСкладахОбороты.Регистратор.Ответственный КАК Ответственный, ТоварыНаСкладахОбороты.Склад КАК Склад, ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура, ВЫРАЗИТЬ(ТоварыНаСкладахОбороты.СерияНоменклатуры КАК Справочник.СерииНоменклатуры) КАК СерияНоменклатуры, ТоварыНаСкладахОбороты.КоличествоПриход, ТоварыНаСкладахОбороты.КоличествоРасход, ЦеныНоменклатуры.Цена ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода, Регистратор) КАК ТоварыНаСкладахОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ТоварыНаСкладахОбороты.Номенклатура = ЦеныНоменклатуры.Номенклатура И (ЦеныНоменклатуры.Период В (ВЫБРАТЬ МАКСИМУМ(ЦеныПрошлогоМесяца.Период) ИЗ РегистрСведений.ЦеныНоменклатуры КАК ЦеныПрошлогоМесяца ГДЕ ЦеныПрошлогоМесяца.Период > НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, МЕСЯЦ))) ГДЕ (ТоварыНаСкладахОбороты.Номенклатура.Артикул = "249560" ИЛИ ТоварыНаСкладахОбороты.Номенклатура.Артикул = "D-0362") УПОРЯДОЧИТЬ ПО Регистратор, Склад, Номенклатура |
|||
1
Said_We
28.06.22
✎
10:56
|
(0) Выкинь этот запрос.
|
|||
2
happysan
28.06.22
✎
10:56
|
Я лично вижу следующее:
1. Первые 4 поля запроса выбирают поля составного типа и ещё через две точки. Нужно применить Выбор .... Когда...Тогда...Конец и ВЫРАЗИТЬ(). 2. Вместо подзапроса использовать временную таблицу. Сейчас ещё допишу. |
|||
3
asady
28.06.22
✎
10:56
|
(0) (ТоварыНаСкладахОбороты.Номенклатура.Артикул = "249560"
ИЛИ ТоварыНаСкладахОбороты.Номенклатура.Артикул = "D-0362") заменить на В (&МассивАртикулов) а лучше массив номенклатуры тогда и в таблице оборотов и цен отбор включай |
|||
4
happysan
28.06.22
✎
10:57
|
(1) Это тестовая задачка, не по работе.
|
|||
5
happysan
28.06.22
✎
10:58
|
(3) Да, тоже думал об этом.
|
|||
6
happysan
28.06.22
✎
10:59
|
Не забывайте ещё про вопросы: какой будет результат и рабочий ли вообще запрос.
|
|||
7
Said_We
28.06.22
✎
10:59
|
(5) В этом запросе вообще не думал. Совсем его выброси и забудь.
Цену только для тех номенклатур у которых на максимальную дату движение получать будешь? Не надо это разбирать - нет условия задачи нет разбора. |
|||
8
happysan
28.06.22
✎
11:07
|
(2) Продолжаю: 3. Излишнее индексирование полей.
|
|||
9
happysan
28.06.22
✎
11:07
|
(8) Нужно в запрос включить ИНДЕКСИРОВАТЬ ПО
|
|||
10
Said_We
28.06.22
✎
11:08
|
(9) Нет временной таблицы в запросе - куда собрался индексирование включать и зачем?
Условие задачи сначала озвучь. |
|||
11
Kassern
28.06.22
✎
11:12
|
(0) какая "красота" ТоварыНаСкладахОбороты.Регистратор.Номер КАК НомерРегистратора - надеюсь вы понимаете что сделает 1ска, чтобы получить этот номер)
|
|||
12
happysan
28.06.22
✎
11:13
|
(10) ВТ уже прокомментирована в (2). Условия задачи в (4).
|
|||
13
happysan
28.06.22
✎
11:13
|
(11) Я же прокомментировал это в (2).
|
|||
14
Kassern
28.06.22
✎
11:17
|
(13) а вы понимаете, зачем нужно что-то выражать и как поведет себя 1с, если этого не сделать? Если есть такое желание получать через точку, то нужно уже задумываться об архитектуре, либо обращаться напрямую к таблице.
Так же еще: ГДЕ (ТоварыНаСкладахОбороты.Номенклатура.Артикул = "249560" ИЛИ ТоварыНаСкладахОбороты.Номенклатура.Артикул = "D-0362") Лучше указать условие в виртуальной таблице, а не в ГДЕ, так как в этом случае, строчки срежутся еще до связи с другими таблицами, а не после. И лучше не ИЛИ через точку, а ТоварыНаСкладахОбороты.Номенклатура В (&МассивТоваров) |
|||
15
happysan
28.06.22
✎
11:20
|
(14) Это уже обсуждалось выше.
|
|||
16
happysan
28.06.22
✎
11:22
|
(2) Продолжаю: 4. Соединение с виртуальной таблицей может вызвать замедление запроса, лучше поместить его во ВТ.
|
|||
17
Йохохо
28.06.22
✎
11:23
|
(16) вам уже писали про полную хрень в условиях ПО, (7)
|
|||
18
happysan
28.06.22
✎
11:24
|
(17) Всё учтено.
|
|||
19
Said_We
28.06.22
✎
12:00
|
(17) Он сам с собой разговаривает - пусть продолжает. :-)
Его ответы не интересуют. Не нужно ему мешать. :-) |
|||
20
happysan
28.06.22
✎
12:06
|
(19) Я вам помогаю)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |