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

A1sQ.GetQParams

Назначение: извлечь из QueryText имена параметров в формате &Имя и вернуть их в виде Структуры.
Порядок: имена добавляются в порядке первого появления в тексте, дубликаты игнорируются.

Сигнатура

Function GetQParams(QueryText) Export

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

// 1) Создаёт пустую Структуру Parameters
// 2) Идёт по строке QueryText, начиная с позиции 1, и ищет символ '&'
// 3) Для каждого найденного '&' двигает указатель вправо, пока встречаются
//    «допустимые» символы имени (буквы/цифры/подчёркивание), и вырезает подстроку
// 4) Вставляет имя в Parameters со значением Неопределено
// 5) Переходит к следующему поиску '&' после найденного имени
// 6) Возвращает Parameters
Что попадает в имя: последовательность символов после &, состоящая из букв, цифр и подчёркиваний. Имена обрываются на пробелах, знаках препинания/операторах, точках, переносах строк и т.п.

Примеры

1) Базовая выборка

QT = "
|ВЫБРАТЬ Ссылка
|ИЗ Документ.ПоступлениеТоваровУслуг
|ГДЕ Дата МЕЖДУ &D1 И &D2 И Организация = &Орг";
P = A1sQ.GetQParams(QT);
// P = { D1, D2, Орг } — порядок ровно как в тексте

2) Дубли в тексте

QT = "ВЫБРАТЬ &X КАК A, &X КАК B, &Y КАК C";
P  = A1sQ.GetQParams(QT);
// P = { X, Y } — X встречается дважды, но в структуру попадёт один раз

3) Параметры рядом со знаками

QT = "ГДЕ (Сумма >= &MinSum) И (Код ПОДОБНО &Mask)";
P  = A1sQ.GetQParams(QT);
// P = { MinSum, Mask }

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

✅ Возвращает именно Структуру: ключи — имена, значения — Неопределено
✅ Порядок ключей соответствует порядку первого появления
✅ Удобно для дальнейшей позиционной подстановки (см. BuildQ)
❗ Функция — «лёгкий лексер»: она не анализирует строки/комментарии и вложенный синтаксис
   — если в текстовом литерале есть символ '&', он тоже будет воспринят как начало параметра
❗ Имена параметров — только буквы/цифры/подчёркивание; точка, дефис и прочие символы разрывают имя
❗ Значения параметров не подставляются — только имена. Для установки значений используйте:
   BuildQ, BuildQByParams, SetQParams
  • BuildQ — позиционная установка по порядку имён из GetQParams.
  • BuildQByParams — установка по именам из строки ключей.
  • SetQParams — массовая установка параметров из структуры.