|
СрезПоследних оптимизация запроса(динамический список) | ☑ | ||
---|---|---|---|---|
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
|
Итоги то у регистра сведений включили?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |