Всем доброго времени суток.
Версия 7.10.
Задача по сути состоит в доработке мобильного приложения. Как я понял, взаимодействия между колонками в мобильном приложении регулируются бизнес-правилами. Как правильно подключить правило, может быть есть какой-нибудь гайд?
Для примера на детали "Продукт в продаже" я хочу поменять правило, в соответствии с которым в случае, если для количества задано отрицательное значение в колонку выставлялось значение 0, а не 1, как сейчас + дополнительно, если для логической колонки UsrService "Услуга" выставлено значение true, то колонка Quantity выставлялась 0 и блокировалась для изменения.
Для этого я создал файл UsrMobileOpportunityProductInterestModelConfig в пакете Custom и добавил там следующий код по аналогии с оригиналом:
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 пытаюсь подключить созданный файл:
"ModelExtensions": [
"MobileOpportunityProductInterestModelConfig",
"UsrMobileOpportunityProductInterestModelConfig"
]
},
При синхронизации и загрузке один файл судя по всему добавился (вместо 232 стало 233). И всё равно при изменении в этом случае получаю в количестве 1 вместо 0.
Помимо этого, в браузерном эмуляторе приложения почему-то не доступно рабочее место "Полевые продажи", но это отдельно.
Нравится
Насколько я понимаю, бизнес-правило для блокировки поля Количество по условию 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'] });