Всем доброго времени суток.
Версия 7.11.
На клиенте можно открыть любую страницу (допустим, по клику на кнопку), зная её ссылку. Для этого в обработчик клика добавляем:
var hash = /**путь до страницы**/; this.sandbox.publish("PushHistoryState", {hash: hash});
Вопрос такой - а как это сделать внутри задания-сценария бизнес-процесса? Просто открыть для текущего пользователя некую страницу, зная её ссылку, перенаправить его.
В мастере БП есть стандартные элементы "Открыть страницу редактирования" и "Преднастроенная страница", но интересует страница раздела Обращений CaseSection - её нет в списке допустимых для открытия преднастроенных, и к тому же там идёт перенаправление по ссылке странного вида: ProcessCardModuleV2, а нужно просто #SectionModuleV2/CaseSection/
Хотелось бы получить скрипт для любой ссылки. Спасибо.
Нравится
"Хотелось бы получить скрипт для любой ссылки" - из бизнес-процесса можно отправить сообщение по вебсокету, а в ClientMessageBridge на клиенте загрузить страницу.
Альмухаметов Булат
добрый вечер, спасибо за идею.
Не подскажете, как правильно отправить сообщение из БП? Пробую вот по этой инструкции: https://academy.terrasoft.ru/documents/technic-sdk/7-11/clientmessagebr… компилятор ругается на MsgChannelUtilities в задании-сценарии. Что ещё нужно подключить?
Нашёл. Отправляю таким способом:
// Публикация сообщения по WebSocket. var userConnection = Get<UserConnection>("UserConnection"); Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection, "OpenCaseSection", "messageText"); return true;
В переопределённом ClientMessageBridge на клиенте соответственно доработал метод:
onMessageReceived: function(scope, response) { this.callParent(arguments); if (response.Header.Sender == "OpenCaseSection"){ console.log(response); this.sandbox.publish("PushHistoryState", {hash: "SectionModuleV2/CaseSection/"}); } },
Но теперь проблема при перенаправлении: i {message: "Message PushHistoryState is not defined in BaseSch…aModuleV2 (ViewModule_clientMessageBridge) module"}
Соответственно, вопрос - где именно происходит подписка на PushHistoryState, и как выглядит обработчик?
Смородинов Денис,
думаю, нужно добавить сообщение
"PushHistoryState": { mode: this.Terrasoft.MessageMode.BROADCAST, direction: this.Terrasoft.MessageDirectionType.PUBLISH },
Подписка происходит в NUI.NavigationModule, там всего пару методов для работы с глобальным объектом роутером.