====== Медленная выборка из таблиц ====== ===== Ситуация ===== Следующий запрос к регистрам вида РегистрСведений.* (например РегистрСведений.ЦеныНоменклатуры.СрезПоследних) ЗапросЦенХарактеристики.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПЕРВЫЕ 1 | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних |ГДЕ | ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен) | И ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры В(&ХарактеристикаНоменклатуры)"; работает ОЧЕНЬ долго. ===== Причина ===== Условия в таком запросе прописываются для //виртуальной// таблицы ''СрезПоследних'', которая не хранится в базе данных а строится в процессе выборки из реальной таблицы (и на это уходит время). Получается, что она сначала строится, а потом из нее выбираются нужные поля, и по этому все работает так медленно. ===== Решение ===== ==== Решение через запрос (не очень быстрое) ==== Для виртуальных таблиц параметры нужно задавать не на вкладке "Условия" в конструкторе запроса, а на вкладке "Таблицы и поля". Над перечнем "Таблицы" необходимо нажать кнопку "Параметры виртуальной таблицы", а в появившемся окне задать параметры. В результате получается, что виртуальная таблица сразу строится только из полей, удовлетворяющим условиям. В этом случае запрос приобретает следующий вид: ЗапросЦенХарактеристики.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ПЕРВЫЕ 1 | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры И ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних"; ==== Решение через Отбор (самое быстрое) ==== Отбор = Новый Структура("ТипЦен, Номенклатура, ХарактеристикаНоменклатуры"); Отбор.ТипЦен = ТипЦен; Отбор.Номенклатура = Номенклатура; Отбор.ХарактеристикаНоменклатуры = ХарактеристикаНоменклатуры; Выборка = РегистрыСведений.ЦеныНоменклатуры.СрезПоследних(ТекущаяДата(),Отбор); {{tag>1С 8.2 РегистрСведений.ЦеныНоменклатуры.СрезПоследних РегистрСведений.ЦеныНоменклатуры.СрезПоследних запрос ускорение}}