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

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

Автор Тема: Web-клиент  (Прочитано 2383 раз)

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Web-клиент
« : 02 Декабря 2019, 07:08:47 »
Добрый день.
1. Клиент запущен под учёткой ДИСПЕТЧЕРА. При запуске веб-клиента и после авторизации пользователя АДМИНИСТРАТОРА на простом клиенте учётка меняется с ДИСПЕТЧЕРА на АДМИНИСТРАТОРА, хотя это 2 разных клиента.
2. Отображение флажка на CheckBox. На простом клиенте выставлены флажки, но в веб флажки проинвентированы.
3. Некоторые изображения в веб не отображаются, хотя формат картинок один и тот же *.png.
4. Съезжают надписи в веб.
5. Не срабатывает событие нажатия на кнопку в веб (не на всех кнопках, выборочно как-то).
6. Неактивный ComboBox в веб.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Web-клиент
« Ответ #1 : 02 Декабря 2019, 10:00:03 »
Здравствуйте.

Цитировать
1. Клиент запущен под учёткой ДИСПЕТЧЕРА. При запуске веб-клиента и после авторизации пользователя АДМИНИСТРАТОРА на простом клиенте учётка меняется с ДИСПЕТЧЕРА на АДМИНИСТРАТОРА, хотя это 2 разных клиента.
У Вас в скриптах используются процедуры смены пользователей, например Logout или ChangeUser? У пользователей ограничена "Длительность сеанса"? Можете выслать текущую версию проекта для проверки?

Цитировать
2. Отображение флажка на CheckBox. На простом клиенте выставлены флажки, но в веб флажки проинвентированы.
Вы используете последнюю версию 2.3.6.3? Такая ошибка была в старых версиях у флажков с включенным свойством "Инверсия".

Цитировать
3. Некоторые изображения в веб не отображаются, хотя формат картинок один и тот же *.png.
Нужен проект чтобы определить точную причину по которой изображения не смогли загрузиться. В старых версиях такая проблема была если изображения лежали в подпапках папки "Pictures\".

Цитировать
4. Съезжают надписи в веб.
Убедитесь что в редакторе у компонента выставлена достаточная ширина, чтобы уместить в него текст без переноса. Перенос текста в браузерах и в нашем клиенте может незначительно отличаться, к сожалению шрифты невозможно сделать абсолютно одинаковыми, т.к. браузер и скада используют разные способы отрисовки.

Цитировать
5. Не срабатывает событие нажатия на кнопку в веб (не на всех кнопках, выборочно как-то).
6. Неактивный ComboBox в веб.
Вы разрешили управление через web в настройках проекта? Если управление запрещено, то кнопки смогут только открывать связанные с ними окна, но не смогут выполнять управляющие функции.

По всем вопросам мы могли бы дать более подробную информацию после проверки проекта.

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: Web-клиент
« Ответ #2 : 02 Декабря 2019, 10:51:22 »
1. Смена пользователей осуществляется при запуске проекта и по нажатию на кнопку через ChangeUser(GetClientName). Длительность сеанса я не выставляла, оставила по-умолчанию 0 сек. Также если менять пользователя на простом клиенте, то он и меняется автоматически и в веб-клиенте.

2. Использую последнюю версию 2.3.6.3 (Professional). Инверсия сохранилась, видимо.

3. Все изображения лежат в папке Pictures, вложенных папок нет. Нашла причину. В названии картинки нельзя использовать скобки иначе в веб эта картинка не отобразится. Исправила название и все заработало.

4. Про надписи все понятно.

5.6. В редакторе выбран режим веб с управлением. Просто некоторые кнопки не срабатывают. Именно те кнопки, которые работают в зависимости от того. какой пользователь зашел. Тоже и с ComboBox.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Web-клиент
« Ответ #3 : 02 Декабря 2019, 11:24:15 »
Цитировать
1. Смена пользователей осуществляется при запуске проекта и по нажатию на кнопку через ChangeUser(GetClientName)
Как Вы определяете что пользователь сменился? Где-то на мнемосхеме выводится надпись с именем пользователя, например через скрипт с типом "Авторизация пользователя"? Или становится понятно какой пользователь выбран по уровню доступа к объектам мнемосхемы?

Цитировать
2. Использую последнюю версию 2.3.6.3 (Professional). Инверсия сохранилась, видимо.
Инверсию перепроверили. Работает правильно, дело похоже не в ней. В проекте флажки привязаны к переменным? Если да, то убедитесь что в скриптах не меняется свойство Checked. Свойство Checked нужно менять через скрипты только в том случае, если флажок не привязан к переменной. Если он привязан к переменной, то менять надо саму переменную (напр. CheckBox.Value := true;), а скада автоматически изменит состояние (Checked) флажка в зависимости от значения переменной.


Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: Web-клиент
« Ответ #4 : 02 Декабря 2019, 11:57:08 »
1. Выводится имя пользователя на мнемосхеме.
Использую скрипт "Авторизация пользователя", в котором и ограничиваю права, так как права устанавливаю на кнопку и combobox:
Код: (delphi)
begin
Text_user1.Text:=GetUserName;
  If auLogin='Диспетчер' then
    begin
    ComboBox2.Enabled:=false;
    Button13.Visible:=false;
    end;
  If auLogin='Администратор' then
    begin
    ComboBox2.Enabled:=true;
    Button13.Visible:=true;
    end;   
end.       
Скрипт срабатывает.

2. Вы правы. если просто установить переменную на checkbox, то работает все правильно. Но я скрипт привязала по нажатию на объект, что в принципе тоже должно работать, потому что в простом клиенте проблем нет. Переменные на checkbox я не задавала. При запуске проекта выполняю вот чего: CheckBox1.Checked:=true. Ниже фрагмент скрипта уже по нажатию на checkbox:
Код: (delphi)
var ch1:integer;

begin
   If Sender=CheckBox1 then
     begin
       If CheckBox1.Checked=false then ch1:=1;
       If CheckBox1.Checked=true then ch1:=2;
       If ch1=1 then
         begin
         CheckBox1.Checked:=true;
         TrendViewer3.TimeTrends[0].Visible:=true;
         end
      else
        begin
        CheckBox1.Checked:=false;
        TrendViewer3.TimeTrends[0].Visible:=false;
        end;
    end;
end.

« Изменён: 02 Декабря 2019, 14:53:20 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Web-клиент
« Ответ #5 : 02 Декабря 2019, 16:07:23 »
Теперь всё понятно. Web-клиент здесь не при чем. Описанный код работает как должен, в нём нет ошибок, но он не будет давать желаемого результата. Чтобы понять причину, опишем принципы работы клиентов и сервера. На серверном ПК запускается проект, все объекты проекта существуют в оперативной памяти серверного ПК в единственном экземпляре. Клиенты (обычные и web) могут подключиться к проекту запущенному на сервере. Клиенты практически ничего не делают, они получают проект с сервера и отображают на экране текущее состояние проекта. И если через скрипт изменить цвет какой-то кнопки на красный, то все клиенты отобразят красную кнопку. Если изменить какой-то текст на "Привет, мир!", то этот текст на всех клиентах станет таким.
Вы по сути попытались написать свою систему прав пользователей при помощи скриптов и такая система будет работать пока клиент один, но совершенно не подходит для множества клиентов. В скрипте "Авторизация пользователя" в объект "Text_user1" выводится имя пользователя который авторизовался и это имя (исходя из вышеописанного) отобразится сразу на всех клиентах, но это не означает что пользователь сменился на всех клиентах, на самом деле просто изменился текст компонента "Text_user1" и клиенты его отобразили. А после выполнения "ComboBox2.Enabled := false;" раскрывающийся список "ComboBox2" станет неактивен на всех клиентах.

Для правильной реализации нужно использовать встроенную систему прав пользователей, которая подходит для любого количества клиентов. Подробно она описана здесь. С её помощью можно задать какой какие страницы / тренды / сообщения должен видеть каждый пользователь и на каких страницах пользователь может управлять объектами. Если нужно ограничить доступ к какому-то конкретному объекту, то нужно выделить объект, найти в инспекторе объектов свойство "Права доступа", нажать на кнопку "..." (подробнее здесь) и в раскрывшейся панели открыть настроить доступ к объекту для каждого пользователя, например одному - запретить, другому - разрешить. А текущую реализацию на скриптах нужно удалить. Скрыть какие-то отдельные объекты для отдельных пользователей (как сейчас сделано с кнопкой Button13) нельзя (можно скрыть только отдельные страницы / группы трендов и сообщений).

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

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: Web-клиент
« Ответ #6 : 03 Декабря 2019, 04:48:03 »
"Скрыть какие-то отдельные объекты для отдельных пользователей (как сейчас сделано с кнопкой Button13) нельзя (можно скрыть только отдельные страницы / группы трендов и сообщений)."

Вот из-за этого я и писала для этого отдельный скрипт, так как отдельные объекты скрыть для разных пользователей нельзя. Поэтому было бы неплохо это реализовать в новой версии, хотя бы просто для кнопок.

Виктория

  • Пользователь
  • **
  • Сообщений: 87
    • Просмотр профиля
Re: Web-клиент
« Ответ #7 : 03 Декабря 2019, 05:34:12 »
Удалила скрипт. Настроила пользовательские права для объектов, но в веб-клиенте под АДМИНМИСТРАТОРОМ  эти объекты все равно не доступны, хотя, подключаясь к серверу удаленно клиентом под АДМИНИСТРАТОРОМ, такой проблемы не возникает.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Web-клиент
« Ответ #8 : 03 Декабря 2019, 09:48:30 »
Перепроверили с правами для объектов. На обычных клиентах и web-клиентах всегда поведение одинаковое. Проверяли с объектами Кнопка и Раскрывающийся список. В этой ситуации не получается угадать что ещё может быть не так. Может быть остались какие-то проверки в скриптах? Просьба выслать текущую версию проекта на support@simple-scada.com, в этом случае мы сразу дадим ответы на любые вопросы, без предположений. Если нет возможности выслать рабочий проект, то можно сохранить проект как отдельную копию, оставить в нём только проблемную часть, убедиться что проблема осталась и выслать такой проект нам.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Web-клиент
« Ответ #9 : 07 Декабря 2019, 11:12:30 »
В последнем обновлении 2.3.6.4 внесли исправление в отображение компонента Флажок c включенным свойством Checked в web-клиентах. Также исправили загрузку изображений с именами содержащими скобки.