Не работает вызов System.MessageDialog в событие OnTimer на карточке wnd_IncidentsGridArea. Стек вызова:

Стек вызова
TSScriptUtils.TSScriptUtils.TScriptUtils.MessageDialog ()
TSScriptUtils.TSScriptUtils.TScriptUtils.MessageDialog ()
TSAutomationObject.TSAutomationObject.TAutomationObject.Invoke ()
TSScript.TSScript.TScript.ExecuteMethod ()
TSScriptableService.TSScriptableService.TScriptableService.ExecuteScriptMethod ()
TSWindow.TSWindow.TWindow.ExecuteScriptMethod ()
TSObjectEventsDispatcher.TSObjectEventsDispatcher.TObjectEventsDispatcher.AttemptToExecuteScriptMethod ()
TSObjectEventsDispatcher.TSObjectEventsDispatcher.TObjectEventsDispatcher.Invoke ()
TSConnectionPoints.TSConnectionPoints.TConnectionPointDispatcher.Invoke ()
Comobj.DispatchInvokeError ()
Comobj.DispatchInvokeError ()
TSTimer.TSTimer.TTimer.DoTimer ()
TSTimer.TSTimer.TTimer.OnTimer ()
JvTimer.JvTimer.TJvTimer.Timer ()
JvTimer.JvTimer.TJvTimer.DoTimer ()
Classes.TDataModule.WriteHeight ()

Вызывающий код:

function TimerOnTimer(Timer) {
System.MessageDialog("Не проставлены группы у новых инцидентов!", mdtInformation, mdbOK, 0);
}

Клиент: 3.4.0.141

Нравится

5 комментариев

Здравствуйте, Михаил!

Проверил на последней версии исполняемых файлов, - ошибку не воспроизвел.

Попробуйте:

1) Очистить Cache приложения (%appdata%\Terrasoft\3.4.0\Cache)
2) Обновить исполняемые файлы до последней версии (3.4.0.190) и воспроизвести проблему повторно.

Получить обновленную сборку Вы можете по запросу в техническую поддержку (support@terrasoft.ru).

[URL=http://fastpic.ru/][IMG]http://i66.fastpic.ru/big/2014/1215/b1/7f951477…]

Спасибо. Создал обращение. Пока протестировал еще и на 3.4.0.180, те же симптомы, окно сообщения создается из обычного события, но не создается из события тика.

Здравствуйте.
До 3.4.0.190 обновился, кэш чистил, ничего не помогло. Меня беспокоит, что с новым клиентом не поставляется обновления для сервисов, потому что если в дебаге посмотреть описание сервисов, то там стоит старая версия.

1) Обновлений для сервисов нет в 3.4.0.190?
2) System.MessageDialog вызывался из таймера? Можно выложить файл сервиса где был тест проведен? Ошибка уровня ядра, не проявляется если вызывать не из таймера.

Здравствуйте, Михаил.

Нет, обновления сервисов отсутствуют, я использую базовую конфигурацию версии 3.4.0.130 (продукт XRM Distribution + Service Desk) и бинарные файлы 3.4.0.190.

System.MessageDialog вызывался из таймера.

Прикладываю сервисы wnd_IncidentsGridArea и wnd_IncidentsGridAreaScript.

Дополнительно прикладываю скриншоты:

[URL=http://fastpic.ru/][IMG]http://i63.fastpic.ru/big/2014/1217/bd/4687bfd0…]
[URL=http://fastpic.ru/][IMG]http://i63.fastpic.ru/big/2014/1217/4f/164ba997…]

Спасибо, разобрался. Загруженные сервисы то же падают, но реже. Идут два сообщения подряд, скорей всего wnd_IncidentsGridArea используется в деталях тоже. Похоже с некоторой вероятностью одновременное асинхронное вызывание окна дает падение. После того как вынес код в wnd_Workspace, сообщение стало одно за тик и никогда не падает.

Показать все комментарии

Здравствуйте!

Возник вопрос, когда я вызываю System.MessageDialog("Message", mdtWarning, mdbOK, 0);
могу ли я добавить кнопку Cancel?
И если нет, то каким способом мне еще можно вызвать сообщение, в котором у меня будет кнопка ОK и Cancel.

Благодарю за ответ.

Нравится

4 комментария
System.MessageDialog("Message", mdtWarning, mdbOK + mdbCancel, 0)

А вообще, в scr_WindowUtils уже описаны готовые функции для разных диалогов с подходящими иконками и наборами кнопок, например, ShowConfirmationDialog.

Да, точно. Совсем забыла. По сути, когда я нажимаю на действие Cancel или No, действие не должно происходить. Но действие происходит:(

Нужно сравнивать результат вызова функции с константами mrCancel, mrYes или mrNo и в зависимости от этого запускать нужное действие или нет.

Спасибо за помощь, именно это я и сделала.

Показать все комментарии