A1sCode библиотека 1С

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 исходного.