Перестал выполняться обработчик клика по уведомлению, если не передан новый параметр НазваниеДействия

tormozit Открыто

6.1.8884.30515
Выполняю код
ТурбоКонф.ПоказатьВсплывающееУведомление(НазваниеСкрипта(), "Неверное имя или пароль." + СообщениеКакЗабытьВыбор() + Символы.ПС + ОписаниеОшибки,, ЭтотОбъект, "СброситьНастройкиИРБазы"); // ВводПароля
Появляется уведомление без гиперссылки. Клик по уведомлению ранее выполнял обработчик. Теперь открывает полный текст уведомления.
Предлагаю при отсутствии параметра НазваниеДействия использовать название "Действие", т.е. отображать гиперссылку с таким текстом.

Комментарии

bolsun
#1, 29 апреля 2024 01:04

Исправлено в 6.1.8885.5434


tormozit
#2, ред. 29 апреля 2024 07:57

Проверил. Теперь в этом случае работает как раньше.
Но кажется что предложенное мной решение с отображением гиперссылки будет удобнее и сделать это просто.


bolsun
#3, 29 апреля 2024 12:14

(2) tormozit, не заметил это предложение, да, тоже думал о таком варианте.


bolsun
#4, 29 апреля 2024 16:43

Добавил в версии 6.1.8885.33663

https://disk.yandex.ru/d/ay0Wg6IBTsxSxg


tormozit
#5, 29 апреля 2024 18:43

(4) bolsun, гиперссылка появилась, но при нажатии на нее возникла ошибка при выполнении давно работающего кода

		Параметры = Новый Массив;
		Параметры.Добавить(РежимДиалогаВопрос.ДаНетОтмена);
		ВопросПользователю = Новый ("ВопросПользователю", Параметры);

Ошибка при вызове обработчика. ScriptEngine.Machine.ExternalSystemException: {Модуль C:\Portable\TurboConf\user_scripts\RDT.os / Ошибка в строке: 3086 / Внешнее исключение (System.ArgumentNullException): Значение не может быть неопределенным.
Имя параметра: foregroundWindow}
ВопросПользователю = Новый ("ВопросПользователю", Параметры);
---> System.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: foregroundWindow
в ScriptEngine.Machine.TypeFactory.<>c__DisplayClass7_0.<FallbackConstructor>b__0(String typeName, IValue[] args)
в ScriptEngine.Machine.MachineInstance.NewFunc(Int32 argCount)
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
--- Конец трассировки внутреннего стека исключений ---
в ScriptEngine.Machine.MachineInstance.MainCommandLoop()
в ScriptEngine.Machine.MachineInstance.ExecuteCode()
в ScriptEngine.Machine.MachineInstance.ExecuteMethod(IRunnable sdo, Int32 methodIndex, IValue[] arguments)
в TurboConf.HostApplication.NotificationContext.<>c__DisplayClass2_0.<SetAction>b__0()


bolsun
#6, 29 апреля 2024 20:24

На версии 6.1.8885.39435 у меня не воспроизводится.
Если на ней по прежнему возникает ошибка, нужен алгоритм воспроизведения.


tormozit
#7, ред. 29 апреля 2024 22:02

(6) bolsun, GyEx3ztEgH.mp4
Сбросить настройки ИР адаптера. Разрешить его подключение к базе. Ввести неверный пароль. Кликнуть на "Выполнить действие"


bolsun
#8, 30 апреля 2024 19:15

(7) tormozit, скинь свою версию скрипта, т.к. у меня возникает ошибка с нехваткой параметров в обработчике.


tormozit
#9, 30 апреля 2024 19:16

RDT.os


bolsun
#10, ред. 30 апреля 2024 22:42

(5) tormozit, это не работало и на старых уведомлениях. Проблема в том, что перед показом диалога вопроса, фокус находится не в конфигураторе, а похоже в клиентском окне. Которое до момента показа, я так понял закрывается.
В результате указатель на окно 0. Я проверил после клика на действие, фокус точно уходит в конфигуратор, но потом меняется на другое окно.
Попробуй перед показом диалога вопроса, активировать окно конфигуратора. Я не могу это сделать, т.к. это вызывается из контекста скрипта и я не знаю из какого окна предполагается показать вопрос.


tormozit
#11, ред. 04 мая 2024 11:00

Добавил в обработчик этого клика активацию окна конфигуратора. Но эта ошибка все равно возникает, когда в момент создания вопроса отображается другой вопрос https://turboconf.ru/Tasks/9403
Прошу как то обработать эту ситуацию внутри Турбоконфа и выбрасывать более внятную ошибку.
RDT.os


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера