Здравствуйте.
Я разрабатываю свое модально окно, по нажатию на кнопку в карточке, хочу открыть модальную форму, в которой есть ряд справочных полей. Каждое справочное поле описано в атрибутах как виртуальная колонка, я накладываю какие-то фильтры на них, но эти фильтры почему-то не срабатывают.
Как добавляю модальное окно:
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 не срабатывает при разворачивании справочника. Подскажите пожалуйста, в чем у меня ошибка?
Нравится
Добрый день, сложно сказать где именно ошибка. Для выявления точной причины следует провести отладку.
Однако, возможно дело в том, как вы в атрибуте работаете со значением 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").
Возможно данный пример вам поможет.