BPM 7.5
Есть карточка, нужно записать в параметр значение, а потом считать его в другой функции.
Как это сделать? (допустим добавил параметр AccountId)
Нравится
Добрый день!
Если я все верно понял, то следует пользоваться атрибутами. Установка значения:
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; } } } } ...