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

A1sQ.IsEmptyResult

Назначение: быстро понять, пуст ли результат запроса.
Особенность: при любой ошибке выполнения функция возвращает Истина и пишет в лог.

Сигнатура

Function IsEmptyResult(QueryText, Value1 = Undefined, Value2 = Undefined, Value3 = Undefined, Value4 = Undefined, Value5 = Undefined, Value6 = Undefined, Value7 = Undefined, Value8 = Undefined) Export

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

Try //⚠
		Selection = ExecuteQ(QueryText, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8);
		Return Not Selection.Следующий(); //↩
	Except 
		A1sS.Print("IsEmptyResult: ошибка выполнения запроса: " + ErrorDescription());
		Return True; //↩ Считаем, что если ошибка — результата нет
	EndTry;

Параметры

  • QueryText — текст запроса ВЫБРАТЬ ....
  • Value1..Value8 — значения параметров, если в тексте встречаются &Имя.

Возвращает

Булево: Истина, если выборка пуста или возникла ошибка; Ложь, если найдено хотя бы одна строка.

Примеры

// 1) Проверка: есть ли активные пользователи
Если A1sQ.IsEmptyResult("ВЫБРАТЬ Ссылка ИЗ Справочник.Пользователи ГДЕ НЕ Заблокирован") Тогда
    Сообщить("Активных пользователей нет");
Иначе
    Сообщить("Нашлись активные пользователи");
КонецЕсли;

// 2) С параметром
ЕстьДокументы = Не A1sQ.IsEmptyResult("
|ВЫБРАТЬ Ссылка
|ИЗ Документ.ПоступлениеТоваровУслуг
|ГДЕ Дата МЕЖДУ &D1 И &D2", НачалоПериода, КонецПериода);

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

✅ Очень быстрая проверка: выполняет запрос и делает один вызов .Следующий()
✅ Удобна в условной логике (if/else)
❗ При ошибке вернёт Истина (считаем «результата нет») — это осознанная стратегия;
   если нужна строгая проверка ошибок — используйте ExecuteQ и свой блок Попытка/Исключение
❗ Для больших выборок добавляйте «ПЕРВЫЕ 1» (или пользуйтесь ExistsQ), чтобы не тянуть лишние данные
  • IsNotEmptyResult — обратная проверка.
  • ExistsQ — оптимизированная проверка существования.
  • ExecuteQ — вернуть Selection для ручной проверки.