SIEMENS, DF&PD

Предыдущее посещение: Ср мар 09, 2016 4:37 Текущее время: Ср мар 09, 2016 4:37

Часовой пояс: UTC + 3 часа




 [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Проверка уровня доступа с помощью CheckAreaLevelPermission
СообщениеДобавлено: Вт фев 15, 2011 13:30 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 30, 2006 8:34
Сообщения: 11
Привет. Такой вопрос.
На мнемосхеме расположена кнопка переключения на другую картинку, необходимо сделать так, чтобы кнопка была активна только для тех пользователей, для которых уровень доступа к картинке, на которую надо переключиться, в UserAdministration установлен Authorization for area.
Я пробовал использовать функцию SSMCheckAreaLevelPermission(ИмяКартинки, УровеньДоступа) в свойстве кнопки Operator-Control Enable , но безрезультатно, как будто функция не выполняется.
Возможно это имеет значение - действия производятся в WebNavigator


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 15, 2011 13:56 
Не в сети
Известный Писатель

Зарегистрирован: Пн авг 08, 2005 9:54
Сообщения: 337
Откуда: Украина, ПАО "НКМЗ"
а почему не используете стандартный "Dynamic Wizard" - закладка "Standard Dynamic" - "Operationable if authorized", который создаст для свойства "Operator-Control Enable" С-скрипт вида:
Код:
#include "apdefap.h"
BOOL _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END

#pragma code ("UseAdmin.DLL")
#include "pwrt_api.h"
#pragma code ()
#define NO_MESSAGEBOX  1
CMN_ERROR err;
DWORD pwlevel = 0;
pwlevel = (DWORD) GetPasswordLevel(lpszPictureName,lpszObjectName);
if (pwlevel==0)
  return(TRUE);
else
  return(PWRTCheckPermissionOnPicture(pwlevel,lpszPictureName,NO_MESSAGEBOX,&err));

}

автоматом прописав триггер:
Изображение

может ваш скрипт не работает из-за этого триггера?

зы: я бы все-таки пользовался стандартными средствами для таких случаев...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 16, 2011 7:09 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 30, 2006 8:34
Сообщения: 11
Мне надо определять доступ не к картинке на которой расположена кнопка, а к той на которую будет происходить переключение по этой кнопке
Я написал след. код в свойстве Operator-Control Enable:

char* PictureName ;
*PictureName="xxxxxxxxxx";
return SSMCheckAreaLevelPermission(PictureName,2);

но при его исполнении выходит ошибка:
general protection fault
access violation in script


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 16, 2011 8:16 
Не в сети
Известный Писатель

Зарегистрирован: Пн авг 08, 2005 9:54
Сообщения: 337
Откуда: Украина, ПАО "НКМЗ"
GaryK писал(а):
Мне надо определять доступ не к картинке на которой расположена кнопка, а к той на которую будет происходить переключение по этой кнопке
Я написал след. код в свойстве Operator-Control Enable:

char* PictureName ;
*PictureName="xxxxxxxxxx";
return SSMCheckAreaLevelPermission(PictureName,2);

но при его исполнении выходит ошибка:
general protection fault
access violation in script

вам нужно чтобы открываемую картинку видели пользователи с уровнем доступа "Authorization for area". так?
если да, то я вам показал скрипт именно на кнопку. свойство Enabled-Operator Control кнопки в этом случае обвязывается вышеприведенным скриптом.
проверяется уровень доступа для текущего пользователя. если он "Authorization for area" то кнопка активна, иначе - неактивна.
естественно вы должны указать "Authorization for area" в свойстве кнопки "Authorization".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 16, 2011 9:54 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 30, 2006 8:34
Сообщения: 11
Сделал, не работает, при нажатии на кнопку "You don't have pervission"
Все таки похоже что определяются права доступа к картинке на которой расположена кнопка


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 16, 2011 13:19 
Не в сети
Известный Писатель

Зарегистрирован: Пн авг 08, 2005 9:54
Сообщения: 337
Откуда: Украина, ПАО "НКМЗ"
GaryK писал(а):
Сделал, не работает, при нажатии на кнопку "You don't have pervission"
Все таки похоже что определяются права доступа к картинке на которой расположена кнопка

извините, но с такими фразами вам никто не поможет...
может пошагово напишите (лучше с скриншотами), что вы делали?
для обоюдного понимания отвечающих и вопрощающего...
как настроили доступ для пользователей в UserAdministrator, как это дело обвязали на кнопке?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 16, 2011 14:18 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 30, 2006 8:34
Сообщения: 11
Попробую пояснить.
По Вашему совету для кнопки воспользовался мастером Operationable if authorized, он сформировал скрипт и прописал триггер.
Затем сконфигурировал кнопку (Configuration dialog)
Authorization установил на уровне Authorization for area
в поле Change picture on mouse click прописал картинку на которую надо переключиться.
В UserAdministration для пользователей которые должны иметь доступ к картинке отметил авторизацию Authorization for area.
Запустил проект, нажал на кнопку и получил сообщение "You don't have permission"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 23, 2011 9:29 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 30, 2006 8:34
Сообщения: 11
Сформулирую по-другому
Как с помощью функций Си определить есть ли определенный уровень доступа (Authorization for area) к определенной мнемосхеме у текущего пользователя?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 23, 2011 12:28 
Не в сети
Писатель со стажем

Зарегистрирован: Ср апр 18, 2007 15:03
Сообщения: 508
Откуда: Красноярск
GaryK писал(а):
Мне надо определять доступ не к картинке на которой расположена кнопка, а к той на которую будет происходить переключение по этой кнопке
Я написал след. код в свойстве Operator-Control Enable:

char* PictureName ;
*PictureName="xxxxxxxxxx";
return SSMCheckAreaLevelPermission(PictureName,2);

но при его исполнении выходит ошибка:
general protection fault
access violation in script

Ошибка в выделенной строке. Так делать нельзя.
Читайте про выделение памяти и копирование строк в си, а именно про функцию strcpy.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 23, 2011 13:23 
Не в сети
Известный Писатель

Зарегистрирован: Пн авг 08, 2005 9:54
Сообщения: 337
Откуда: Украина, ПАО "НКМЗ"
я бы написал вот так:
Код:
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END

// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
#define Pic_1 "xxxxxxxx"
// next PicID : 1
// WINCC:PICNAME_SECTION_END

wincc недаром генерит этот заголовок. в случае чего вы всегда сможете построить crossreference (для объектов находящихся в этих разделах - описание тэгов и картинок). например: найти на каком кадре и на каком объекте в скриптах используется имя pdl "xxxxxxxx".
это правило "хорошего тона" при написании c-script.

Цитата:
Как с помощью функций Си определить есть ли определенный уровень доступа (Authorization for area) к определенной мнемосхеме у текущего пользователя?

читайте мануал. все уже было описано выше!
Код:
pwlevel = (DWORD) GetPasswordLevel(lpszPictureName,lpszObjectName);

определяет уровень доступа к объекту (тобишь к кнопке, которая будет открывать ваш второй кадр - мнемосхему).

может быть вот ЭТА тема вам поможет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 23, 2011 14:11 
Не в сети
Новый писатель

Зарегистрирован: Пт июн 30, 2006 8:34
Сообщения: 11
Извините, может глупый вопрос, но я не знаю как задать уровень доступа
к кнопке.
И что такое PasswordLevel?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 23, 2011 16:05 
Не в сети
Известный Писатель

Зарегистрирован: Пн авг 08, 2005 9:54
Сообщения: 337
Откуда: Украина, ПАО "НКМЗ"
GaryK писал(а):
Извините, может глупый вопрос, но я не знаю как задать уровень доступа
к кнопке.
И что такое PasswordLevel?

вы внимательно читали то, что писал вверху?
перечитайте 2 моих первых сообщения в этой теме. я всегда говорил о КНОПКЕ и об уровне доступа к кнопке!!!
если не поймете, то я завтра выложу пошагово алгоритм со скриншотами, как это сделано у меня...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
 [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group