Добрый день!
Столкнулся с такой проблемой.
В разделе Обращения реализовал фильтр справочного поля по примеру из академии. В атрибуте указал правила фильтрации поля Контакт по полю Квартира (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; } ] } } }