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

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

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,

Либо:

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

Огромное спасибо за помощь. Через правило, я так понял, должно выглядеть следующим образом:

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"
                }
        }
}

Но мне немного не понятно, что указывается в атрибутах baseAttributePatch и attribute.

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

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"
                }
        }
}

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

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

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