Вопрос

Открыть страницу раздела в бизнес-процессе

Всем доброго времени суток.

Версия 7.11.

На клиенте можно открыть любую страницу (допустим, по клику на кнопку), зная её ссылку. Для этого в обработчик клика добавляем:

var hash = /**путь до страницы**/;
this.sandbox.publish("PushHistoryState", {hash: hash});

Вопрос такой - а как это сделать внутри задания-сценария бизнес-процесса? Просто открыть для текущего пользователя некую страницу, зная её ссылку, перенаправить его.

В мастере БП есть стандартные элементы "Открыть страницу редактирования" и "Преднастроенная страница", но интересует страница раздела Обращений CaseSection - её нет в списке допустимых для открытия преднастроенных, и к тому же там идёт перенаправление по ссылке странного вида: ProcessCardModuleV2, а нужно просто #SectionModuleV2/CaseSection/

Хотелось бы получить скрипт для любой ссылки. Спасибо.

Нравится

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

"Хотелось бы получить скрипт для любой ссылки" - из бизнес-процесса можно отправить сообщение по вебсокету, а в 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, там всего пару методов для работы с глобальным объектом роутером.

Альмухаметов Булат,

спасибо, так работает.

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