Как работать с параметрами в карточке

BPM 7.5
Есть карточка, нужно записать в параметр значение, а потом считать его в другой функции.
Как это сделать? (допустим добавил параметр AccountId)

Нравится

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

Добрый день!
Если я все верно понял, то следует пользоваться атрибутами. Установка значения:

this.set("AccountId", value);

Получение:

var value = this.get("AccountId");

Возможно не так поняли, или у меня руки кривые.

Опишу ситуацию, может я вообще как-то окольным путем пошел.
Есть деталь. На детали два поля Активности: прошлая задача, следующая задача.
При заполненном поле прошлой задачи, надо брать из нее контрагента, и в следующую задачу выводить список задач с этим контрагентом.

Использую вот этот код:

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]);
}

Александр, подход неверный. Во-первых, в приведенном коде управление выйдет из функции до того, как отработает запрос esq (асинхронность!).
Во-вторых, эти параметры карточки, которые Вы отобразили на скриншоте могут использоваться в серверном коде, обычно в БП, и то редко. Аналогии с тем, как это делается в 5.х проводить не следует, так как у нас тут совершенно разные технологии.
Правильно будет добавить дополнительную колонку для атрибута предыдущей задачи и фильтровать по нему следующую.
На странице радактирования должно быть примерно так:

...
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;
			}
		}
 
	}
}
...
Показать все комментарии