Оптимизация запроса 1С УТ #778579


#0 by crisalis
Доброго время суток, помогите что то сделать с запросом, работает, но не оптимально, заранее благодарен, вот это чудо:
#1 by vicof
Убрать вложенные запросы, убрать обращения через точку, при обращении к регистратору использовать ВЫРАЗИТЬ, использовать параметры виртуальных таблиц, индексировать измерения, по которых идут соединения и условия
#2 by crisalis
"убрать обращения через точку" - это как ?
#3 by vicof
ТоварыНаСкладахОбороты.Регистратор.ДокументПередачи.Сделка как - это уже вопрос фантазии. Писать сделку в регистр отдельнеым измерением, не учитывать вообще, еще чонить.
#4 by crisalis
"Убрать вложенные запросы" - имеется ввиду только вложенные запросы или пакетный запрос тоже попадает под раздачу
#5 by crisalis
оххх, измерение это конечно хорошо , но нет, это потом проведения каждого регистратора исправлять, как то стрёмно.
#6 by Fragster
можно перед записью набора сделать подписку, в которой заполнять доп. измерение/ресурс/реквизит
#7 by Широкий
ВЫРАЗИТЬ где??
#8 by crisalis
а вот за ВЫРАЗИТЬ спасибо , как-то не приходилось использовать, до сих пор.
#9 by youalex
в первом запросе вообще непонято зачем вложенный запрос. Если даже не вдаваться, то объединение - также помещается в Вт. Что за условие "группОтгрузка.Сделка = &Заказ" ? Может быть стоит логику от него начинать строить?
#10 by youalex
как  "выражать", если там три типа может быть (судя по условиям ССЫЛКА). Через ОБЪЕДИНИТЬ ВСЕ ?
#11 by crisalis
группОтгрузка.Сделка = &Заказ - это для того чтобы получить по одному заказу (чтобы сверить) , этот код я добавил в консольке, в запросе в базе его нет
#12 by crisalis
с ВЫРАЗИТЬ
#13 by youalex
смысл? Выражать нужно поля до точки, т..е до неявного соединения. Т.е. ВЫРАЗИТЬ(ТоварыНаСкладахОбороты.Регистратор КАК документ.РеализацияТоваровУслуг).Сделка
#14 by crisalis
"в первом запросе вообще непонято зачем вложенный запрос" - для группировки, я понял что вы имеете ввиду сейчас исправлю
#15 by youalex
Возможно, стоит посмотреть в сторону регистра на Продажи, там есть поле ЗаказПокупателя.
#16 by youalex
там же ничего не группируется, нет агрегатных полей, "сгруппировать" можно через ОБЪЕДИНИТЬ  (не ОБЪЕДИНИТЬ ВСЕ)
#17 by youalex
+ во втором пакете запроса группировать тоже не нужно, т.к. используются только измерения;  вирт. таблица Обороты и так должна сгруппировать по ним (тут могу наврать)
#18 by crisalis
#19 by youalex
ДокументПередачи - по идее тоже нужно выражать (посмотрите сколько типов у этого реквизита д-та РасходныйОрдерНаТовары) Т.е. ВЫРАЗИТЬ(ВЫРАЗИТЬ(ТоварыНаСкладахОбороты.Регистратор КАК Документ.РасходныйОрдерНаТовары).ДокументПередачи КАК Документ.РеализацияТоваровУслуг).Сделка жесть конечно) Я бы сделал явными соединениями с таблицами документов
#20 by aleks_default
Обороты вобще не нужны, лучше обращение к реальной таблице
#21 by crisalis
и что потом самому группировать и суммировать ?
#22 by crisalis
почему не нужны , там сразу получаю искомую сумму
#23 by aleks_default
А ты там что-то суммируешь? Там вообще количества нет в конечной таблице. Только сделка.
#24 by crisalis
так есть суммарасход
#25 by aleks_default
РегистрНакопления.ТоварыНаСкладах.Обороты где тут сумма или количество?
#26 by crisalis
4 типа понял, надо поправить, изначально там было количество потом я убрал Скажите а может я вообще не правильно все делаю- мне надо получить таблицу заказов и "сумму отгрузки"  (это как объяснил мне бухгалтер все реализации и реализации с проведёнными документами расходный ордер на товары)
#27 by crisalis
если нет расходого ордера то не учитывать плюс к этому надо учесть и возвраты
#28 by youalex
посмотри в сторону регистров Продажи ,  Заказы.
#29 by crisalis
Продажи мне тоже подходят , ведь реализация делает движения по регистру Продажи если даже расходный ордер на основании Реализации не проведен. А может склеить Продажи и ПродажиСебестоимость ? Подтолкните пожалуйста , как сделать лучше
#30 by ViSo76
Топикастр весёлый парень... пишет такие расчудесные запросы просто ужас... 1. В начале напиши что хочешь получить, каково задание. 2. Что за тема со всеми движениями по складам за всё время существование базы ( ТоварыНаСкладах )? PS: Где скорее всего будет выполнена после поднятия с диска всех движений...
#31 by crisalis
хочу получить сумму отгрузки (это сумма всех документов реализация со склада и по ордеру (только учесть что если нет расходного ордера тогда не включать эти расходные в выборку) - возвраты)
#32 by crisalis
2. это чтобы потом слеить по сделке "ЗаказПокупателя" и получить итоговою таблицу : ЗаказаПокупателя|СуммаЗаказа|СуммаСУчетомКорр|СуммаОтгрузки
#33 by ViSo76
Во первых всегда есть интерес смотреть за период ( нужно учитывать ), во вторых движения по складу не только расход, но и приход, перемещения, списания и по этому:   Нужно взять регистр накопления Продажи, в нём фиксируются как продажи, так и возвраты ( Скорее всего возврат у вас создаётся на основе РН, а не заказа что не принципиально ). Так же есть ссылка на ЗаказПокупателя ( чтобы взять сумму начального заказа ). Скорее всего РасходныйОрдерНаТовары так же делается на основании РН, по этому не составляет труда соединить движения взятые из "Продажи" свернуть, чтобы получить сумму и регистратор ( РН ), и затем соединить уже с "Ордером", для проверки факта отгрузки. PS: УТ10 явно
#34 by crisalis
Вот так вроде бы быстрее получилось:
#35 by floody
В этой ситуации нужно получать инфу из регистров. Как например ваш запрос учитывает корректировки?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С