A1sQ.ParseParams
Назначение: превратить KeyString вида "A, B, C" и значения Value1..Value8 в Структура имя → значение.
Поведение: пары формируются по индексу (A=Value1, B=Value2, …), элементы со значением Undefined пропускаются.
Поведение: пары формируются по индексу (A=Value1, B=Value2, …), элементы со значением Undefined пропускаются.
Сигнатура
Function ParseParams(
KeyString,
Value1 = Undefined, Value2 = Undefined, Value3 = Undefined, Value4 = Undefined,
Value5 = Undefined, Value6 = Undefined, Value7 = Undefined, Value8 = Undefined
) Export
Как работает (по исходному коду)
// 1) Keys = StrSplit(KeyString, ",") → массив имён
// 2) Values = [Value1..Value8]
// 3) Parameters = Новая Структура
// 4) Для i от 0 до Keys.Count()-1:
// если Values[i] <> Undefined → Parameters.Вставить(Keys[i], Values[i])
// 5) Вернуть Parameters
Важно: функция ожидает не более 8 имён в KeyString. Если имён больше, обращение к Values[i] за пределами массива приведёт к ошибке индекса. Держите KeyString ≤ 8 или расширьте функцию под себя.
Параметры
- KeyString — строка имён параметров, разделённых запятой (пример: "D1, D2, Org").
- Value1..Value8 — значения для имён в том же порядке. Можно передавать меньше восьми — Undefined будет пропущен.
Возвращает
Структура — ключи из KeyString, значения из Value1..Value8; элементы с Undefined не добавляются.
Примеры
1) Полное сопоставление
P = A1sQ.ParseParams("D1, D2, Org", НачалоПериода, КонецПериода, ТекОрганизация);
// { "D1": НачалоПериода, "D2": КонецПериода, "Org": ТекОрганизация }
2) Частичная подстановка
P = A1sQ.ParseParams("X, Y, Z", 10, Undefined, 30);
// { "X": 10, "Z": 30 } — "Y" пропущен
3) Использование с SetQParams
Q = A1sQ.CreateQ("ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг
|ГДЕ Дата МЕЖДУ &D1 И &D2 И Организация = &Org");
P = A1sQ.ParseParams("D1, D2, Org", Начало, Конец, ТекОрг);
Q = A1sQ.SetQParams(Q, P);
ТЗ = Q.Выполнить().Выгрузить();
Сравнение
| Функция | Что делает | Когда выбрать |
|---|---|---|
| ParseParams | Строка имён + Value1..Value8 → Структура | Нужно получить структуру и дальше работать именами |
| BuildQByParams | Строка имён + Value1..Value8 → сразу установить параметры запроса | Хотите сразу готовый Запрос |
| SetQParams | Структура → установить в запрос | Уже есть структура или нужен чейнинг |
| BuildQ | По порядку появления параметров в тексте | Нет строки имён, достаточно позиционной подстановки |
Нюансы и ограничения
✅ Пропускает Undefined — удобно для частичной подстановки
✅ Дубли имён в KeyString перезапишут предыдущее значение (поведение Структуры.Вставить)
❗ Не более 8 имён — иначе ошибка индекса
❗ Имена берутся «как есть»: пробелы не триммятся → " X " ≠ "X"
❗ Не валидирует, существуют ли такие &Параметры в тексте запроса — это делает BuildQ/1С на Выполнить()
Связанные функции
- BuildQByParams — аналог, но сразу возвращает Запрос.
- SetQParams — применить полученную структуру к запросу.
- BuildQ — позиционная установка без имён.