Вход | Регистрация


СрезПоследних оптимизация запроса(динамический список)

СрезПоследних оптимизация запроса(динамический список)
Я
   prtx
 
23.11.17 - 17:18
Всем доброго времени суток.

Нужен совет гуру по запросам.

Описание ситуации: есть динамический список в котором отображаются остатки товаров на складе с ценами.
проблемы: при открытии формы с этим дс. форма открывается долго. т.е запрос долго шерстит бд. когда с таким дс работают более 3-4 человек одновременно очень грузит сервер.

что нужно: оптимизировать запрос. ломаю голову и немогу понять куда еще проще...

запрос
ВЫБРАТЬ
    СправочникКлючиАналитикиУчетаНоменклатуры.Ссылка КАК АналитикаУчетаНоменклатуры,
    ПРЕДСТАВЛЕНИЕ(СправочникКлючиАналитикиУчетаНоменклатуры.Номенклатура) КАК Номенклатура,
    ПРЕДСТАВЛЕНИЕ(СправочникКлючиАналитикиУчетаНоменклатуры.СерияНоменклатуры) КАК СерияНоменклатуры,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
    РозничныеЦеныНоменклатурыСрезПоследних.Цена КАК Цена
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК СправочникКлючиАналитикиУчетаНоменклатуры
        ПО ТоварыНаСкладахОстатки.АналитикаУчетаНоменклатуры = СправочникКлючиАналитикиУчетаНоменклатуры.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РозничныеЦеныНоменклатуры.СрезПоследних(, Склад = &Склад) КАК РозничныеЦеныНоменклатурыСрезПоследних
        ПО ТоварыНаСкладахОстатки.АналитикаУчетаНоменклатуры = РозничныеЦеныНоменклатурыСрезПоследних.АналитикаУчетаНоменклатуры

методом тыка было выявлено, что проблема возникает при получении цены товара, ибо тотже запрос только без соединения с РозничныеЦеныНоменклатурыСрезПоследних.Цена летает - 0,17 секунды, а вот когда мы тяним из бд цену то запрос выполняется 16,5 секунд. разница примерно в 10 раз. это КАТАСТРОФА!

ЧТО ПОСОВЕТУЕТЕ?

1с 8.3 управляемые формы
 
 
   DrShad
 
1 - 23.11.17 - 17:21
а справочник ключей зачем?
   Buster007
 
2 - 23.11.17 - 17:24
РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
положить в вт
   Timon1405
 
3 - 23.11.17 - 17:24
(1) для уменьшения количества измерений в регистрах накопления
   prtx
 
4 - 23.11.17 - 17:24
(1) что бы избежать работы через "две точки".
   prtx
 
5 - 23.11.17 - 17:25
(2) временная не катит т.к. динамический список. не можно.((
   ИТ директор
 
6 - 23.11.17 - 17:28
(5) с какой-то версии уже можно...
1. Переписать запрос к ВТ среза на обычный запрос.
2. Положить его результат в ВТ, чтобы избежать соединения с подзапросом.
   Buster007
 
7 - 23.11.17 - 17:34
(5) у меня можно
   DrShad
 
8 - 23.11.17 - 17:34
(3) тогда бы с РС аналитики соединяли
   prtx
 
9 - 23.11.17 - 17:34
(6) ага нашел. с 8,3,8 можно а у мну 8,3,7. ну попробуем, но а какже раньше работали?(
   DrShad
 
10 - 23.11.17 - 17:35
у меня вот такой запрос работает на ура

ВЫБРАТЬ
    Товары.Ссылка КАК Ссылка,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
{ВЫБРАТЬ
    Ссылка.*,
    Характеристика.*,
    Остаток,
    Цена}
ИЗ
    Справочник.Номенклатура КАК Товары
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО Товары.Ссылка = ХарактеристикиНоменклатуры.Владелец
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО Товары.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ТипЦен = &ВидЦен)}) КАК ЦеныНоменклатурыСрезПоследних
        ПО Товары.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
{ГДЕ
    Товары.Ссылка.* КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка.* КАК Характеристика,
    (ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)) КАК Остаток,
    (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)) КАК Цена}
 
 Рекламное место пустует
   Жан Пердежон
 
11 - 23.11.17 - 17:37
(6) херовенько так работали.
одну платформу обновить мало, возможно ещё и режим совместимости конфы менять придется
   Михаил Козлов
 
12 - 23.11.17 - 17:51
Не понял зачем соединение РН ТоварыНаСкладах со справочником КлючиАналитикиУчетаНоменклатуры, если ключ аналитики уже в измерении регистра.
   АнализДанных
 
13 - 23.11.17 - 18:02
(12) +1
(0) Если сделаешь, через временные таблицы, то добавь ещё отбор по этой ВТ в параметры виртуальной таблицы "цены":

РегистрСведений.РозничныеЦеныНоменклатуры.СрезПоследних(АналитикаУчетаНоменклатуры в (вт.АналитикаУчетаНоменклатуры), Склад = &Склад) КАК РозничныеЦеныНоменклатурыСрезПоследних
   Мыш
 
14 - 23.11.17 - 18:05
(0) В принципе неправильный подход. Надо как 1С рекомендует. Оно сильно быстрее.
   lodger
 
15 - 23.11.17 - 18:07
(12) +1
(13) где ему вт взять на 8.3.7?
(14) а как 1С рекомендует?
   Мыш
 
16 - 23.11.17 - 18:13
(15) Руководство разработчика: 7.3.1.7. Дополнительная обработка данных, получаемых динамическим списком
   h-sp
 
17 - 23.11.17 - 20:27
попробуйте у реквизита АналитикаУчетаНоменклатуры поставить галочку Индексирование
   H A D G E H O G s
 
18 - 23.11.17 - 20:29
Итоги то у регистра сведений  включили?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует