каким образом из журнала событий объекта извлечь наличие и количество неквитированных сообщения для дальнейшего их использования? если несложно пожалуйста с примером. спасибо.
каким образом из журнала событий объекта извлечь наличие и количество неквитированных сообщения для дальнейшего их использования? если несложно пожалуйста с примером. спасибо.
ну наличие можно проверить при помощи фб "состояние окна сообщений", а вот количество... штатных средств не нашел. в техподдержку писали?
Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).
посмотрел фб "состояние окна сообщений". туда валится все по всей системе. а хотелось бы иметь некий фб или скрипт, привязанный к конкретному объекту, по переменным которого можно было бы судить о наличии неквитированных сообщений. причем неквитированных не только системой, т.е. нет конца события, но и квитированных системой (процессом), но неквитированных (просмотренных) оператором.
тут на мой взгляд существует задвоение терминов. например, в фб "состояние окна сообщений" неквитированными считаются сообщения не имеющими "конца". а оператор там вообще не причем.
свяжитесь с техподдержкой. после ухода мамотовой оперативность ответов у них конечно снизилась, но отвечают.
поговорят с программистами, либо добавят в следующей версии, либо скажут по каким процедурам обращаться, чтобы свой блок написать.
Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).
в техподдержку пишу, периодически. но там отвечают вяло. нет той оперативности,оторая наблюдается здесь. уже сам до чего то допрешь, а потом получишь ответ из инсата. грустно как то. вот и сейчас уже кое что нашел в примерах для скриптов, а ответа от производителя 0.
ну тут может еще сезон отпусков сказывается...
я вообще в инсат пишу если баги обнаруживаю или предложения если есть. с проблемами сам справляюсь. а так, можете задавать вопросы здесь, думаю на 90% получите ответы.
а задавали им вопрос насчет неквитированных сообщений?
Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).
Задавал. Но ответа пока не получил. Кое что нашел в примерах:
var alarms = HostFB.TreeItemHlp.Project.AlarmManager;
var filter = new EventFilterData();
filter.OnlyNotAcked (или OnlyActual)= true;
var events = alarms.GetEvents(HostFB.TreeItemHlp.Parent, filter, 100);
events.Count - количество тех самых сообщений, определенные фильтром. 100 - размер массива событий.
Было бы хоть мало мальское описание объектов и их методов, вопросов было бы гораздо меньше.
Я хотел еще в пятницу сделать, но времени не было, только сейчас освободился.
Ну вот. Ваш пример вообщем рабочий. Нужно только чуть-чуть кое что подправить.
Делаем так. Вставляем модуль "скрипт". Создаем переменную "запись" типа "целое" или вещественное это и будет наш выход. Ну и собственно код:
public partial class ФБ : ScriptBase
{
public override void Execute()
{
var alarms = HostFB.TreeItemHlp.Project.AlarmManager;
var filter = new MasterSCADA.Hlp.Events.EventFilterData();
filter.OnlyNotAcked = true;
var events = alarms.GetEvents(HostFB.TreeItemHlp.Parent, filter, 100);
Количество=events.Count(); // это непосредственно выход ФБ
}
}
Проверил - нормально вроде работает. Опрос обязательно периодический!
Последний раз редактировалось Sniper007; 26.06.2010 в 18:12.
Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).
все вроде бы работает нормально. для определения наличия сообщений достаточно вместо 100 поставить 1. а вот как определить наличие конкретного сообщения от переменной "событие". за активность, понятно, отвечает сама переменная. а наличие не квитирования?
Александр. Ну во первых, надо однозначно написать в техподдержку, чтобы они реализовали такую функцию.
Сейчас можно поступить так.
Мы сформировали коллекцию event
var events = alarms.GetEvents(HostFB.TreeItemHlp.Parent, filter, 100);
теперь можно обращаться, к ее элементам используя индекс.
Например:
Параметр1=events[z].ConditionName; //тип - строка
вернет нам имя элемента, имеющего неквитированную аварию, где z - индекс (номер в коллекции, нумерация с нуля). Только обращаться нужно когда в коллекции есть хотя бы одно сообщение. Проще говоря контролировать:
if events.Count()>0 и после уже обращаться к коллекции
Ну а дальше - дело техники. Можно через цикл перебрать всю коллекцию, и найти есть ли имя функционального блока в списке.
Последний раз редактировалось Sniper007; 29.06.2010 в 13:26.
Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).