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

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

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

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

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

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

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

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

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

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

Если ЕстьУсловиеПоНомеру Тогда
    // Здесь в текст запроса добавится строка "ГДЕ ЗаказКлиента.Номер = &Номер
    ЭлОтбора = ПостроительЗапроса.Отбор.Добавить("Номер");
    ЭлОтбора.Использование = Истина;
    ЭлОтбора.Значение = КлючИЗначение.Значение;
КонецЕсли;

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

// В "Запрос.Текст" система сама добавит нужные условия, если ты их добавлял в "отбор" выше
Запрос = ПостроительЗапроса.ПолучитьЗапрос();
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn