Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Реквизит объекта в запросе

Реквизит объекта в запросе
Я
   John342
 
07.06.20 - 00:01
Доброй ночи, товарищи!

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

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

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.