Запрос. Как правильнее сделать

1. Zixxx 09.04.21 21:18 Сейчас в теме
Собственно задача простая
1. Получить остатки по товарам
2. Получить склады по которым получили остатки
3. Получить номенклатуру по которым получили остатки

Какие варианты вижу
1. Можно сделать запрос с тремя пакетам в каждом получая остатки, только для 2 и 3 выбрать Без повторяющих
2. Либо сделать запрос по остаткам, поместить во временную таблицу, из нее потом получить остатки, склады и номенклатуру и затем удалить временную таблицу.
3. Можно получить таблицу по остаткам, а потом обходом заполнять массивы складов и номенклатуры, предварительно делая поиск

Как будет правильнее и быстрее?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 09.04.21 21:20 Сейчас в теме
13. spacecraft 12.04.21 14:24 Сейчас в теме
(1)
2. Либо сделать запрос по остаткам, поместить во временную таблицу, из нее потом получить остатки, склады и номенклатуру и затем удалить временную таблицу.

Можно несколько упростить 2 вариант. Исключить "из нее потом получить остатки" и не удалять временную таблицу. Пакет запросов позволяет получить данные из временной таблицы.
Запрос.ВыполнитьПакетСПромежуточнымиДанными()
Что в общем будет вполне достаточно для данного случая.
14. spacecraft 12.04.21 14:53 Сейчас в теме
(1)
3. Можно получить таблицу по остаткам, а потом обходом заполнять массивы складов и номенклатуры, предварительно делая поиск

Если нужно будет выборку Остатки все равно обходить, то можно не делать поиск, а сохранять склады и номенклатуру в соответствие.
3. DenisCh 10.04.21 04:24 Сейчас в теме
А просто обратиться к ВТ регистра .Остатки?
ВЫБРАТЬ Номенклатура, Склад, КоличествоОстаток
ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки

Не?
6. Zixxx 10.04.21 08:52 Сейчас в теме
4. ab_initio 95 10.04.21 08:42 Сейчас в теме
Если я правильно понял, сами остатки не нужны, нужны только списки складов и номенклатуры?
Тогда так:
выбрать Номенклатура, Количество из РегистрНакопления.ТоварыНаСкладах.Остатки(&НаМомент,)
;
выбрать Склад, Количество из РегистрНакопления.ТоварыНаСкладах.Остатки(&НаМомент,)

В пакете две выборки - это и есть ваши списки.
Повторов в них не будет.
7. Zixxx 10.04.21 08:53 Сейчас в теме
(4) В пакете три выборки 1. остатки по складам и номенклатуры, 2. склады, 3. номенклатура
8. ab_initio 95 10.04.21 09:15 Сейчас в теме
(7) Так в том-то и дело, что цель не очень понятна.
Вы что на выходе получить хотите? Все три набора? С условиями? Или без условий, все данные остатков?
11. Zixxx 12.04.21 12:30 Сейчас в теме
(8) Все расписано, думайте...
5. UtSpar 134 10.04.21 08:43 Сейчас в теме
Все три работать будут, даже возможно производительностью можно пренебречь. Но как бы было удобнее читать запрос и его потом изменять при необходимости?

Вероятно второй вариант, в нем все последовательно и логично:
1. Запрос по остаткам -> ВТ_Остатки
2. Склады по этим остаткам ->ВТ_Склады
3. Номеклатура по остаткам -> ВТ_Номенклатура.


Но это если у вас как вы описали цели три по пунктам.
Возможно решение другое, если вам на самом деле нужно что то одно.
9. just666 12.04.21 01:05 Сейчас в теме
10. Lenten 25 12.04.21 10:47 Сейчас в теме
Попробовал все 3 способа - все одинаково. В моей базе по 15 - 16 миллисекунд.
Пробовал на 11 ут, может у кого база побольше будет поинтереснее
Прикрепленные файлы:
Сравнение.epf
12. UtSpar 134 12.04.21 12:46 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот