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 — массовая установка параметров из структуры.