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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.07.2015, 11:43   #1  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Куда записывется значение
Доброго времени суток!

Нужна помощь с AX2012

В форме создания клиента (/Продажи и маркетинг/Обычный/Клиенты/Все клиенты -> Создать) есть поле "Тип записи" (Enum - DirPartyBaseType).
Не могу выяснить куда (в какую таблицу\поле) записывается его значение.
Старый 30.07.2015, 12:07   #2  
axm2013
Гость
 
n/a
По сути в зависимости от этого типа данные пишутся в разные таблички.
Таким образом и используется данное значение

К примеру:

X++:
switch (partyType)
    {
        case DirPartyType::Organization:
            return tableId2name(tableNum(DirOrganization));
        case DirPartyType::Person:
            return tableId2name(tableNum(DirPerson));
        default:
            throw error(Error::wrongUseOfFunction(funcName()));
    }
Старый 30.07.2015, 12:18   #3  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Это я уже в принципе понял, но как оно потом понимает с какой таблички данные читать? где то же должен писаться признак...
Старый 30.07.2015, 12:23   #4  
axm2013
Гость
 
n/a
Цитата:
Сообщение от syl Посмотреть сообщение
Это я уже в принципе понял, но как оно потом понимает с какой таблички данные читать? где то же должен писаться признак...
Зачем?
Непосредственно писать признак отдельно как понимаю нет необходимости.

Если посмотрите то у DirOrganization и DirPerson общий предок в виде DirPartyTable (иерархические таблицы и все такое) и с ней и работают.

Если очень надо узнать с кем именно работают то смотрят поле InstanceRelationType где есть информация с какой именно табличкой работаем
За это сообщение автора поблагодарили: syl (1).
Старый 31.07.2015, 16:29   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Речь идет о форме DirPartyQuickCreateForm и его объекте partyTypeComboBox.

В методе init() формы этот объект передается как параметр при создании нового объекта typeComboBox

X++:
// \Forms\DirPartyQuickCreateForm\Methods\init
typeComboBox = DirPartyFormHandler::updateTypeComboBox(element, formControlStr(Dirpartyquickcreateform, partyTypeComboBox));
Далее, смотрим, что объект typeComboBox выбирает свое значение в событии active() источника данных формы DirPartyEntity

X++:
// \Forms\DirPartyQuickCreateForm\Data Sources\DirPartyEntity\Methods\active
typeComboBox.select(dirPartyTable.baseType());

Смотрим определение метода dirPartyTable.baseType()

X++:
//\Data Dictionary\Tables\DirPartyTable\Methods\baseType

//BP deviation documented
[SysClientCacheDataMethodAttribute(true)]
display DirPartyBaseType baseType()
{
    DirPartyBaseType baseType;

    switch (this.getInstanceRelationType())
    {
        case tableStr(DirPerson) :
        baseType = DirPartyBaseType::Person;
        break;

        default :
        baseType = DirPartyBaseType::Organization;
        break;
    }

    return baseType;
}

Т.е. текущее значение зависит от выбранного источника данных. Поскольку речь идет this.getInstanceRelationType(), то это пронаследованные таблицы от головной таблицы DirPartyTable

Собственно, если посмотреть, а что происходит при изменении выбранного значения, т.е. в методе modified, то видно, что происходит изменение источника данных

X++:
//\Forms\DirPartyQuickCreateForm\Designs\Design\[Group:DialogContent]\[Group:PartyHeaderGroup]\ComboBox:partyTypeComboBox\Methods\modified

public boolean modified()
{
    boolean ret;

    ret = super();
    // if the party type has been modified then clear and recreate the buffer through
    // the formhandler class
    if (ret && typeComboBox.selection() != lastPartyType)
    {
        dirpartytable_ds.delete();                          // удаляем текущую запись
        partyForm.parmPartyType(typeComboBox.selection());  // изменяем источник данных
        partyForm.create();                                 // создаем запись в новом источнике данных
        lastPartyType = typeComboBox.selection();
    }

    return ret;
}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Теги
наследование таблиц

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Значение поля "Открытое значение" и сопоставление складских проводок Dimitry DAX: Функционал 0 23.07.2013 17:23
значение из realControl DmitryK DAX: Программирование 8 21.02.2012 14:43
Ошибка XML в "Таблица" Причина: Ошибочное значение Poleax DAX: Программирование 7 08.10.2009 16:45
Куда идёт запись при разноске журналов зарплат?! 3oppo DAX: Программирование 5 28.07.2005 12:09
Как при вводе новой записи установить значение поля по умолчанию Zman DAX: Программирование 3 17.01.2005 10:23

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

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