ЛЕВОЕ СОЕДИНЕНИЕ с Срез Последних в динамическом списке #800566


#0 by MistaEr
Как оптимизировать данный запрос для динамического списка:
#1 by Лефмихалыч
отбор по типу цены добавь в параметры виртуальной таблицы
#2 by runoff_runoff
в условия виртуальной таблицы добавить.. Номенклатура В (Выбрать Товары.Ссылка ИЗ Справочник.Номенклатура как Товары)
#3 by Лефмихалыч
вот так не надо делать
#4 by runoff_runoff
по идее по сонвной таблице отбор ограничен видимыми строками..
#5 by Вафель
в регистре итоги хранятся?
#6 by runoff_runoff
1с использует внутренние соединения с основной таблицей в настройках "сложных" динамических списков..
#7 by MistaEr
Будем считать, что у меня нет там измерения ТипЦены (ВидЦены), а в форме есть отбор по типу товара. Вот такой запрос:     ЦеныНоменклатурыСрезПоследних.Цена ИЗ
#8 by MistaEr
Нет, даже вот такой:     ЦеныНоменклатурыСрезПоследних.Цена ИЗ Как оптимизировать его, чтоб не было соединений
#9 by Лефмихалыч
это совсем другой запрос. В этом запросе соединение нафиг не нужно абсолютно
#10 by Лефмихалыч
а это превратит левое во внутреннее при установке отбора на форме
#11 by Лефмихалыч
+ и соединение опять станет ненужным
#12 by Вафель
из 2х таблиц нельзщя получить данные без соединения
#13 by Лефмихалыч
нахер тебе справочник сдался, если тебя интересуют только те записи, для которых есть цена?
#14 by Лефмихалыч
так ему данные из одной нужны!
#15 by Вафель
А цена?
#16 by MistaEr
Да, Номенклатура вся нужна
#17 by MistaEr
цены может не быть, ну ладно там ЕстьNull приму
#18 by Вафель
Даже если по регистру выбирать, то все равно неявные соединения будут
#19 by Лефмихалыч
тогда все свои запросы выкидывай в лес и верни, как было, только в параметр виртульной аблицы добавь {(Номенклатура.ТипНоменклатуры = &ТипНоменклатуры)}
#20 by Лефмихалыч
убери из ГДЕ этот отбор насовсем
#21 by MistaEr
Где устанавливает отбор в талицу самого справочника, без него никак
#22 by Лефмихалыч
а! точно, в справочнике тоже есть это поле. Ты прав. ну, тогда оставь . Как-то сильнее ты это уже не оптимизируешь.
#23 by MistaEr
А параметр виртуальной таблицы чтоб лишние записи не рассматривать
#24 by Вафель
Галка по итогам регистра включена?
#25 by MistaEr
есть что нибудь подобное в типовых решениях?
#26 by MistaEr
Разрешить итоги: срез последних? Нет
#27 by runoff_runoff
искать слово Соединение во всех элементах форм
#28 by Вафель
так поставь. ускорение будет громадное
#29 by MistaEr
Может как то так? ВЫБРАТЬ     СправочникНоменклатура.Ссылка,     0 КАК Цена ИЗ     Справочник.Номенклатура КАК СправочникНоменклатура
#30 by MistaEr
А почему ее не поставили разработчики?
#31 by Timon1405
у вас что в базе всего один вид цен? иначе ДС должен выдавать "Дублирование ключевых полей в поле ссылка"
#32 by MistaEr
Не суть. Вопрос в другом. Я хотел без соединений. А если СрезПоследних в отдельной вложенной таблице?
#33 by Вафель
в ерп стоит
#34 by MistaEr
А может как то в общей функции такие вещи рассчитывать и получать как в СКД Вычисляемые поля
#35 by MistaEr
Так нашел я. В общем в типовых конфигурациях тоже практикуется левое соединение
#36 by MistaEr
А можно подробнее про это?
#37 by Timon1405
#38 by Buster007
странно, если условия соединения написаны корректно, то это не то место, которое стоит пытаться оптимизировать.
#39 by MistaEr
Если есть такое условие как у меня (через точку) СрезПоследних(, {(Номенклатура.ТипНоменклатуры = &ТипНоменклатуры)}) НЕ рекомендуется ставить флажок итогов
#40 by MistaEr
Для обычного запроса да, но для динамического списка не помешает
#41 by Buster007
ТипНоменклатуры проиндексировано?
#42 by MistaEr
Нет
#43 by EugeniaK
Нормальный запрос. Даже для динамического списка. Можно добавить отбор по остальным полям регистра. И проверить, что итоги по регистру включены (срез последних)
#44 by Timon1405
почитайте на ИТС пишут что если есть обращение к полям через точку, то итоги использовать не рекомендуется
#45 by Buster007
ты можешь сделать запрос как в с включенным итогом по регистру и в условии где написать СпрНоменклатура.ТипНоменклатуры = тратата Не забудь проиндексировать по ТипНоменклатуры Тогда у тебя не будет выполняться лишнее соединение и получение максимума по дате при обращении к срезу последних. Это самый быстрый вариант. Наверное, если тебе уж ппц как быстро, можешь сделать фоновое задание, которое будет кешировать последнюю цену в самом элементе номенклатуры. так будет ваще летать.
#46 by Вафель
не совсем понятно эта рекомендация
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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