Вопросы по разработке в мобильном приложении

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

Версия 7.10.

Задача по сути состоит в доработке мобильного приложения. Как я понял, взаимодействия между колонками в мобильном приложении регулируются бизнес-правилами. Как правильно подключить правило, может быть есть какой-нибудь гайд?

Для примера на детали "Продукт в продаже" я хочу поменять правило, в соответствии с которым в случае, если для количества задано отрицательное значение в колонку выставлялось значение 0, а не 1, как сейчас + дополнительно, если для логической колонки UsrService "Услуга" выставлено значение true, то колонка Quantity выставлялась 0 и блокировалась для изменения.

Для этого я создал файл UsrMobileOpportunityProductInterestModelConfig в пакете Custom и добавил там следующий код по аналогии с оригиналом:

Terrasoft.sdk.Model.addBusinessRule("OpportunityProductInterest", {
        name: "UsrOpportunityProductInterestQuantityBelowZeroRule",
        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", 0, true);
                }
                Ext.callback(callbackConfig.success, callbackConfig.scope);
        }
});

Далее в файле MobileApplicationManifestDefaultWorkplace в том же пакете Custom в Models пытаюсь подключить созданный файл:

"OpportunityProductInterest": {
                        "ModelExtensions": [
                                "MobileOpportunityProductInterestModelConfig",
                                "UsrMobileOpportunityProductInterestModelConfig"
                        ]
                },

При синхронизации и загрузке один файл судя по всему добавился (вместо 232 стало 233). И всё равно при изменении в этом случае получаю в количестве 1 вместо 0.

Помимо этого, в браузерном эмуляторе приложения почему-то не доступно рабочее место "Полевые продажи", но это отдельно.

Нравится

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

Насколько я понимаю, бизнес-правило для блокировки поля Количество по условию UsrService == true должно выглядеть так:

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

Подключил также, как описывал выше - всё равно не срабатывает.

Денис,

Для активации/деактивации колонки можно использовать правило Terrasoft.RuleTypes.Activation.
Обратите внимание на пример:

Terrasoft.sdk.Model.addBusinessRule('OpportunityProductInterest', {
    ruleType: Terrasoft.RuleTypes.Activation,
    events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged],
    triggeredByColumns: [UsrService],
    conditionalColumns: [
        {name: UsrService, value: false}
    ],
    dependentColumnNames: ['Quantity']
});
Показать все комментарии