Вопрос

Установка справочного поля в кастомном правиле мобильного приложения

В текщей задаче мобильного приложения есть требование бизнес-логики: "При смене статуса заявки на "ВРаботе" - проставить ответственным текущего пользователя мобильного приложения"



В мобильном приложении добавили правило:

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

    name: "CaseOwnerReq",

    ruleType: Terrasoft.RuleTypes.Custom,

    triggeredByColumns: ["Category", "Status"],

    events: [

        Terrasoft.BusinessRuleEvents.Load,

        Terrasoft.BusinessRuleEvents.ValueChanged,

        Terrasoft.BusinessRuleEvents.Save

    ],

    executeFn: function(record, rule, column, customData, callbackConfig) {

        //Статусы обращения

        const cnstStatInProg = "7e9f1204-f46b-1410-fb9a-0050ba5d6c38";//В работе

....

                if(vStatusId === cnstStatInProg){//В работе

                    /*

                    record.set("Owner.Id", Terrasoft.CurrentUserInfo.contactId, false);

                    record.set("Owner.Name", Terrasoft.CurrentUserInfo.contactName, true);

                    */

                    record.set("Owner.Id", "3d3b2a43-e521-49c0-97be-98e235e99e92", true);

                    record.set("Owner.Name", "- Петя ", true);

                }

......

и далее все как в примере



Попробовал уже наверное вариантов 10.... ошибок в консоли нет, если отладчиком пройти по коду, то оно вроде да-же меняет Owner.Id... но на экране ничего не меняется, после синхронизации ничего не меняется, после перезагрузки приложения ничего не меняется.



Куда копать?

Нравится

4 комментария

Последний вариант выглядит так:

                if(vStatusId === cnstStatInProg){//В работе

                    record.set("Owner", "3d3b2a43-e521-49c0-97be-98e235e99e92", true);

                    });

                }

И оно даж типа работает....(вижу аккаунт который задал) пока я стою на брек-поинте  и смотрю на блокированный экран в эмуляторе.... и его даж видно на странице редактирования.... но не видно на странице просмотра Заявки.... и шо это может быть?

Виктор, смотрю примеры подобных правил, только поля не справочные.

В MobileOpportunityModelConfig:

Terrasoft.sdk.Model.addBusinessRule("Opportunity", {
	name: "OpportunityAmountValidatorRule",
	ruleType: Terrasoft.RuleTypes.Custom,
	triggeredByColumns: ["Amount"],
	events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Save],
	executeFn: function(model, rule, column, customData, callbackConfig) {
		var revenue = model.get("Amount");
		if ((revenue < 0) || Ext.isEmpty(revenue)) {
			model.set("Amount", 0, true);
		}
		Ext.callback(callbackConfig.success, callbackConfig.scope);
	}
});

В MobileOpportunityProductInterestModelConfig:

Terrasoft.sdk.Model.addBusinessRule("OpportunityProductInterest", {
	name: "OpportunityProductInterestQuantityBelowZeroRule",
	ruleType: Terrasoft.RuleTypes.Custom,
	triggeredByColumns: ["Quantity"],
	events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Save],
	executeFn: function(model, rule, column, customData, callbackConfig) {
		if (model.get("Quantity") < 0) {
			model.set("Quantity", 1, true);
		}
		Ext.callback(callbackConfig.success, callbackConfig.scope);
	}
});

Последнюю строку точно не забыли?

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

Спасибо за коммент.

В принципе сделал (оч. похоже на ваш вариант), в принципе работает.

Проблема в обновлении страницы после присвоения. Те. на странице редактирования видно, что поле поменялось. Если уйти в реестр обращений а потом вернуться обратно в обращение, то запись становиться видна как родная.

Что с этим делать - пока не понятно... временно оставили как есть ибо не критично... решим административно-документальными мерами.

В MobileFileAndLinksEditControllerV2 и MobileFileAndLinksEmbeddedDetailGenerator используется функция setDisplayValue, но она вызывается для  для полей, связанных с файлами и не уверен, что подойдёт для обычных.

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