Добрый день!
Столкнулся с такой проблемой.
В разделе Обращения реализовал фильтр справочного поля по примеру из академии. В атрибуте указал правила фильтрации поля Контакт по полю Квартира (VcApartment), таким образом чтобы отображались только те Контакты у которых на детали Адрес контакта квартира соответствует полю Квартира в Обращении.
attributes: {
"Contact": {
"dataValueType": Terrasoft.DataValueType.LOOKUP,
"lookupListConfig": {
"filters": [
function() {
var apt = this.get("VcApartment");
var filterGroup = Ext.create("Terrasoft.FilterGroup");
filterGroup.add("IsActive",
Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"[ContactAddress:Contact].VcApt",
apt.value));
return filterGroup;
}
]
}
}
},Фильтр отрабатывает нормально. Но если создать новое обращение из карточки Контакта, то система зависает и в консоли появляется следующая ошибка: Uncaught TypeError: Cannot read property 'value' of undefined.
![]()
Понятно что ошибка вылазит из за того что поле Квартира не заполнено. Но вот как обойти эту ошибку не могу понять.
Нравится
Добрый день!
Можно так:
attributes: {
"Contact": {
"dataValueType": Terrasoft.DataValueType.LOOKUP,
"lookupListConfig": {
"filters": [
function() {
var apt = this.get("VcApartment");
var aptValue = apt && apt.value ? apt.value : "";
var filterGroup = Ext.create("Terrasoft.FilterGroup");
filterGroup.add("IsActive",
Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"[ContactAddress:Contact].VcApt",
aptValue ));
return filterGroup;
}
]
}
}
}Тогда при незаполненной квартире будут отображаться контакты, с адресами с незаполненной квартирой.
Если нужно отображать все контакты, то
attributes: {
"Contact": {
"dataValueType": Terrasoft.DataValueType.LOOKUP,
"lookupListConfig": {
"filters": [
function() {
var apt = this.get("VcApartment");
var filterGroup = Ext.create("Terrasoft.FilterGroup");
if (apt) {
filterGroup.add("IsActive",
Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"[ContactAddress:Contact].VcApt",
apt.value));
}
return filterGroup;
}
]
}
}
}
Добрый день!
Можно так:
attributes: {
"Contact": {
"dataValueType": Terrasoft.DataValueType.LOOKUP,
"lookupListConfig": {
"filters": [
function() {
var apt = this.get("VcApartment");
var aptValue = apt && apt.value ? apt.value : "";
var filterGroup = Ext.create("Terrasoft.FilterGroup");
filterGroup.add("IsActive",
Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"[ContactAddress:Contact].VcApt",
aptValue ));
return filterGroup;
}
]
}
}
}Тогда при незаполненной квартире будут отображаться контакты, с адресами с незаполненной квартирой.
Если нужно отображать все контакты, то
attributes: {
"Contact": {
"dataValueType": Terrasoft.DataValueType.LOOKUP,
"lookupListConfig": {
"filters": [
function() {
var apt = this.get("VcApartment");
var filterGroup = Ext.create("Terrasoft.FilterGroup");
if (apt) {
filterGroup.add("IsActive",
Terrasoft.createColumnFilterWithParameter(
Terrasoft.ComparisonType.EQUAL,
"[ContactAddress:Contact].VcApt",
apt.value));
}
return filterGroup;
}
]
}
}
}