Раскрывающийся список Dynamics AX 2012 — страна

Я добавляю «Страну происхождения» в InventTable. Я создал новое поле, расширяющее LogisticsAddressCountryRegionId. Я добавил поле в InventTable, а затем добавил поле в группу полей. Все работает так, как ожидалось. В форме есть раскрывающийся список, в котором отображается код (например, «США») и описание (например, «США»), когда раскрывающийся список открыт. Когда раскрывающийся список закрыт, он показывает «США». Вместо этого мы хотели бы, чтобы отображалось описание. Это возможно? Есть рекомендации как это сделать?

Спасибо! Тони


person Anthony Brasch    schedule 29.07.2014    source источник
comment
Пожалуйста, опубликуйте свой код.   -  person Andrew Arnold    schedule 29.07.2014
comment
Там действительно нет никакого кода для публикации. Пока это все настройки. Я могу отправить вам xpo, если хотите?   -  person Anthony Brasch    schedule 29.07.2014
comment
На самом деле - я нашел способ сделать это. Я создал поле той же длины, что и ShortName, которое равно 255. Затем я просто переопределил метод поиска в поле.   -  person Anthony Brasch    schedule 29.07.2014


Ответы (1)


A) Если описание (в вашем сценарии "США") было полем, а не полем отображения в LogisticsAddressCountryRegion, то правильный способ сделать это будет следующим:

  1. создайте новое отношение в InventTable, задайте для его свойства Table значение LogisticsAddressCountryRegion.
  2. щелкните правой кнопкой мыши новое отношение, выберите «Создать» > «Внешний ключ» > «Одно поле на основе альтернативного ключа».
  3. он автоматически создаст новое поле LogisticsAddressCountryRegion типа RefRecId (не LogisticsAddressCountryRegionId, как в вашем примере!). Затем вы можете вручную изменить его свойство ExtendedDataType с RefRecId на LogisticsAddressCountryRegionRecId.
  4. теперь, если вы вручную перетащите это поле из источника данных вашей формы в сетку или группу в вашей форме, будет создан элемент управления ReferenceGroup
  5. по умолчанию этот элемент управления будет отображать CountryRegionId ("US") из LogisticsAddressCountryRegion (так же, как это работает для вас сейчас). Вам это не нужно - вы хотите, чтобы Description отображался. В этом случае значение свойства ReplacementFieldGroup ReferenceGroup необходимо изменить с AutoIdentification на Description (предположительно, это имя группы в таблице LogisticsAddressCountryRegion, содержащей поле Description).
  6. Вуаля - описание ("США") отображается в этой форме, и поиск по-прежнему можно использовать, как и раньше.

B) Однако в вашем конкретном случае этот подход не может быть использован, потому что в таблице LogisticsAddressCountryRegion нет поля Description - есть метод отображения displayName, который извлекает описание из другой таблицы (LogisticsAddressCountryRegionTranslation).

В этом случае можно было бы использовать несколько более грубый подход: создать метод редактирования в InventTable, он должен использовать расширенный тип данных LogisticsAddressCountryRegionShortName. Закодируйте его так, чтобы он а) обновлял поле «Страна происхождения» в InventTable на основе введенного значения и б) отображал LogisticsAddressCountryRegion.displayName() на основе значения поля «Страна происхождения». Если вам нужна помощь в кодировании этого метода, я могу посоветовать. Затем перетащите этот метод редактирования, чтобы создать в форме элемент управления StringEdit. Вот и все. Обратите внимание, что вы не сможете использовать значение этого элемента управления для сортировки и фильтрации в своей форме.

C) Не беспокойтесь об этом выше. Используйте 2 элемента управления: один для выбора страны происхождения (будет отображаться «США»), а другой — для отображения описания («США»). Все, что вам нужно изменить в своем текущем решении, — это добавить новый элемент управления на основе метода отображения — как только вы выберете страну происхождения, метод отображения покажет ее описание. Я рекомендую вам использовать этот подход.

Примечание: "Вообще-то я нашел способ сделать это. Я создал поле такой же длины, что и "ShortName", которое равно 255. Затем я просто переопределил метод поиска. на поле." - нет нет нет, это очень плохая идея, не делайте этого. Между InventTable и LogisticsAddressCountryRegion должно быть отношение ForeignKey (ссылка либо на CountryRegionId, либо на RecId).

person 10p    schedule 04.08.2014
comment
Спасибо! Очень признателен! - person Anthony Brasch; 06.08.2014