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

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

Версия 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) Значение поля завязать на изменение справочного поля (через атрибуты страницы):

"MyField": {
	dependencies: [
		{
			columns: ["TheSameUsrTypeRequestValues"],
			methodName: "updateMyField"
		}
	]
}

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

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

3) Создать завязку на поле MyField:

this.Terrasoft.createColumnFilterWithParameter(
      this.Terrasoft.ComparisonType.EQUAL,
      "UsrTypeRequest",
      MyField
)
Показать все комментарии