Возникла проблема после обновления на 7.17. Что-то с decode. You're trying to decode an invalid JSON String: ReloadMessage
У нас в системе был БП, что обновлял страницу (посылал сообщение на клиент) Вчера все работало, сегодня в обновленной версии не обновляет страницу в консоле ошибка, что-то про Decode
h {sourceClass: "Ext.JSON", sourceMethod: "decode", msg: "You're trying to decode an invalid JSON String: ReloadMessage", message: "You're trying to decode an invalid JSON String: ReloadMessage"}
Это у нескольких клиентов. Пока ТС думает, может кто подскажет как решить самостоятельно?
В самой схеме такой код на прием сообщения
init: function() {
this.callParent(arguments);
this.subscriptionFunction();
},
subscriptionFunction: function() {
Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE,
this.bpListenerMessage, this);
},
bpListenerMessage: function(scope, message) {
if (!message || message.Header.Sender !== "Reload") {
return;
}
var message2 = message.Body;
if (!this.Ext.isEmpty(message2) && message2 === "ReloadMessage") {
this.reloadEntity();
}
},
destroy: function() {
this.Terrasoft.ServerChannel.un(Terrasoft.EventName.ON_MESSAGE, this.bpListenerMessage, this);
this.callParent(arguments);
}
А в бп в скрипте такой код:
var connection = Get("UserConnection");
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(connection, "Reload", "ReloadMessage");
return true;
Нравится
Если в скриптах ничего не меняли и перестало работать после обновления, причина может быть в отключившихся веб-сокетах. Как их настраивают, см. тут.
Зверев Александр,
Клиент в облаке. У другого клиента аналогичная проблема. У других партнеров аналогичные кейсы.
Получена информация о причине и способе исправления.
Для этого:
1. В процессе в элементе ScriptTask экранировать кавычками ReloadMessage:
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(connection, "Reload", "\"ReloadMessage\"");
2. В схеме строчку заменить на:
var message2 = Terrasoft.decode(message.Body);
Если message не json, то происходит исключение. В новой версии это исключение стал перехватывать zone.js, поэтому не срабатывала подписка:
Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE, this.bpListenerMessage, this);
Сейчас разработчики решают, будут ли что-то делать в связи с этим.
Разработчики обнаружили первопричины проблемы. Она будет исправлена в версии 7.17.2, на текущий же момент для исправления достаточно вместо упомянутых выше правок установить пакет из файла. Пакет с фиксом актуален для всех версий 7.17.0.
Зверев Александр,
Добрый день! Не получилось накатить пакет на прод и откатить его же. Валятся ошибки:
Ошибка установки данных "SysModuleEdit_OmniChat" из пакета "OmnichannelMessaging". UId 79c8d730-1a6e-4467-88a2-dc33cf681d5e: The UPDATE statement conflicted with the FOREIGN KEY constraint "FKfswQzuMwAT8Bnlby6UilfQqmU". The conflict occurred in database "mod", table "dbo.SysModuleEntity", column 'Id'.
Ошибка установки данных "SysModule_OmniChat" из пакета "OmnichannelMessaging". UId d338d0b8-eb04-42ab-8789-f6a3ace6e8eb: The UPDATE statement conflicted with the FOREIGN KEY constraint "FKsUTsBBLbO1DA4j0DdV9M0R0UW0U". The conflict occurred in database "mod", table "dbo.SysModuleEntity", column 'Id'.
Можете подсказать/посоветовать как поступить, куда копать?
Всё заработало просто - накатываем пакет и, если возникает ошибка, не откатываем.