Всем привет! Есть периодический регистр сведений. Делаю запрос и добавляю измерения в параметры получаю результат. Потом переношу из параметров в отбор, в секцию ГДЕ. И получаю тоже самое. Подскажите, ведь есть разница как отбирать записи? Как мне получить разные записи? Это не рабочая задача, просто для развития. Спасибо!
---
Если накладываете на измерения, то результат будет одинаковый, а вот если на ресурсы, то может быть совершенно разный. Например у вас есть регистр с размером оклада сотрудников, периодический. Вы хотите отобрать сотрудников, у которых размер оклада сейчас больше некоторой суммы. Делаете запрос к срезу последних с наложением условия в секции ГДЕ - у вас отрибаются последние записи по всем сотрудникам, из них отфильтровываются те, которые получают сейчас больше нужной суммы.

А вот если вы наложите условие в параметрах таблицы, то у вас в срез попадут все сотрудники, у которых размер оклада когда либо был больше нужной суммы, причем именно сейчас он может быть уже меньше. Т.е. в этом случае сначала примерится фильтр, а потом по отфильтрованным строкам построится срез.
---
Разница есть, в параметрах виртуальной таблицы отбор накладывается сразу, а в условии ГДЕ - уже на полученную выборку.
"Как мне получить разные записи?" - в каком плане ?
---
"Как мне получить разные записи?" - в каком плане В плане, что я проверила на некоторых клиентах все одинаково. Но ведь будут же условия, когда эти выборки не будут равны. Хочу найти этот момент. Измерения РС - Клиент, Сотрудник, Код работ, Договор.
---
Разными будут по времени исполнения запроса со временем роста количества записей в регистре.
---
а результат будет везде одинаковый? Я вот точно помню, что выборка при этих запросах может быть разная. Но пока не могу такую ситуацию смоделировать. Сотрудники с одинаковыми кодами работ могут быть разные. Т.е. код работ 001 и несколько разных сотрудников с этим кодом.
---
А при чем тут коды работ? Как я сказал, разница есть если накладывать отбор на ресурсы.
---
Результат будет одинаковый. Вы путаете с наложением отбора на РЕСУРСЫ. Вот на ресурсы отбор можно делать только в ГДЕ. Если немножко подумать, то понятно почему :)
---
Кто это вам сказал что только в ГДЕ? Можно и в параметрах, посмотрите в конструкторе запроса на примере какого нибудь периодического регистра.
---
Технически можно. Но это будет логической ошибкой, т.к. результат уже не будет иметь никакого отношения к "срезу последних". И вы сами об этом написали.
Если требуется не срез последних, а что-то более хитрое, то для этого расово верно использовать запрос к основной таблице, а не плодить невнятный код с неочевидной логикой.
---
А если мне нужно получить, например, последние записи об окладах людей, причем записи с окладом ниже определенной суммы. Например чтобы знать, когда в организации последний раз оклад был ниже такого-то значения (получить нужную дату)? Вы предлагаете изобрести велосипед в виде трехэтажного запроса с кучей соединений?
Но это будет логической ошибкой
Вы ошибаетесь, это будет просто другой запрос и другая выборка данных.
Прочитайте статью по ссылке из 15 поста.
---
Если накладываете на измерения, то результат будет одинаковый, а вот если на ресурсы, то может быть совершенно разный. Например у вас есть регистр с размером оклада сотрудников, периодический. Вы хотите отобрать сотрудников, у которых размер оклада сейчас больше некоторой суммы. Делаете запрос к срезу последних с наложением условия в секции ГДЕ - у вас отрибаются последние записи по всем сотрудникам, из них отфильтровываются те, которые получают сейчас больше нужной суммы.

А вот если вы наложите условие в параметрах таблицы, то у вас в срез попадут все сотрудники, у которых размер оклада когда либо был больше нужной суммы, причем именно сейчас он может быть уже меньше. Т.е. в этом случае сначала примерится фильтр, а потом по отфильтрованным строкам построится срез.
---
Если накладываете на измерения, то результат будет одинаковый, а вот если на ресурсы, то может быть совершенно разный. Например у вас есть регистр с размером оклада сотрудников, периодический. Вы хотите отобрать сотрудников, у которых размер оклада сейчас больше некоторой суммы.
Я помню где то статья была про это. Была бы благодарна за ссылку.
---
Скриншот прикладываю к сообщению.
---
Понятно. Т.е. получается, что если измерения, то без разницы где отбирать, в параметрах или в секции где? Без разницы в плане результата.
---
без разницы где отбирать, в параметрах или в секции где? Без разницы в плане результата.
В плане результата можно получить депремирование, например, за тормознутость запросов.
Правильно отбирать в параметрах.
---
Зачем вам статья? Всё уже написано в этой теме, и в плане производительности вам написали, и в плане механики работы запроса. Попробуйте 1 раз на тестовых данных и всё станет понятно.
А так всё написано тут
http://buh.ru/books/detail.php?ID=42660
---
Нашла, вот тут http://chel1c.ru/querry_where/ в конце пример с курсами валют.
---
Чтобы вам лишнее не читать, я нужный кусок сюда скопирую:

Рассмотрим пример. Дана таблица периодического регистра сведений КурсыВалют.
период валюта курс
1.01.07 Доллар 30.25
1.01.07 евро 40.5
1.02.07 доллар 28.3
1.02.07 евро 41.2
Требуется выбрать на наименьшую дату валюты, курс которых меньше 30 р.

Запрос с условием в параметрах виртуальной таблицы будет выглядет так:

```1c
    Запрос.Текст="ВЫБРАТЬ
    | КурсыВалютСрезПервых.Период,
    | КурсыВалютСрезПервых.Валюта,
    | КурсыВалютСрезПервых.Курс,
    |ИЗ
    | РегистрСведений.КурсыВалют.СрезПервых (, Курс < 30) КАК КурсыВалютСрезПервых"
```

В этом случае мы получим одну запись: Доллар 28,3 от 01.02.2007. Это будет верное решение задачи.

Если же мы поместим условие в секцию ГДЕ, то результат запроса будет пустым, поскольку сначала будет сделан срез первых по каждой валюте (в результате получим две записи от 01.01.2007 Доллар 30,25 и Евро 40,5), а потом из них будут выбраны записи, удовлетворяющие условию. Но обе полученные записи условию Курс < 30 не удовлетворяют.
---
Ок. Соглашусь, что в каком-то гипотетическом случае можно воспользоваться и этим приемом (для лаконичности). Не забыв обложиться комментариями.
Пока в реальных задачах не сталкивался. Всегда были нужны или стандартный срез или трехэтажный запрос.