Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Условия в запросе , Различия в установке условий: "Условия" или "Параметры ВТ&          
Lefer Подменю пользователя
сообщение 15.12.10, 10:29
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Доброго времени суток. Такой вот вопрос. Столкнулся с новым для себя, скорее с новым белым пятном в географии 1с механизма запросов. Есть справочник, который содержит в себе 10000 наименований и каждое из них делает 4 записи в регистр периодический независимый регистр сведений. Изначально был написан такой вот запрос:

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


Данный запрос вызывался в процедуре "ПередОткрытие" формы элемента справочника и результатом его выполнения были выбранные категории цен, исключая приходную. В запросе не стоит условие "Дата" - в скрижалях от Радченко сказано, что если обращаемся к регистру, используя метод "СрезПоследних" то дата необязательна - 8 умная. В итоге такой запрос работал жутко медленно - открывался секунд через 15. Поставил все таки дату в условие - не помогло.

Написал вот такой запрос

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


Разница в том, что я не устанавливал условия на вкладке "Условия", а задал условия в параметрах виртуальной таблицы. Запрос отрабатывает моментально.
Такой вот механизм я подсмотрел в УПП в модуле справочника Номенклатура, когда они заполняют цены - "КоманднаяПанельЦеныПоставщикаПеречитатьТекущиеЦены(Кнопка)"... подскажите, пожалуйста, в чем разница между условиями и параметрами виртуальной таблицы???


Signature
It's the end of the world as we know it and I feel fine

Vofka Подменю пользователя
сообщение 15.12.10, 10:32
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6

С параметрами виртуальной таблицы вы получаете только нужные записи.

С условиями вы получаете все записи, после чего они начинают фильтроваться по заданным условиями.

Lefer Подменю пользователя
сообщение 15.12.10, 10:41
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 155
Спасибо сказали: 11 раз
Рейтинг: 0

Цитата(Vofka @ 15.12.10, 11:32) *
С параметрами виртуальной таблицы вы получаете только нужные записи.

С условиями вы получаете все записи, после чего они начинают фильтроваться по заданным условиями.


Получается, что устанавливая условия для виртуальной таблицы, мы таким образом заранее отсекаем ненужное и сокращаем объем выбираемых данных? То есть для работы с таблицей регистра в запросе условия ВЫБОРКИ данных устанавливать в параметрах виртуальной таблицы, а условия ОБРАБОТКИ в условиях?


Signature
It's the end of the world as we know it and I feel fine

Vofka Подменю пользователя
сообщение 16.12.10, 7:55
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13948
Из: Киев
Спасибо сказали: 4514 раз
Рейтинг: 3635.6


zetovich Подменю пользователя
сообщение 16.12.10, 8:50
Сообщение #5

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 718
Из: Северодонецк
Спасибо сказали: 121 раз
Рейтинг: 0

1 вариант отберет с начало все, а потом наложит условие.
2 вариант отберет сразу по условию.
выводы делайте сами.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 22:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!