Помогите пожалуйста отфильтровать справочное поле на клиенте,
У меня есть объект CreditCard у которого есть деталь [залоговое обеспечение] они связаны между собой через колонку [залоговое обеспечение].CCId(идентификатор кредитной карты).
Так же в объекте [залоговое обеспечение] есть справочное поле [Контакт] собственно именно его я и хочу отфильтровать. Чтобы в нем появлялись только те контакты которые присутствуют в другой детали в CreditCard - CC_TxParticipant(деталь) которые связаны так же как и [залоговое обеспечение] через колонку CCId(идентификатор кредитной карты).
В детали CC_TxParticipant есть два справочных поля - 1. Контакт 2. Тип контакта, так вот я не совсем понимаю как сделать так чтобы во время фильтра отсеивались контакты с определенным типом.
Сейчас для фильтрации только [Контактов] из CC_TxParticipant я делаю так:
"lookupListConfig": { "filters": [ function() { ... var allParticipantsFilter = this.Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "[CC_TxParticipant:Participant:Id].CC", master.value); ... } ]
где master.value = идентификатор CreditCard, потом добавляю фильтр в общий фильтр и так далее, таким образом я получаю только тех контактов которые присутствуют в детали CC_TxParticipant именно этого CreditCard
-----------------
Попробую объяснить подробнее
Есть следующие объекты:
0.[CreditCard] - к нему относятся 2 детали:
1.[CC_TxParticipant] - связана с [CreditCard] через колонку CCId(идентификатор [CreditCard])
2.[CC_CollateralData] - связана с [CreditCard] через колонку CCId(идентификатор [CreditCard])
В объекте [CC_TxParticipant] есть справочное поле Контакт, и справочное поле с типом участника.
В объекте [CC_CollateralData] есть справочное поле Контакт которое требуется отфильтровать таким образом, чтобы появлялись только те контакты которые находятся в детали объекта [CC_TxParticipant], кроме тех у которых скажем Тип участника не равен *какой то айди*.
На данный момент у меня получилось только отфильтровать таким образом чтобы отображались только те контакты которые находятся в объекте [CC_TxParticipant] без учета их типа.
master.value в коде выше как раз является идентификатором [CreditCard]
Понимаю что объяснение получилось запутанное, поэтому заранее прошу прощения
Нравится
Добрый вечер.
Что бы отсеять контакты по типу нужно добавить фильтр где в качестве сравнения будет конфигурационная константа или id «типа контакта» (таблица ContactType). Например:
filterGroup.add("IsEmployeeType", Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "Contact.Type", ConfigurationConstants.ContactType.Employee));
При этом нужно не забыть указать зависимость на «ConfigurationConstants»:
define("ContactPageV2", ["ConfigurationConstants"], function(ConfigurationConstants) { …
Все типы констант вы можете посмотреть при отладке.
Или же можно сделать запрос используя id из таблицы ContactType:
filterGroup.add("IsEmployeeType", Terrasoft.createColumnFilterWithParameter( Terrasoft.ComparisonType.EQUAL, "Contact.Type",” 806732EE-F36B-1410-A883-16D83CAB0980”));
VladKapitanchyk,
Добрый день,
Спасибо за совет, к сожалению построение обычного фильтра не составляет проблемы, мой вопрос несколько сложнее
Сериков Асхат Кайратович пишет:
VladKapitanchyk,
мой вопрос несколько сложнее
Добрбый день! Если мы не правильно поняли, то просьба переформулировать запрос либо объяснить "на пальцах" . Мы ради будем помочь.
Вильшанский Дмитрий,
Добрый день,
прошу прощения за такой запутанный вопрос, переформулировал, надеюсь получилось
Добрый день.
Спасибо за совет, к сожалению построение обычного фильтра не составляет проблемы
Вам нужно составить фильтр из 2 условий. Т.е. добавить в фильтр группу 2 фильтра(фильтр контактов которые находятся в детали объекта [CC_TxParticipant], и фильтр контактов у которых Тип участника не равен *какой то айди*). На академии можно посмотреть. https://academy.terrasoft.ua/documents/technic-sdk/7-11/primenenie-filt…
VladKapitanchyk,
День добрый,
Разобрался, пытался перемудрить зачем то.
Спасибо большое