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

A1sQ.GetParams

Назначение: перечислить параметры, обнаруженные в тексте запроса (&Имя), и при желании напечатать их в лог.
Под что удобно: подготовка к заполнению параметров через SetQParams или сборка структуры для типизации.

Сигнатура

Function GetParams(Query, PrintParams = False) Export

Как работает (по исходному коду)

// Ищем параметры в тексте запроса (описания параметров)
Params = Query.FindParameters();

// При необходимости — печатаем их в лог (с номером, именем и типом)
If PrintParams Then 
    ParamNum = 1;
    For Each qp In Params Do
        A1sS.Print("Param #=" + ParamNum);
        A1sS.Print("Name=" + qp.Имя + " Type=" + qp.ТипЗначения);
        ParamNum = ParamNum + 1;
    EndDo;	           
EndIf;

Return Params;
Что возвращают элементы коллекции: это описания параметров с по крайней мере двумя полями — Имя и ТипЗначения. Их можно использовать, чтобы сформировать правильные значения для SetQParams.

Параметры

  • Query — объект Query с уже установленным текстом запроса.
  • PrintParams — Булево. Если Истина, функция напечатает в лог список параметров (через A1sS.Print).

Возвращает

Коллекцию описаний параметров запроса (перечень, поддерживающий цикл Для каждого).

Примеры

1) Быстро посмотреть параметры запроса

Q = A1sQ.CreateQ("ВЫБРАТЬ ... ГДЕ Дата МЕЖДУ &D1 И &D2 И Организация = &Org");
A1sQ.GetParams(Q, Истина); // выведет #, имя и тип каждого параметра

2) Сформировать структуру значений под SetQParams

Q   = A1sQ.CreateQ("... &D1 ... &D2 ... &Org ...");
Desc = A1sQ.GetParams(Q); // описание параметров
P   = Новый Структура;
Для Каждого D Из Desc Цикл
    // Инициализация по типу (пример хелпера)
    Если D.ТипЗначения = Тип("Дата") Тогда
        P.Вставить(D.Имя, ТекущаяДата());
    ИначеЕсли D.ТипЗначения = Тип("Строка") Тогда
        P.Вставить(D.Имя, "");
    Иначе
        P.Вставить(D.Имя, Неопределено);
    КонецЕсли;
КонецЦикла;
A1sQ.SetQParams(Q, P);

3) Интерактивная подсказка пользователю

Q = A1sQ.CreateQ(UserQueryText);
Desc = A1sQ.GetParams(Q);
Сообщить("Нужно заполнить: " + СтрСоединить(Массив(Desc, "Имя"), ", "));

Нюансы и ограничения

✅ Удобно для подсветки и валидации параметров пользовательских запросов
✅ Печать имён и типов помогает не промахнуться с SetQParams
❗ Функция не устанавливает значения параметров — только перечисляет
❗ Типы берутся из синтаксического анализа — финальная проверка произойдёт при Выполнить()
❗ Для получения именно «структуры значений» используйте GetQParams (если нужна другая форма)
  • SetQParams — установка значений параметров в Query.
  • ParseParams — выделить параметры из произвольного текста (по шаблону).
  • GetQParams — альтернативная выдача параметров.
  • CreateQ — создать Query.