Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: Lorry P от 07 Марта 2025, 15:26:42

Название: Шаблонное окно + шаблонное окно
Отправлено: Lorry P от 07 Марта 2025, 15:26:42
Добрый день.
Возникла проблема в подстановках при вызове нескольких шаблонных окон друг из друга.

Объясню на примере: Существует несколько шаблонов генераторов, по нажатию на любой из них вызывается шаблонное окно с подробной информацией о выбранном генераторе , например выводом значений с датчиков температуры. Необходимо по нажатию на поле датчика открывать еще шаблонное окно с данными датчика и его границами.
При создании шаблонного окна с подстановкой тега датчика, подстановку запрашивает шаблон в обход поля датчика. (см.вложение - при добавлении поля с вызовом окна MB_Ai_sens желтеет шаблон). Т.е нажатия на любой из датчиков будут вызывать одно и то же окно датчика из подстановки в шаблоне.

Подскажите возможно ли реализовать такой функционал и каким методом? 
Спасибо!
Название: Re: Шаблонное окно + шаблонное окно
Отправлено: pan2000 от 08 Марта 2025, 08:56:30
    Здравствуйте.

  Для просмотра/редактирования одиночной переменной и её свойств можно создать обычное (или модальное) окно-форму.
При открывании окна в форму передаются переменная с набором просматриваемых/редактируемых свойств.
По заполнении данные из формы переписываются в свойства переменной.
Пример во вложении.
Название: Re: Шаблонное окно + шаблонное окно
Отправлено: Simple_Scada от 08 Марта 2025, 16:44:26
Здравствуйте.

При использовании вложенных шаблонов, подстановки с одинаковым именем объединяются. Например: имеется пустой шаблон "А", а также шаблон "Б" с подстановкой "Температура". Если в шаблон "А" два раза добавить шаблон "Б", то у шаблона "А" будет одна подстановка "Температура", значение которой будет передано двум шаблонам "Б". Подробное описание работы "Шаблон + шаблонное окно"(что аналогично работе "шаблонное окно + шаблонное окно") можно посмотреть по ссылке (https://simple-scada.com/help/manual/templandtemplwnd.html).

Для решения описанной задачи можно использовать следующие варианты:
1. Создать отдельные шаблонные окна (по одному для каждого поля датчика) с разными подстановками, чтобы они не объединялись и назначить их для соответствующих полей.
2. Создать одно общее шаблонное окно настроек датчиков, которое будет включать в себя настройки всех датчиков. В шаблонном окне использовать разные подстановки, чтобы они не объединялись. Назначить это окно для всех датчиков.
3. Использовать вариант реализации через форму ввода (https://simple-scada.com/help/manual/inputforms.html), который предложил pan2000.
Название: Re: Шаблонное окно + шаблонное окно
Отправлено: Lorry P от 26 Марта 2025, 11:06:15
    Здравствуйте.

  Для просмотра/редактирования одиночной переменной и её свойств можно создать обычное (или модальное) окно-форму.
При открывании окна в форму передаются переменная с набором просматриваемых/редактируемых свойств.
По заполнении данные из формы переписываются в свойства переменной.
Пример во вложении.

Использовал предложенный pan2000 вариант, все отлично. Но не получается передать из окна-формы тип границ ("Выключить границы", "Только аварийные границы" и "Аварийные и предупр. границы") из элемента список (работать с границами). Пробовал через выпадающий список с чекбоксом работать с границами, через кнопки, пробовал через индекс выбранной строки:
Код
     I := fldLimitType.ItemIndex;
     case I of
     0:fldValue.Variable.LimitType := ltNone;
     1:fldValue.Variable.LimitType := ltAlarmsOnly;
     2:fldValue.Variable.LimitType := ltAlarmsAndWarnings;
     end;

Работает только если напрямую прописать в скрипте FormDone тип границ, в остальных случаях выбор не сохраняется и при следующем вызове окна-формы LimitType = ltNone.
Это возможно как-то победить? :)
Название: Re: Шаблонное окно + шаблонное окно
Отправлено: pan2000 от 27 Марта 2025, 04:59:33
   Здравствуйте.

По видимому, объекты формы используются только для задания части начальных значений перед работой с окном-формой, и не предполагают изменения свойств входящих в форму объектов.
Для исключения возможных ошибок/конфликтов в скрипте обработки формы следует использовать данные только из FormData. Пример ошибки подобного сорта:
- в моём предыдущем примере обнаружен КОНФЛИКТ при работе нескольких клиентов - способ передачи выбранной переменной в скрипт обработки формы посредством основной переменной поля-формы ввода значения переменной, которая не локализуется в форме и является общей для всех клиентов. При отправки формы изменялись свойства переменной из последнего открытого окна-формы.
Исправление: имя выбранной переменной передается через дополнительное невидимое поле, локализуемое в форме.

Пример с исправлениями и возможностью изменения типа границ во вложении.

В настройках проекта можно включить сохранение значений и типа границ, тогда они будут сохраняться при перезапуске проекта.