Не работает фильтрация для справочника на модальном окне

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

Я разрабатываю свое модально окно, по нажатию на кнопку в карточке, хочу открыть модальную форму, в которой есть ряд справочных полей. Каждое справочное поле описано в атрибутах как виртуальная колонка, я накладываю какие-то фильтры на них, но эти фильтры почему-то не срабатывают.

Как добавляю модальное окно: 

1) Создаю в пакете модель представления страницы и указываю в качестве родителя BaseModalBoxPage

2) Код страницы:

 define("NrbTestModalBox", [],

    function() {

        return {

            mixins: {},

            messages: {},

            attributes: {

                "Contact": {

                    isRequired: true,

                    dataValueType: Terrasoft.DataValueType.LOOKUP,

                    referenceSchemaName: "Contact",

                    type: Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,

                    lookupListConfig: {

                        filters: [

                            function () {

                                debugger;

                                var filterGroup = Ext.create("Terrasoft.FilterGroup");

                                filterGroup.add("ContactFilter",

                                                Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "CreatedById", null));

                                return filterGroup;

                            }

                        ]

                    }

                },

            },

            details: {},

            diff: /**SCHEMA_DIFF*/[

                {

                    "operation": "insert",

                    "name": "mainBoxContainerGrid",

                    "parentName": "CardContentWrapper",

                    "propertyName": "items",

                    "values": {

                        "itemType": Terrasoft.ViewItemType.GRID_LAYOUT,

                        "items": []

                    }

                },

                {

                    "operation": "insert",

                    "parentName": "mainBoxContainerGrid",

                    "propertyName": "items",

                    "name": "Contact",

                    "values": {

                        "bindTo": "Contact",

                        "caption": "Контакт",

                        "contentType": Terrasoft.ContentType.ENUM,

                        "layout": {

                            "column": 0,

                            "row": 0,

                            "colSpan": 24

                        }

                    },

                }

            ]/**SCHEMA_DIFF*/,

            methods: {

                init: function() {

                    this.callParent(arguments);

                },

 

                getLookupQuery: function(filter, column) {

                    var esq = this.callParent(arguments);

                    var lookupListConfig = this.getLookupListConfig(column);

                    if (lookupListConfig) {

                        this.Terrasoft.each(lookupListConfig.columns, function(column) {

                            if (!esq.columns.contains(column)) {

                                esq.addColumn(column);

                            }

                        }, this);

                    }

 

                    var schemaColumn = this.getColumnByName(column);

                    if (schemaColumn.lookupListConfig && schemaColumn.lookupListConfig.filter) {

                        esq.filters.addItem(schemaColumn.lookupListConfig.filter());

                    }

 

                    return esq;

                },

                getLookupListConfig: function(columnName) {

                    var schemaColumn = this.getColumnByName(columnName);

                    if (!schemaColumn) {

                        return null;

                    }

                    var lookupListConfig = schemaColumn.lookupListConfig;

                    if (!lookupListConfig) {

                        return null;

                    }

                    var excludedProperty = ["filters", "filter"];

                    var config = {};

                    this.Terrasoft.each(lookupListConfig, function(property, propertyName) {

                        if (excludedProperty.indexOf(propertyName) === -1) {

                            config[propertyName] = property;

                        }

                    });

                    return config;

                }

            }

        };

    });

 

3) Вызываю модальное окно так: 

this.sandbox.loadModule("ModalBoxSchemaModule", {

id: this.sandbox.id + "_NrbTestModalBox", //NrbCompleteCallModalBox

instanceConfig: {

     moduleInfo: {

           schemaName: "NrbTestModalBox",

     },          

 }

});

 

 

debugger не срабатывает при разворачивании справочника. Подскажите пожалуйста, в чем у меня ошибка?

Нравится

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

Добрый день, сложно сказать где именно ошибка. Для выявления точной причины следует провести отладку.

Однако, возможно дело в том, как вы в атрибуте работаете со значением CreatedBy.

Для теста создал подобный фильтр для поля Owner:

attributes: {
			"Owner": {
                "dataValueType": Terrasoft.DataValueType.LOOKUP,
                "lookupListConfig": {
                    "filters": [
                        function() {
                            var filterGroup = Ext.create("Terrasoft.FilterGroup");
                            filterGroup.add("TestSd",
                                Terrasoft.createColumnIsNullFilter("[Contact:Id].CreatedBy")
										   );
                            return filterGroup;
                        }
                    ]
                }
			}
		},

Обратите внимание каким образом я ищу контакты с CreatedBy null:

Terrasoft.createColumnIsNullFilter("[Contact:Id].CreatedBy").

Возможно данный пример вам поможет.

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