Здравствуйте.
Есть следующая ситуация:
Заходим в деталь карточки раздела, добавляя туда запись отрабатывает БП который меняет значение поля в Entity, но при возвращении в карточку остается старое значение.
Поэтому возникает необходимость актуализировать данные в карточке, к примеру, при помощи метода this.reloadEntity(), но непонятно как отправить message из БП в схему карточки и там уже запустить обновление.
Есть идеи?
Нравится
На сервере через Элемент скрипты делаете так:
string messageText = "{\"любой текст, если хотите\"}"; string sender = "NeedUpdatedGrid"; MsgChannelUtilities.PostMessageToAll(sender, messageText);
Затем создаете клиентский модуль, такого содержания:
define("ClientMessageBridge", ["ConfigurationConstants"], function(ConfigurationConstants) { return { messages: { "NeedUpdatedGrid": { "mode": Terrasoft.MessageMode.BROADCAST, "direction": Terrasoft.MessageDirectionType.PUBLISH } }, methods: { init: function() { this.callParent(arguments); this.addMessageConfig({ sender: "NeedUpdatedGrid", messageName: "NeedUpdatedGrid" }); }, afterPublishMessage: function( sandboxMessageName, webSocketBody, result, publishConfig) { if (sandboxMessageName === "NeedUpdatedGrid") { var name = webSocketBody.name; } } } }; });
А там, где хотите обновить грид, делаете так:
init: function() { this.callParent(arguments); this.sandbox.subscribe("NeedUpdatedGrid", this.myNameMethod, this); }, myNameMethod: function(args) { this.reloadEntity(); }
Ну и соответственно не забудьте в схеме дописать
блок messages, сообщение можете принимать как BROADCAST
На сервере через Элемент скрипты делаете так:
string messageText = "{\"любой текст, если хотите\"}"; string sender = "NeedUpdatedGrid"; MsgChannelUtilities.PostMessageToAll(sender, messageText);
Затем создаете клиентский модуль, такого содержания:
define("ClientMessageBridge", ["ConfigurationConstants"], function(ConfigurationConstants) { return { messages: { "NeedUpdatedGrid": { "mode": Terrasoft.MessageMode.BROADCAST, "direction": Terrasoft.MessageDirectionType.PUBLISH } }, methods: { init: function() { this.callParent(arguments); this.addMessageConfig({ sender: "NeedUpdatedGrid", messageName: "NeedUpdatedGrid" }); }, afterPublishMessage: function( sandboxMessageName, webSocketBody, result, publishConfig) { if (sandboxMessageName === "NeedUpdatedGrid") { var name = webSocketBody.name; } } } }; });
А там, где хотите обновить грид, делаете так:
init: function() { this.callParent(arguments); this.sandbox.subscribe("NeedUpdatedGrid", this.myNameMethod, this); }, myNameMethod: function(args) { this.reloadEntity(); }
Ну и соответственно не забудьте в схеме дописать
блок messages, сообщение можете принимать как BROADCAST
Литвинко Павел,
Спасибо, попробую.
А зачем эта функция?
afterPublishMessage: function( sandboxMessageName, webSocketBody, result, publishConfig) { if (sandboxMessageName === "NeedUpdatedGrid") { var name = webSocketBody.name; } }
И модуль этой же функции должен от кого-то наследоваться?
Литвинко Павел,
На сервере через Элемент скрипты делаете так:
Под - "...Элемент скрипты..." , вы имели ввиду элемент задание сценарий?
Если это так, то следующий код там неприменим:
MsgChannelUtilities.PostMessageToAll(sender, messageText);
Так как объект MsgChannelUtilities отсутствует в данном контексте.
Андреев Андрей Сергеевич пишет:
Литвинко Павел,
На сервере через Элемент скрипты делаете так:
Под - "...Элемент скрипты..." , вы имели ввиду элемент задание сценарий?
Если это так, то следующий код там неприменим:
MsgChannelUtilities.<span>PostMessageToAll</span><span>(</span>sender, messageText<span>)</span><span>;</span>
Так как объект MsgChannelUtilities отсутствует в данном контексте.
Да, задание сценарий
Андреев Андрей Сергеевич пишет:
Литвинко Павел,
Спасибо, попробую.
А зачем эта функция?afterPublishMessage: function( sandboxMessageName, webSocketBody, result, publishConfig) { if (sandboxMessageName === "NeedUpdatedGrid") { var name = webSocketBody.name; } }И модуль этой же функции должен от кого-то наследоваться?
https://academy.terrasoft.ua/documents/technic-sdk/7-13/clientmessagebr…;