Вход | Регистрация
 

В запрос имя поля как параметр

В запрос имя поля как параметр
Я
   Новичок_1С
 
02.09.20 - 08:58
Добрый день.
Подскажите, можно ли в запрос передать &ИмяПоля как параметр ?
Ну например в условии запроса

ГДЕ ИмяТаблицы.&ИмяПоля = Истина

Есть ли какие конструкции ? Или формировать текст запроса налету ?
   dka80
 
1 - 02.09.20 - 09:00
Формировать на лету или использовать схему запроса
   fisher
 
2 - 02.09.20 - 09:04
Нету таких конструкций.
   АнализДанных
 
3 - 02.09.20 - 09:42
(0)
1) Можно в запросе условие писать:

Выбор когда &АнализНаименования Тогда
ИмяТаблицы.Наименование
Иначе
ИмяТаблицы.Код
Конец

2) Можно, через построитель запроса. Всё писать не буду, примерно так реализуется:

ПостроительЗапроса = Новый ПостроительЗапроса;
ПрстроительЗапроса.текст = 
Выбрать * из ИмяТаблицы
{где 
имятаблицы.код как код,
Имятаблицы.Наименование как наименование}

ПостроительЗапроса.Параметры.Вставить("код", 123)
//или так: ПостроительЗапроса.Параметры.Вставить("наименование", "тест")


Запрос = ПостроительЗапроса.Получитьзапрос();

//тут система сама в текст запроса поставит нужный текст
   АнализДанных
 
4 - 02.09.20 - 10:15
(3) Вот полный код:

ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.Текст = "ВЫБРАТЬ
            |    *
            |ИЗ
            |    Документ.ЗаказКлиента КАК ЗаказКлиента                              
            |{ГДЕ
            |    ЗаказКлиента.Номер КАК Номер,
            |    ЗаказКлиента.Контрагент.* КАК Контрагент";

Если ЕстьУсловиеПоНомеру Тогда
    // Здесь в текст запроса добавится строка "ГДЕ ЗаказКлиента.Номер = &Номер

    ЭлОтбора = ПостроительЗапроса.Отбор.Добавить("Номер");
    ЭлОтбора.Использование = Истина;
    ЭлОтбора.Значение = КлючИЗначение.Значение;
КонецЕсли;

Если ЕстьУсловиеПоКонтрагенту Тогда
    // Здесь в текст запроса добавится строка "ГДЕ ЗаказКлиента.Контрагент В &СписокКонтрагентов"

    ЭлОтбора = ПостроительЗапроса.Отбор.Добавить("Контрагент");
    ЭлОтбора.Использование = Истина;
    ЭлОтбора.ВидСравнения = ВидСравнения.ВСписке;
    ЭлОтбора.Значение = СписокКонтрагентов;
КонецЕсли;

// В "Запрос.Текст" система сама добавит нужные условия, если ты их добавлял в "отбор" выше

Запрос = ПостроительЗапроса.ПолучитьЗапрос();

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