Показать сообщение отдельно
Старый 08.02.2011, 12:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,491 / 846 (79) +++++++
Регистрация: 28.10.2006
axforum blogs: Формат адресов. AddressMap_RU
Источник: http://axforum.info/forums/blog.php?b=225
==============

В локализованной Dynamics Ax 2009 можно видеть разность отображения полей в зависимости от страны.
Для стран настраивается формат адреса(Основное -> Настройка -> Формат адреса) и тип адреса (Основное -> Настройка -> Страна/регион).

К примеру на форме Банк:


Если есть потребность при создании новой формы вывести вкладку с Адресами, то приведу список объектов для модификации:
  1. В Вашей таблице создаем поля для адреса. Список полей и их форматов можно скопировать с
    • \Data Dictionary\Maps\AddressMap\Fields
    • \Data Dictionary\Maps\AddressMap_RU\Fields
    Сопоставим свою таблицу с полями в Map(ах) в Mappings.
  2. В методе \Classes\FormRunListener_Address_RU\addressInfo
    добавим код:
    X++:
    case formstr(NewMyForm) : return [[#AddressGroup, tablenum(AddressMap)]];
    #AddressGroup стандартный макрос (\Macros\Address_RU), типичных названий групп для списка полей адресов.

    NewMyForm - ваша форма. Где есть группа \Forms\NewMyForm\Designs\Design\[Tab:Tab]\[TabPage:Address]\[Group:AddressGroup] с выставленными свойствами DataGroup = Address, AutoDataGroup = Yes.

    В вашей таблице есть группы полей:
    • \Data Dictionary\Tables\NewMyTable\Field Groups\Address (список полей на примере Maps\AddressMap)
    • \Data Dictionary\Tables\NewMyTable\Field Groups\Address_RU (список полей на примере Maps\AddressMap_RU )
  3. В таблице NewMyTable создаем методы
    • \Data Dictionary\Tables\NewMyTable\Methods\modifiedField
      X++:
      public void modifiedField(fieldId _fieldId){ ; super(_fieldId); this.AddressMap::modifiedField(_fieldId); }
    • \Data Dictionary\Tables\NewMyTable\Methods\validateField
      X++:
      public boolean validateField(fieldId fieldId){ boolean ret; ; if(!this.AddressMap::validatePostalCode(fieldId)) { return false; } ret = super(fieldId); /* if (ret) { switch (fieldId) { case (fieldnum(NewMyTable, INN)): ret = CompanyInfo::checkInn_RU(this.INN); break; } } */ return ret;}
При запуске формы ваши поля адреса сопоставятся с полями МАР(ов), что в результате позволит использовать стандартные методы lookup*, modified*, make* и т.д.

На ваше форме смена значения в поле Страна/регион динамически изменит поля адреса.


Источник: http://axforum.info/forums/blog.php?b=225
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.