Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Шаблонное окно + шаблонное окно  (Прочитано 281 раз)

Lorry P

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Шаблонное окно + шаблонное окно
« : 07 Марта 2025, 15:26:42 »
Добрый день.
Возникла проблема в подстановках при вызове нескольких шаблонных окон друг из друга.

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

Подскажите возможно ли реализовать такой функционал и каким методом? 
Спасибо!

pan2000

  • Постоялец
  • ***
  • Сообщений: 210
    • Просмотр профиля
Re: Шаблонное окно + шаблонное окно
« Ответ #1 : 08 Марта 2025, 08:56:30 »
    Здравствуйте.

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

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1301
    • Просмотр профиля
Re: Шаблонное окно + шаблонное окно
« Ответ #2 : 08 Марта 2025, 16:44:26 »
Здравствуйте.

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

Для решения описанной задачи можно использовать следующие варианты:
1. Создать отдельные шаблонные окна (по одному для каждого поля датчика) с разными подстановками, чтобы они не объединялись и назначить их для соответствующих полей.
2. Создать одно общее шаблонное окно настроек датчиков, которое будет включать в себя настройки всех датчиков. В шаблонном окне использовать разные подстановки, чтобы они не объединялись. Назначить это окно для всех датчиков.
3. Использовать вариант реализации через форму ввода, который предложил pan2000.
« Изменён: 08 Марта 2025, 16:50:49 от Simple-Scada »

Lorry P

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Шаблонное окно + шаблонное окно
« Ответ #3 : 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.
Это возможно как-то победить? :)

pan2000

  • Постоялец
  • ***
  • Сообщений: 210
    • Просмотр профиля
Re: Шаблонное окно + шаблонное окно
« Ответ #4 : 27 Марта 2025, 04:59:33 »
   Здравствуйте.

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

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

В настройках проекта можно включить сохранение значений и типа границ, тогда они будут сохраняться при перезапуске проекта.
« Изменён: 27 Марта 2025, 05:04:55 от pan2000 »