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

A1sQ.QT

Назначение: собрать строку запроса 1С вида ВЫБРАТЬ … ИЗ … [ГДЕ …].
Что делает: простая конкатенация — SELECT + FROM и опционально WHERE, если Condition «заполнен».
Где применять: как кирпичик для BuildByQT, ExecuteByQT, UnloadByQT, либо для быстрого конструирования QueryText.

Сигнатура

Function QT(WhatToSelect, FromWhereSelect, Condition = Undefined) Export

Как работает

// Реализация максимально простая:
QT = "ВЫБРАТЬ " + WhatToSelect + " ИЗ " + FromWhereSelect;
Если ValueIsFilled(Condition) Тогда
    QT = QT + " ГДЕ " + Condition;
КонецЕсли;
Возврат QT;

Параметры

  • WhatToSelect — список полей после ВЫБРАТЬ (например: "T.Ссылка, T.Наименование").
  • FromWhereSelect — источник после ИЗ (например: "Справочник.Номенклатура КАК T").
  • Condition — выражение после ключевого слова ГДЕ (без самого слова «ГДЕ»). Пустое/Неопределено — WHERE не добавляется.

Возвращает

String — готовый QueryText, пригодный для Запрос.Текст или функций ExecuteQ/Unload.

Примеры

1) Минимальный

QT = A1sQ.QT("Ссылка, Наименование", "Справочник.Номенклатура");
Q  = A1sQ.CreateQ(QT);
ТЗ = Q.Выполнить().Выгрузить();

2) С условием (Condition)

QT = A1sQ.QT(
    "Ссылка, Наименование",
    "Справочник.Номенклатура КАК Ном",
    "Ном.Родитель = &Родитель И НЕ Ном.ПометкаУдаления"
);
ТЗ = A1sQ.Unload(QT, Родитель);

3) Добавить сортировку/агрегацию после QT

QT = A1sQ.QT("Ссылка, Наименование", "Справочник.Номенклатура", "НЕ ПометкаУдаления")
     + " УПОРЯДОЧИТЬ ПО Наименование";
ТЗ = A1sQ.Unload(QT);

4) Использование в BuildByQT / ExecuteByQT

Q   = A1sQ.BuildByQT("Ссылка, Наименование", "Справочник.Номенклатура", "Наименование ПОДОБНО &Текст", "%кабель%");
S   = A1sQ.ExecuteByQT("Ссылка", "Справочник.Пользователи", "ИдентификаторПользователяИБ = &UID", UID);
ТЗ  = A1sQ.UnloadByQT("Ссылка, Дата", "Документ.РеализацияТоваровУслуг", "Дата МЕЖДУ &D1 И &D2", Начало, Конец);

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

✅ Не добавляет переносы строк — чистая строка запроса
✅ WHERE добавится только если Condition «заполнен» (ValueIsFilled)
❗ В Condition НЕ пишите слово «ГДЕ» — функция добавит его сама
❗ QT не вставляет GROUP BY / HAVING / ORDER BY — добавляйте вручную после результата
❗ Нет валидации: если поля/источник пустые или с ошибками — ошибка будет на Выполнить()
❗ Строки склеиваются «как есть» — следите за пробелами внутри аргументов
  • BuildByQT — собрать Запрос из QT и расставить параметры.
  • ExecuteByQT — безопасно выполнить QT и получить курсор.
  • UnloadByQT — безопасно выгрузить QT в ТаблицаЗначений.
  • CombineQT — объединить два QT через «ОБЪЕДИНИТЬ ВСЕ».
  • BuildQ / ExecuteQ / Unload — работа с готовым текстом.