Технические вопросы
7.x

Как сделать фильтр для Счета по Контрагенту?

Здравствуйте, помогите пожалуйста. Создал деталь, в которой есть поля Счет, Контрагент и др. Должен присутствовать фильтр счетов по контрагенту.
Пришел к следующей реализации:

attributes: {
    "UsrBill": {
          lookupListConfig: {
                filters: [
                        function() {
                                var account = this.get("UsrContragent");
                                var filterGroup = this.Ext.create("Terrasoft.FilterGroup");
                                var left = [Invoice:AccountId]
                                filterGroup.add("UsrContragent",
                                        Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
                                        left,
                                        account.value));
                                return filterGroup;
                        }
                ]
        }
    }
}
}

Но никак не получается записать левое выражение.

Нравится

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

Иван,

Данную задачу можно решить через бизнес-правило rules с типом FILTRATION,

Либо:

[javascript]
attributes: {
"UsrBill": {
lookupListConfig: {
filters: [
function() {
var account = this.get("UsrContragent");
var filterGroup = this.Ext.create("Terrasoft.FilterGroup");
filterGroup.add("UsrContragent",
Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
"Account", // Указывается поле текущей сущности (в нашем случае Invoice)
account? account.value : Terrasoft.GUID_EMPTY));
return filterGroup;
}
]
}
}
}
[/javascript]

Огромное спасибо за помощь. Через правило, я так понял, должно выглядеть следующим образом:
[javascript]
rules: {
"UsrBill": {
"FiltrationInvoiceByAccount": {
"ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
"autocomplete": true,
"autoClean": true,
"baseAttributePatch": "Account",
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "Account"
}
}
}
[/javascript]
Но мне немного не понятно, что указывается в атрибутах baseAttributePatch и attribute.

Думаю, что так:

[javascript]
rules: {
"UsrBill": {
"FiltrationInvoiceByAccount": {
"ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
"autocomplete": true,
"autoClean": true,
"baseAttributePatch": "Account",
"comparisonType": Terrasoft.ComparisonType.EQUAL,
"type": BusinessRuleModule.enums.ValueType.ATTRIBUTE,
"attribute": "UsrContragent"
}
}
}
[/javascript]

attribute - Имя поля объекта по значению которого будем фильтровать (поле объекта вашей детали)
baseAttributePatch - Имя поля для связи из объекта соответствующего справочному поле UsrBill (объект Invoice)

Спасибо за разъяснения.

Показать все комментарии