06.04.2018, 18:38 | #1 |
Участник
|
Подменить lookup для DirPartyRecId referenceControl
Есть форма, основанная на временной таблице.
Среди ее полей есть DirPartyRecId, DirPartyNumber. На форме с помощю Reference group вместо DirPartyRecId пользователю показывается DirPartyName. Нужно изменить стандартный лукап,выпадающий на DirPartyRecId. В новом лукапе должны показываться только записи DirOrganization, а колонками должны быть 1) CountryRegionId из первичного адреса(то есть, в запросе для лукапа нужен join c LogisticsPostalAddress по доп условию на DirPartyLocation, IsPrimary = true) 2) OrgNumber(из DirOrganization) 3) Name (из DirParty). Пользователь должен иметь фозможность фильтровать по колонкам лукапа Я сделала View с нужным запросом и его использую с sysTableLookup. Но не могу понять, как это "привинтить" к referenceControl формы. Я переопределила lу контрола на форме методookup() и там вызываю свой лукап. Но, вижу, через дебаггер, что в методе sysTableLookup -> performFormLookup() вариант referenceControl принципе не рассматривается.....поэтому лукап не создается Нашла еще пример в DirUtility-> namelookup(), но там используется не sysTableLookup, а по сути создается новый FormRun... Можно ли в принципе как-то решить задачу через sysTableLookup ? (Сontrol для DirPartyName это по сути же FormStringControl, поэтому я лелею надежду), или это возможно только через новую Form в AOT? Может, еще есть варианты? Замечание: Такой же лукап мне нужно будет использовать в другой функциональности, где на форме диалога пользователь выбирает запись из DirParty и по ней запускается обработка. Там сейчас поле диалога основано на DirPartyRecId и автосоздается аксаптой стандартный лукап. Мне нужно заменить его на такой же , как описан выше. То есть, с CountryRegionId, OrgNumber, Name Спасибо Последний раз редактировалось kitty; 06.04.2018 в 18:42. |
|
06.04.2018, 22:10 | #2 |
Участник
|
Для reference group надо перекрывать lookupReference метод и использовать SysReferenceTableLookup класс, перекрестные ссылки по которому дадут вам примеры.
|
|
|
За это сообщение автора поблагодарили: kitty (1). |
09.04.2018, 17:09 | #3 |
Участник
|
Спасибо
У меня сейчас есть referenceGroup control. На нем- resolveReference и lookupReference. Лукап основан на View (назвается MyViewName , состоит из нескольких таблиц). Открывается этот лукап , что я создаю в lookupReference , корректно. Но вот привыборе любой записи в нем выдеается ошибка. "Found MyViewName record instead of an expected DirPartyTable record. Check to see if an override of the resolveReference method is returning a record from the correct table." Дебаггер в resolveReference видно, что даже не заходит. Если методв на соотвествующем поле DS разместить. то такая же ошибка .. Смотрю примеры в стандарте -все сделано также, за тем исключением, что не вижу примеров с View в lookupReference. Везде испоьзутся та же таблица, что и ожидается в referenceGroup Почему lookupReference может не находиться ? AX2012 R3 UPD: Кажется, поняла. Нужно создать в моем случае наследника от SysReferenceTableLookup и создавать для него Controller c resolveReference () Последний раз редактировалось kitty; 09.04.2018 в 17:45. |
|
09.04.2018, 19:30 | #4 |
Участник
|
Не помогло (
Видимо, с помощью View нельзя решить задачу. Сделала в итоге через отдельную lookup форму. View ушло в топку Последний раз редактировалось kitty; 09.04.2018 в 20:11. |
|
|
|