|   |   | 
| 
 | СрезПоследних оптимизация запроса(динамический список) | ☑ | ||
|---|---|---|---|---|
| 0
    
        prtx 23.11.17✎ 17:18 | 
        Всем доброго времени суток.
 Нужен совет гуру по запросам. Описание ситуации: есть динамический список в котором отображаются остатки товаров на складе с ценами. проблемы: при открытии формы с этим дс. форма открывается долго. т.е запрос долго шерстит бд. когда с таким дс работают более 3-4 человек одновременно очень грузит сервер. что нужно: оптимизировать запрос. ломаю голову и немогу понять куда еще проще... запрос ВЫБРАТЬ СправочникКлючиАналитикиУчетаНоменклатуры.Ссылка КАК АналитикаУчетаНоменклатуры, ПРЕДСТАВЛЕНИЕ(СправочникКлючиАналитикиУчетаНоменклатуры.Номенклатура) КАК Номенклатура, ПРЕДСТАВЛЕНИЕ(СправочникКлючиАналитикиУчетаНоменклатуры.СерияНоменклатуры) КАК СерияНоменклатуры, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество, РозничныеЦеныНоменклатурыСрезПоследних.Цена КАК Цена ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК СправочникКлючиАналитикиУчетаНоменклатуры ПО ТоварыНаСкладахОстатки.АналитикаУчетаНоменклатуры = СправочникКлючиАналитикиУчетаНоменклатуры.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РозничныеЦеныНоменклатуры.СрезПоследних(, Склад = &Склад) КАК РозничныеЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.АналитикаУчетаНоменклатуры = РозничныеЦеныНоменклатурыСрезПоследних.АналитикаУчетаНоменклатуры методом тыка было выявлено, что проблема возникает при получении цены товара, ибо тотже запрос только без соединения с РозничныеЦеныНоменклатурыСрезПоследних.Цена летает - 0,17 секунды, а вот когда мы тяним из бд цену то запрос выполняется 16,5 секунд. разница примерно в 10 раз. это КАТАСТРОФА! ЧТО ПОСОВЕТУЕТЕ? 1с 8.3 управляемые формы | |||
| 1
    
        DrShad 23.11.17✎ 17:21 | 
        а справочник ключей зачем?     | |||
| 2
    
        Buster007 23.11.17✎ 17:24 | 
        РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
 положить в вт | |||
| 3
    
        Timon1405 23.11.17✎ 17:24 | 
        (1) для уменьшения количества измерений в регистрах накопления     | |||
| 4
    
        prtx 23.11.17✎ 17:24 | 
        (1) что бы избежать работы через "две точки".     | |||
| 5
    
        prtx 23.11.17✎ 17:25 | 
        (2) временная не катит т.к. динамический список. не можно.((     | |||
| 6
    
        ИТ директор 23.11.17✎ 17:28 | 
        (5) с какой-то версии уже можно...
 1. Переписать запрос к ВТ среза на обычный запрос. 2. Положить его результат в ВТ, чтобы избежать соединения с подзапросом. | |||
| 7
    
        Buster007 23.11.17✎ 17:34 | 
        (5) у меня можно     | |||
| 8
    
        DrShad 23.11.17✎ 17:34 | 
        (3) тогда бы с РС аналитики соединяли     | |||
| 9
    
        prtx 23.11.17✎ 17:34 | 
        (6) ага нашел. с 8,3,8 можно а у мну 8,3,7. ну попробуем, но а какже раньше работали?(     | |||
| 10
    
        DrShad 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С рекомендует. Оно сильно быстрее.     | |||
| 15
    
        lodger 23.11.17✎ 18:07 | 
        (12) +1 
 (13) где ему вт взять на 8.3.7? (14) а как 1С рекомендует? | |||
| 16
    
        Мыш 23.11.17✎ 18:13 | 
        (15) Руководство разработчика: 7.3.1.7. Дополнительная обработка данных, получаемых динамическим списком     | |||
| 17
    
        h-sp 23.11.17✎ 20:27 | 
        попробуйте у реквизита АналитикаУчетаНоменклатуры поставить галочку Индексирование     | |||
| 18
    
        H A D G E H O G s 23.11.17✎ 20:29 | 
        Итоги то у регистра сведений  включили?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |