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

A1sQ.SelfTest

Назначение: запустить быстрый smoke‑test модуля A1sQ — чтобы убедиться, что базовые операции «строим → выполняем → выгружаем» работают в текущей базе.
Результат: Истина при успехе всех шагов, Ложь при любой ошибке (с записью в лог).

Сигнатура

Function SelfTest() Export

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

// Проверка CreateQ
    q = CreateQ(); If q = Undefined Тогда A1sS.Print("SelfTest FAILED: CreateQ"); Return False; EndIf;
    // Проверка GetParams
    q2 = CreateQ("SELECT &X AS X"); params = GetParams(q2); If params.Count()<>1 Тогда A1sS.Print("SelfTest FAILED: GetParams"); Return False; EndIf;
    // Проверка BuildQ/ExecuteQ
    // Создадим временную таблицу данных
    tmp = A1sQ.GetTemps();
    q3 = CreateQ("SELECT 1 AS a", tmp);
    
    res = ExecuteQ("ВЫБРАТЬ 1 КАК a");
    
    If res.Следующий() Then
	    If res.a <> 1 Then
		    A1sS.Print("SelfTest FAILED: ExecuteQ — res.a ≠ 1");
		    Return False;
	    EndIf;
    Else
	    A1sS.Print("SelfTest FAILED: ExecuteQ — empty");
	    Return False;
    EndIf;

    // Проверка Unload
    vt = Unload("ВЫБРАТЬ 1 КАК a");
    If IsEmptyTable(vt) Тогда
	    A1sS.Print("SelfTest FAILED: Unload");
	    Return False;
    EndIf;
    
    // Проверка UnloadColumn
    arr = UnloadColumn("SELECT 1 AS a", "a"); If arr.Count()<>1 Тогда A1sS.Print("SelfTest FAILED: UnloadColumn"); Return False; EndIf;
    // Проверка пустоты
    empty = IsEmptyResult("SELECT * FROM (SELECT 1 AS a) T WHERE a=0"); If Not empty Тогда A1sS.Print("SelfTest FAILED
Функция не содержит явного try/except и использует ключевые помощники BuildQ, ExecuteQ, Unload, CreateQ.

Возвращает

Булево — Истина при успешной самопроверке, иначе Ложь.

Что именно проверяется

  • Создание запроса из текста (CreateQ).
  • Выполнение запроса и получение выборки (ExecuteQ или Query.Execute().Select()).
  • Выгрузка результата в память (Unload).
  • Опционально: работа с пакетами и временными таблицами (если в исходнике есть вызовы ExecuteBatch/UnloadBatch и менеджер ВТ).

Как использовать

Если Не A1sQ.SelfTest() Тогда
    ВызватьИсключение("A1sQ: самопроверка не пройдена — проверьте логи.");
КонецЕсли;

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

✅ Быстрая проверка «всё живо» после установки/обновления
✅ Полезно в автотестах окружения
❗ Не заменяет полноценные модульные тесты ваших запросов
❗ Может зависеть от наличия типовых объектов (например, справочников) в конфигурации
❗ При Ложь смотрите записи в логе A1sS.Print