Доброго времени суток. Такой вот вопрос. Столкнулся с новым для себя, скорее с новым белым пятном в географии 1с механизма запросов. Есть справочник, который содержит в себе 10000 наименований и каждое из них делает 4 записи в регистр периодический независимый регистр сведений. Изначально был написан такой вот запрос:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЦеныТоваровСрезПоследних.КатегорияЦены,
| ЦеныТоваровСрезПоследних.Цена,
| ЦеныТоваровСрезПоследних.Наценка
|ИЗ
| РегистрСведений.ЦеныТоваров.СрезПоследних КАК ЦеныТоваровСрезПоследних
|ГДЕ
| ЦеныТоваровСрезПоследних.Валюта = &Валюта
| И ЦеныТоваровСрезПоследних.Товар = &Товар
| И ЦеныТоваровСрезПоследних.КлассТовара = &КлассТовара
| И ЦеныТоваровСрезПоследних.КатегорияЦены <> &ЦенаПрих";
Запрос.УстановитьПараметр("Валюта",ВалютаПрихода);
Запрос.УстановитьПараметр("Товар",Ссылка);
Запрос.УстановитьПараметр("КлассТовара",КлассТовара);
Запрос.УстановитьПараметр("ЦенаПрих",Справочники.КатегорииЦен.ЦенаПриходная);
Данный запрос вызывался в процедуре "ПередОткрытие" формы элемента справочника и результатом его выполнения были выбранные категории цен, исключая приходную. В запросе не стоит условие "Дата" - в скрижалях от Радченко сказано, что если обращаемся к регистру, используя метод "СрезПоследних" то дата необязательна - 8 умная. В итоге такой запрос работал жутко медленно - открывался секунд через 15. Поставил все таки дату в условие - не помогло.
Написал вот такой запрос
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЦеныТоваровСрезПоследних.КатегорияЦены,
| ЦеныТоваровСрезПоследних.Цена,
| ЦеныТоваровСрезПоследних.Наценка
|ИЗ
| РегистрСведений.ЦеныТоваров.СрезПоследних(
| &Дата,
| Валюта = &Валюта
| И КатегорияЦены <> &Цена
| И КлассТовара = &КлассТовара
| И Товар = &Товар) КАК ЦеныТоваровСрезПоследних";
Запрос.УстановитьПараметр("Валюта",ВалютаПрихода);
Запрос.УстановитьПараметр("Товар",Ссылка);
Запрос.УстановитьПараметр("КлассТовара",КлассТовара);
Запрос.УстановитьПараметр("Цена",Справочники.КатегорииЦен.ЦенаПриходная);
Запрос.УстановитьПараметр("Дата",ТекущаяДата());
Разница в том, что я не устанавливал условия на вкладке "Условия", а задал условия в параметрах виртуальной таблицы. Запрос отрабатывает моментально.
Такой вот механизм я подсмотрел в УПП в модуле справочника Номенклатура, когда они заполняют цены - "КоманднаяПанельЦеныПоставщикаПеречитатьТекущиеЦены(Кнопка)"... подскажите, пожалуйста, в чем разница между условиями и параметрами виртуальной таблицы???