A1sQ.SetQParams
Назначение: массово установить параметры в объекте Запрос по структуре имя → значение и вернуть тот же объект для чейнинга.
Где полезно: когда параметры удобно формировать программно (из настроек/формы) и задавать по именам, а не позиционно.
Где полезно: когда параметры удобно формировать программно (из настроек/формы) и задавать по именам, а не позиционно.
Сигнатура
Function SetQParams(Query, Parameters = Undefined) Export
Как работает
// По коду A1sQ (упрощённо):
Если Parameters <> Неопределено Тогда
Для Каждого Парам Из Parameters Цикл
Query.УстановитьПараметр(Парам.Ключ, Парам.Значение);
КонецЦикла;
КонецЕсли;
Возврат Query; // удобно для чейнинга
Параметры
- Query — объект Запрос, в который будут установлены параметры.
- Parameters — Структура с парами ИмяПараметра → Значение. Может быть Неопределено (тогда ничего не произойдёт).
Возвращает
Тот же Запрос (Query), что передали на вход — для удобного «чейнинга» вызовов.
Примеры
1) Базовый сценарий
Q = A1sQ.CreateQ("ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата МЕЖДУ &D1 И &D2 И Организация = &Орг");
П = Новый Структура("D1, D2, Орг", НачалоПериода, КонецПериода, ТекОрганизация);
Q = A1sQ.SetQParams(Q, П);
ТЗ = Q.Выполнить().Выгрузить();
2) Чейнинг: задать текст, параметры и сразу выполнить
ТЗ = A1sQ.SetQParams(
A1sQ.CreateQ("ВЫБРАТЬ * ИЗ Справочник.Номенклатура ГДЕ Родитель = &P"),
Новый Структура("P", Родитель)
).Выполнить().Выгрузить();
3) Комбинация с CreateAndLoad (общие ВТ)
Q2 = A1sQ.CreateAndLoad("ВЫБРАТЬ * ИЗ ВТ_IDs", Q1); // Q1 создал ВТ ранее
Q2 = A1sQ.SetQParams(Q2, Новый Структура("MinSum", 1000)); // параметр для условия, если есть в тексте
С = Q2.Выполнить().Выбрать();
Сравнение с соседями
| Функция | Как задаёт значения | Когда выбрать |
|---|---|---|
| SetQParams | По именам из Структуры | Есть структура/словарь значений из формы/настроек |
| BuildQ | Позиционно (Value1..Value8) | Нужно быстро — без подготовки структуры |
| BuildQByParams | По строке имён + Value1..Value8 | Хотите явный порядок без структуры |
Нюансы и ограничения
✅ Возвращает тот же объект Запрос — удобно для цепочек
✅ Можно передать пустую/Неопределено структуру — просто ничего не произойдёт
❗ Ключи в структуре должны ровно совпадать с именами &Параметров в тексте
❗ Значения типа Неопределено будут установлены как есть — ошибка проявится на Выполнить()
❗ Функция не работает с TempTablesManager — задавайте его при создании запроса (CreateQ/CreateQEnhanced)
Связанные функции
- BuildQ — позиционно задать значения.
- BuildQByParams — задать по именам из строки ключей.
- CreateQ / CreateQEnhanced — создание запроса (+ TTM).
- CreateAndLoad — новый запрос с TTM исходного.