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

Динамический фильтр

Всем доброго времени суток.

Версия 7.9 sales.

Есть типовая деталь с колонками, к ней подключён фильтр:

"UsrSchema4Detailefdea15b": {
                "schemaName": "UsrSchema4Detail",
                "entitySchemaName": "UsrRequest",
                "filter": {
                        "detailColumn": "UsrOrder",
                        "masterColumn": "Id"
                },
                "filterMethod": "UsrRequestFilterSupplier"
        },

который реализован следующим образом:

UsrRequestFilterSupplier: function() {
                                var filterGroup = new this.Terrasoft.createFilterGroup();
                                filterGroup.logicalOperation = Terrasoft.LogicalOperatorType.AND;
                                filterGroup.add(
                                        "OrderFilter",
                                        this.Terrasoft.createColumnFilterWithParameter(
                                                this.Terrasoft.ComparisonType.EQUAL,
                                                "UsrOrder",
                                                this.get("Id")
                                        )
                                );
                                filterGroup.add(
                                        "UsrRequestFilter",
                                        this.Terrasoft.createColumnFilterWithParameter(
                                                this.Terrasoft.ComparisonType.EQUAL,
                                                "UsrTypeRequest",
                                                "38cc7931-7db6-4e12-a343-1033f6316cf1"
                                        )
                                );
                                return filterGroup;
                        },

То есть выводятся только те записи, у которых колонка UsrTypeRequest соответствует нужному id.

Вопрос - можно ли такой же фильтр сделать динамическим? То есть допустим создаём на карточке поле с выбором из справочника с теми же значениями, что и у UsrTypeRequest, и нужно, чтобы при изменении этого поля у нас менялись отображаемые записи на детали.

Нравится

1 комментарий

Здравствуйте!

Можно сделать следующее:
1) Создать виртуальное поле на странице MyField:
MyField: {
dataValueType: Terrasoft.DataValueType.GUID,
type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN
},
2) Значение поля завязать на изменение справочного поля (через атрибуты страницы):
[javascript]
"MyField": {
dependencies: [
{
columns: ["TheSameUsrTypeRequestValues"],
methodName: "updateMyField"
}
]
}
[/javascript]

Метод updateMyField должен устанавливать в поле MyField значение поля TheSameUsrTypeRequestValues.

Поле TheSameUsrTypeRequestValues - содержит те же значения, что и UsrTypeRequest.

3) Создать завязку на поле MyField:
[javascript]
this.Terrasoft.createColumnFilterWithParameter(
this.Terrasoft.ComparisonType.EQUAL,
"UsrTypeRequest",
MyField
)
[/javascript]

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