AXForum  
Вернуться   AXForum > Блоги > Заметки по Dynamics Ax от Poleax
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

Оценить эту запись

Формат адресов. AddressMap_RU

Запись от Poleax размещена 08.02.2011 в 11:35

В локализованной 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* и т.д.

На ваше форме смена значения в поле Страна/регион динамически изменит поля адреса.
Размещено в Без категории
Просмотров 10365 Комментарии 0
Всего комментариев 0

Комментарии

 


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:04.