A1sQ.Select
Назначение: стартовая точка fluent‑API для сборки текста запроса без ручной конкатенации.
Результат: цепочки .From(...).Where(...).WithParam(...).OrderBy(...).Top(...).Build() вернут готовый Query.
Результат: цепочки .From(...).Where(...).WithParam(...).OrderBy(...).Top(...).Build() вернут готовый Query.
Сигнатура
Function Select(Fields) Export
Как работает (по исходному коду)
Builder = New Structure;
Builder.Insert("Fields", Fields);
Builder.Insert("FromClause", "");
Builder.Insert("WhereClause", "");
Builder.Insert("OrderClause", "");
Builder.Insert("GroupClause", "");
Builder.Insert("TopClause", "");
Builder.Insert("Parameters", New Structure);
Return Builder;
Методы цепочки (fluent)
| Метод | Сигнатура | Что делает |
|---|---|---|
| From | From(Builder, TableName) | Задаёт FROM. |
| Where | Where(Builder, Condition) | Добавляет условие. Если уже есть — склеивает через И. |
| OrderBy | OrderBy(Builder, OrderFields) | Задаёт сортировку. |
| Top | Top(Builder, Count) | Задаёт ПЕРВЫЕ n. |
| WithParam | WithParam(Builder, ParamName, ParamValue) | Добавляет значение в Builder.Parameters. |
| Build | Build(Builder) | Формирует строку: ВЫБРАТЬ [ПЕРВЫЕ n] Fields ИЗ From [ГДЕ Where] [СГРУППИРОВАТЬ ПО Group] [УПОРЯДОЧИТЬ ПО Order], создаёт Query и вызывает SetQParams(Query, Builder.Parameters). |
Примечание: поля GroupClause можно заполнить вручную — отдельной функции в API нет.
Примеры
1) Базовый fluent‑запрос
Q = A1sQ.Select("Ссылка, Наименование")
.From("Справочник.Номенклатура")
.Where("НЕ ПометкаУдаления")
.OrderBy("Наименование")
.Top("100")
.Build();
ТЗ = Q.Выполнить().Выгрузить();
2) С параметрами
Q = A1sQ.Select("Ссылка, Наименование")
.From("Справочник.Номенклатура КАК Ном")
.Where("Ном.Родитель = &Parent")
.WithParam("Parent", Родитель)
.OrderBy("Наименование")
.Build();
3) Группировка (через свойство)
B = A1sQ.Select("Ном.Родитель, СЧЁТ(Ном.Ссылка) КАК Колво")
.From("Справочник.Номенклатура КАК Ном")
.Where("НЕ Ном.ПометкаУдаления");
B.GroupClause = "Ном.Родитель";
Q = A1sQ.Build(B);
Нюансы
✅ Быстрая сборка запроса без конкатенации строк
✅ Параметры аккуратно передаются через SetQParams
❗ Нет отдельных методов для GROUP BY/HAVING — задавайте GroupClause вручную
❗ Метод Where склеивает условия через «И» — для «ИЛИ» передайте его целиком в одном вызове
❗ Top принимает как строку, так и число; в текст попадёт «ПЕРВЫЕ »