Имя: Пароль:
1C
1С v8
Реквизит объекта в запросе
0 John342
 
07.06.20
00:01
Доброй ночи, товарищи!

Не могу понять один момент в запросах.

Можно ли как-то в запросе использовать реквизит объекта, в котором пишется запрос?
Нужно отобрать некоторые записи, сравнивая в условии со значением реквизита, который находится в объекте.

В конструкторе запросов я покопался, что-то не нашёл там ничего, связанного с моим объектом.
1 xoma1c
 
07.06.20
00:06
(0) https://helpme1c.ru/parametry-v-zaprosax-v-1s-8-v-primerax
Запрос.УстановитьПараметр
2 Фрэнки
 
07.06.20
00:11
Для (0) загадка : А если объект только создан, но никуда не записан, как тебе запрос его найдет в базе?
3 xoma1c
 
07.06.20
00:13
(0) Е. Ю. Хрусталева

Язык запросов «1С:Предприятия 8»

Рекомендую прочитать, а потом уже углубляться, быстрее будет.
4 John342
 
07.06.20
00:15
(1) Пробовал. Не прокатывает. Выдаёт ошибку "Поле не найдено".
5 Фрэнки
 
07.06.20
00:17
без примеров кода можем только высказать соболезнования.

Тебя они утешат?
6 John342
 
07.06.20
00:19
(5)     Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ПериодН",Период.ДатаНачала);
    Запрос.УстановитьПараметр("ПериодК",Период.ДатаОкончания);
    Запрос.УстановитьПараметр("Сумма",Сумма);
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказКлиента.Номер КАК Номер,
        |   ЗаказКлиента.Дата КАК Дата,
        |   ЗаказКлиента.Партнер КАК Партнер,
        |   ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
        |   ЗаказКлиента.Менеджер КАК Менеджер
        |ИЗ
        |    Документ.ЗаказКлиента КАК ЗаказКлиента
        |ГДЕ
        |   (ЗаказКлиента.Дата >= Период.ДатаНачала И
        |   ЗаказКлиента.Дата <= Период.ДатаОкончания) И
        |   ЗаказКлиента.СуммаДокумента > Сумма";
    
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
7 Фрэнки
 
07.06.20
00:23
"ВЫБРАТЬ
        |    ЗаказКлиента.Номер КАК Номер,
        |   ЗаказКлиента.Дата КАК Дата,
        |   ЗаказКлиента.Партнер КАК Партнер,
        |   ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
        |   ЗаказКлиента.Менеджер КАК Менеджер
        |ИЗ
        |    Документ.ЗаказКлиента КАК ЗаказКлиента
        |ГДЕ
        |   (ЗаказКлиента.Дата >= &ПериодН И
        |   ЗаказКлиента.Дата <= &ПериодК) И
        |   ЗаказКлиента.СуммаДокумента > &Сумма";
8 John342
 
07.06.20
00:25
(7) Это мы ссылаемся на конкретные реквизиты?
9 xoma1c
 
07.06.20
00:28
(8) тут установили параметр ПериодН

Запрос.УстановитьПараметр("ПериодН",Период.ДатаНачала);

тут он сработает в запросе обирая из общей кучи

&ПериодН
10 xoma1c
 
07.06.20
00:31
(8) отсутствие полной картины приведет в итоге к неверным решениям, рекомендую прочитать книгу для систематизации знаний.
11 Сергиус
 
07.06.20
01:23
(0)Смотря что за реквизит Объекта, если он присутствует в структуре конфигурации то по нему в запросе спокойно можно делать отбор. Но может быть ситуация, что реквизит Объекта создан в конкретной форме и его использовать в запросе нельзя.
12 Фрэнки
 
07.06.20
08:51
(8) это вообще не имеет смысла в терминах "ссылаемся" или "реквизиты"

По твоему коду, последовательно что происходит?
Реквизиты текущего объекта устанавливаются в параметры, точнее, один из них
это строчка
Запрос.УстановитьПараметр("ПериодН",Период.ДатаНачала);

Вопрос: Внутри запроса что используется после установки Параметра ПериодН? Ответ: Используется просто значение в текущем Параметре.
Вопрос: А как значение параметра использовать? Ответ: пиши для этого параметра вот так &ПериодН

з.ы. Над этим нужно посидеть немного. Медитация нужна... Но это просто синтаксис. Читаешь буквари с примерами и все становится очевидным.