У нас в системе был БП, что обновлял страницу (посылал сообщение на клиент) Вчера все работало, сегодня в обновленной версии не обновляет страницу в консоле ошибка, что-то про 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;

 

Нравится

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

Если в скриптах ничего не меняли и перестало работать после обновления, причина может быть в отключившихся веб-сокетах. Как их настраивают, см. тут.

Зверев Александр,

Клиент в облаке. У другого клиента аналогичная проблема. У других партнеров аналогичные кейсы.

Получена информация о причине и способе исправления.

Для этого: 

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'.

 

Можете подсказать/посоветовать как поступить, куда копать?

Всё заработало просто - накатываем пакет и, если возникает ошибка, не откатываем.

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

Добрый день, коллеги. Прошу помочь... Одно правило последнее перекрывает первое. И последнее работает, а первое нет. 

Как можно сделать чтобы правило срабатывало по двум условиям?

 

 

Terrasoft.sdk.Model.addBusinessRule("Activity", {

    ruleType: Terrasoft.RuleTypes.Visibility,

    conditionalColumns: [

        {name: "UsrLookupBR", value:"b14640eb-8b89-4fe9-8b00-a51b61ff9430"}

    ],

    triggeredByColumns: ["UsrLookupBR"],

    dependentColumnNames: ["UsrLookupDostup"]

});



Terrasoft.sdk.Model.addBusinessRule("Activity", {

    ruleType: Terrasoft.RuleTypes.Visibility,

    conditionalColumns: [

        {name: "UsrLookupBR", value:"e818a7c2-f351-41a6-a376-7f42762883f2"}

    ],

    triggeredByColumns: ["UsrLookupBR"],

    dependentColumnNames: ["UsrLookupDostup"]

});

Нравится

1 комментарий

Насколько понимаю, в MobileKnowledgeBaseFileModelConfig именно так и сделано, два правила по двум константам меняют видимость одного поля:

Terrasoft.sdk.Model.addBusinessRule("KnowledgeBaseFile", {
	ruleType: Terrasoft.RuleTypes.Visibility,
	name: "KnowledgeBaseFileVisibleLinkRule",
	conditionalColumns: [
		{name: "Type", value: Terrasoft.Configuration.FileTypeGUID.Link}
	],
	events: [Terrasoft.BusinessRuleEvents.Load],
	dependentColumnNames: ["Name"]
});
Terrasoft.sdk.Model.addBusinessRule("KnowledgeBaseFile", {
	ruleType: Terrasoft.RuleTypes.Visibility,
	name: "KnowledgeBaseFileVisibleKnowledgeBaseLinkRule",
	conditionalColumns: [
		{name: "Type", value: Terrasoft.Configuration.FileTypeGUID.KnowledgeBaseLink}
	],
	events: [Terrasoft.BusinessRuleEvents.Load],
	dependentColumnNames: ["Name"]
});

Если не хватает возможности стандартных бизнес-правил, можно настроить пользовательское. См. статью, там настраивается валидность значения поля по тройному условию.

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