Иногда приходится выводить из базы данных последнее (первое, максимальное, минимальное и т.д.) значение в определенном диапазоне. Сделал программу на ST:

VAR_INPUT
Начало: DT := DT#2022-04-06-14:00;
Конец: DT := DT#2022-04-06-15:00;
Тег: REF_TO := 0;
Старт: BOOL := False;
END_VAR

VAR_OUTPUT
EnO: BOOL := True;
Значение: REAL := 0;
END_VAR

VAR
RAD: BaseObjects.READ_ARCHIVE_DATA;
ПромежуточноеЗначение: ARRAY [1..1] OF REAL;
ПромежуточныйИнтервал: TIME := T#0ms;
END_VAR

ПромежуточныйИнтервал := sub_dt_dt(Конец, Начало);
RAD(Begin:=Начало , End:=Конец , Interval:=ПромежуточныйИнтервал , Item:=Тег , Run:= Старт);
ПромежуточноеЗначение := RAD.Values;
Значение := ПромежуточноеЗначение[1];

В настройках READ_ARCHIVE_DATA (для вывода последнего значения) сразу ставлю Bounds = TRUE, Aggregate = LastValue и MaxCount = 1.

Программа работает, результат выводится, но вот терзают меня смутные сомнения: а не налепил ли я здесь лишнего для вывода ОДНОГО значения из архива ОДНОГО канала?
Может, есть решение покороче и поизящней, без лишних преобразований и массива на выходе из READ_ARCHIVE_DATA? Есть вообще альтернатива READ_ARCHIVE_DATA?