Добрый день!
Пытаюсь разобраться с кастомными правилами для мобильного приложения. Никак не могу найти способ получить данные из записи, Id которой находится в записи на которой запускается правило.
Вот - один из вариантов кода, который я пытался использовать:
Terrasoft.sdk.Model.addBusinessRule("UsrZakupka", {
name: "UsrAutoSetUsrDepartByCreatedBy",
ruleType: Terrasoft.RuleTypes.Custom,
triggeredByColumns: ["CreatedBy"],
events: [Terrasoft.BusinessRuleEvents.Load, Terrasoft.BusinessRuleEvents.ValueChanged],
executeFn: function(record, rule, column, customData, callbackConfig, event) {
var department = record.get("CreatedBy.Department");
record.set("UsrDepart", department, true);
Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
}
});
Подскажите, пожалуйста, каким образом можно получить запись с данными(через esq пытался, тоже ничего)
Нравится
Здравствуйте,
при загрузке лукапного поля все его поля автоматом не подтягиваются. Только Id и его дисплейное поле (Name). Поэтому, чтобы получить какое-то другое поле, нужно сделать отдельную загрузку по лукапному значению. Как вариант, можно использовать утилитный метод Terrasoft.DataUtils.loadRecordById или Terrasoft.DataUtils.loadRecords:
Terrasoft.DataUtils.loadRecordById({ recordId: recordId, modelName: modelName, columns: [], expandLookupColumns: false, callback: function(loadedRecord) { // Здесь получаешь значение департамента, устанавливаешь его в поле UsrDepart и вызываешь success правила. Ext.callback(callbackConfig.success, callbackConfig.scope, [true]); }, scope: this });
Алёна Доля,
Спасибо за пояснение.
Правило вроде отрабатывает, но как-то через раз, и только на одном значении...
Такой код:
Terrasoft.sdk.Model.addBusinessRule("Zakupka", {
name: "AutoSetDepartByOrder",
ruleType: Terrasoft.RuleTypes.Custom,
triggeredByColumns: ["Order"],
events: [Terrasoft.BusinessRuleEvents.ValueChanged, Terrasoft.BusinessRuleEvents.Load],
executeFn: function (record, rule, column, customData, callbackConfig, event) {
var order = record.get("Order");
var orderId = order ? order.get("Id") : null;
if (orderId) {
Terrasoft.DataUtils.loadRecordById({
recordId: orderId,
modelName: "Order",
columns: ["Podrazdel","Account"],
expandLookupColumns: false,
callback: function (loadedRecord) {
var department = loadedRecord.get("Podrazdel");
var departmentId = department ? department.get("Id") : null;
record.set("Depart", departmentId, true);
var account = loadedRecord.get("Account");
var accountId = account ? account.get("Id") : null;
record.set("Account", accountId, true);
Ext.callback(callbackConfig.success, callbackConfig.scope, [true]);
},
scope: this
});
}
}
});