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