Здравствуйте.
Переходы реализованы через скрипт по изменению значения переменной
См. описание функции "
GetClientName"– она не работает в скриптах, которые вызываются сервером скады (OnDataChange и т.д.). Вызов GetClientName в таких скриптах всегда будет возвращать пустую строку. Соответственно, переход по страницам будет выполняться только для десктоп-клиентов, в настройках которых
имя клиента не задано, т.е. = пустой строке. Если задать любое произвольное имя для декстоп-клиента, то переход также не будет работать. Web-клиенты получают случайно сгенерированное имя, поэтому для них такой скрипт никогда не будет работать.
Для перехода по страницам через компонент "
Список", можно использовать следующий способ:
1. Задайте нужным страницам однотипные
имена, например PageDiagnostic1, PageDiagnostic2, PageDiagnostic3 и т.д.
2. Перейдите в меню редактирования скриптов и создайте новый
глобальный модуль, например с именем "GlobalUnit" и следующим кодом:
interface
var
ClientData: TM_ClientData;
implementation
finalization
FreeAndNil(ClientData);
end.
3. На событие "
OnClick" списка используйте следующий код:
begin
ClientData := GetClientData;
end.
4. На событие "
OnDataChange" списка используйте следующий код:
var
aPage: TM_Page;
begin
// ищем страницу с именем PageDiagnostic + значение переменной списка
aPage := GetPageByName('PageDiagnostic' + IntToStr((Sender as TM_ComboBox).AsInt));
if aPage <> nil then // если страница существует
aPage.GoToPageClient(ClientData.Name); // то, перейти на нее
end.
Учитывайте, что такой способ будет работать на 100% корректно только в однопользовательской системе. При одновременной работе множества пользователей всегда есть вероятность, что несколько пользователей будут одновременно взаимодействовать со списком и мешать друг другу.