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

A1sQ.ProfiledUnload

Назначение: выполнить SELECT и вернуть выгрузку в связке с профилированием (замер времени/стадий выполнения).
Кому полезно: разработчикам для диагностики «узких мест» запроса.

Сигнатура

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

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

StartTime = CurrentUniversalDateInMilliseconds();
	
	Try
		Result = Unload(QueryText, Value1, Value2, Value3, Value4, Value5, Value6, Value7, Value8);
		Duration = CurrentUniversalDateInMilliseconds() - StartTime;
		
		ProfileResult = New Structure;
		ProfileResult.Insert("Result", Result);
		ProfileResult.Insert("Duration", Duration);
		ProfileResult.Insert("ProfileName", ?(ValueIsFilled(ProfileName), ProfileName, "Query"));
		
		// Логируем результат
		A1sS.Print("Query profiling [" + ProfileResult.ProfileName + "]: " + Duration + "ms, rows: " + Result.Count());
		
		Return ProfileResult;
		
	Except
		A1sS.Print("ProfiledUnload error: " + ErrorDescription());
		Return New Structure("Result,Duration,ProfileName", New ValueTable, 0, ProfileName);
	EndTry;

Параметры

  • QueryText — текст запроса.
  • Value1..Value8 — (опц.) параметры запроса.

Возвращает

ТаблицаЗначений (данные) и/или диагностическая информация (см. исходный код функции в этом релизе).

Примеры

ТЗ = A1sQ.ProfiledUnload("ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Номенклатура");

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

✅ Удобно для анализа производительности
❗ Профилирование добавляет накладные расходы — не используйте в рабочих транзакциях
❗ Точный формат профиля смотрите в исходном коде версии вашей библиотеки