BPM 7.5
Есть карточка, нужно записать в параметр значение, а потом считать его в другой функции.
Как это сделать? (допустим добавил параметр AccountId)
Нравится
Добрый день!
Если я все верно понял, то следует пользоваться атрибутами. Установка значения:
[javascript]
this.set("AccountId", value);
[/javascript]
Получение:
[javascript]
var value = this.get("AccountId");
[/javascript]
Возможно не так поняли, или у меня руки кривые.

Опишу ситуацию, может я вообще как-то окольным путем пошел.
Есть деталь. На детали два поля Активности: прошлая задача, следующая задача.
При заполненном поле прошлой задачи, надо брать из нее контрагента, и в следующую задачу выводить список задач с этим контрагентом.
Использую вот этот код:
[javascript]
var accountId = null; //обнулить параметр
var activityId = this.get("UsrMeetInOppInMeet"); //id прошлой встречи
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "Activity"
});
esq.addColumn("Id");
esq.addColumn("Account");
esq.filters.logicalOperation = Terrasoft.LogicalOperatorType.AND;
if (activityId != null) {
esq.filters.addItem(Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL, 'Id', activityId.value));
esq.getEntityCollection(function(result) {
if (result.success) {
result.collection.each(function(item) {
accountId = item.get("Account");//надо записать параметр
});
}
});
}
if (accountId!=null) {//надо считать параметр, но он всегда null
var accountValue =accountId.value.toUpperCase();
return Terrasoft.createColumnInFilterWithParameters("Account", [accountValue]);
}
[/javascript]
Александр, подход неверный. Во-первых, в приведенном коде управление выйдет из функции до того, как отработает запрос esq (асинхронность!).
Во-вторых, эти параметры карточки, которые Вы отобразили на скриншоте могут использоваться в серверном коде, обычно в БП, и то редко. Аналогии с тем, как это делается в 5.х проводить не следует, так как у нас тут совершенно разные технологии.
Правильно будет добавить дополнительную колонку для атрибута предыдущей задачи и фильтровать по нему следующую.
На странице радактирования должно быть примерно так:
[javascript]
...
attributes: {
//прошлая встреча
"UsrMeetInOppInMeet": {
lookupListConfig: {
columns: ["Account"]
}
},
//следующая встреча
"UsrMeetInOppInMeetNext": {
lookupListConfig: {
filter: function() {
var usrMeetInOppInMeet = this.get("UsrMeetInOppInMeet");
var filterGroup = this.Terrasoft.createFilterGroup();
if (!this.Ext.isEmpty(usrMeetInOppInMeet)) {
var account = usrMeetInOppInMeet.Account;
if (this.Ext.isEmpty(account)) {
var isNullFilter = this.Terrasoft.createColumnIsNullFilter("Account");
filterGroup.addItem(isNullFilter);
} else {
var accountFilter = this.Terrasoft.createColumnFilterWithParameter(this.Terrasoft.ComparisonType.EQUAL, "Account", account.value);
filterGroup.addItem(accountFilter);
}
}
return filterGroup;
}
}
}
}
...
[/javascript]