Показать сообщение отдельно
Старый 24.09.2020, 10:32   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 115
Благодарил(а): 15 раз(а)
Поблагодарили: 660 раз(а) в 604 сообщениях
По умолчанию Ответ: Косяки, непонятки и хотелки по историческим данным

Цитата:
Сообщение от ViS Посмотреть сообщение
- В SMArt-овском "Диспетчере отчетов" при просмотре отчета нажатие на Esc приводит не к закрытию отчета и возврату к списку отчетов, что было бы логично, а отрабатывает сразу настроенный на Esc выход из экрана диспетчера. Дико неудобно.
Эскейп в этом окне есть по умолчанию, ручное задание выхода должно было быть заблокировано. Поэтому у вас дабл эскейп получается. Запретим)


Добавлено через 29 минут


Цитата:
Сообщение от ViS Посмотреть сообщение
4. Хотелки
Раздельные функции создания выборки блоком History и записи файла отчета на носитель. Сделали выборку, нашли нужные данные, забрали их дальше в FBD для обработки - всё, сохраненный на носителе отчет не нужен. Если нужен, то по сигналу на отдельном входе записали.
Выходы со значением констант в блоке History.

Фильтры, как в History, для SMArt-овского исторического графика.
У исторического блока есть режим который в справке называется "Функция по умолчанию". В этом режиме исторические данные из базы данных (не обработанные, как есть) поступают на выход блока
и могут быть использованы в FBD.

Нужно несколько функций: объединяйте несколько блоков в единую базу - в справке написано, как это сделать.




Цитата:
Сообщение от ViS Посмотреть сообщение
2. Вход row number.
Не уверен, что правильно понял из справки - это номер строки из сделанной для отчета выборки, значения из которой будут на выходах? Со смещением 2, то есть при значении на этом входе "0" выводятся значения из первой строки данных, которая в самом отчете числится под номером 2?
А как быть, если в выборке будет большое число строк и нужна будет строка с номером, который не влазит в int?
В силу того, что в результате выборки значений по переменной может быть несколько (массив значений, таблица значений), а выход для переменной у блока в этом режиме только один. Требуется как то получить доступ к остальным значениям. Для этого используется вход row number, число на этом выходе задает какой элемент из массива полученных данных будет выводиться на выходы значений и таймштампов блока.

Оперативная память в контроллере не бесконечна и драматически далека от памяти доступной для архива. Все данные выборки в принципе не могут быть загружен за раз. Поэтому функция работает с ограничениями, за раз она может загрузить максимум 1000 исторических значений, реальное же количество отобранных исторических значений выводиться на выход "count". Поэтому гипотетический максимум для row number будет 1000 (row = 0..999), а реальный максимум определяется значением на выходе "count".

1000 всегда влезет в int.

Тем не менее, ограничение в 1000 не должно смущать. Если в результате выборки получено настолько большое количество данных и нет уверенности, что в выборка пуста. Нужно взять таймштамп 1000-ой записи (row = 999), подать его на вход begin у блока и повторить выборку еще раз, получив доступ к следующей тысяче.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 24.09.2020 в 11:08
Arsie вне форума   Ответить с цитированием