30.07.2015, 11:43 | #1 |
Участник
|
Куда записывется значение
Доброго времени суток!
Нужна помощь с AX2012 В форме создания клиента (/Продажи и маркетинг/Обычный/Клиенты/Все клиенты -> Создать) есть поле "Тип записи" (Enum - DirPartyBaseType). Не могу выяснить куда (в какую таблицу\поле) записывается его значение. |
|
30.07.2015, 12:07 | #2 |
Гость
|
По сути в зависимости от этого типа данные пишутся в разные таблички.
Таким образом и используется данное значение К примеру: 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 |
Участник
|
Это я уже в принципе понял, но как оно потом понимает с какой таблички данные читать? где то же должен писаться признак...
|
|
30.07.2015, 12:23 | #4 |
Гость
|
Цитата:
Непосредственно писать признак отдельно как понимаю нет необходимости. Если посмотрите то у DirOrganization и DirPerson общий предок в виде DirPartyTable (иерархические таблицы и все такое) и с ней и работают. Если очень надо узнать с кем именно работают то смотрят поле InstanceRelationType где есть информация с какой именно табличкой работаем |
|
|
За это сообщение автора поблагодарили: syl (1). |
31.07.2015, 16:29 | #5 |
Участник
|
Речь идет о форме DirPartyQuickCreateForm и его объекте partyTypeComboBox.
В методе init() формы этот объект передается как параметр при создании нового объекта typeComboBox X++: // \Forms\DirPartyQuickCreateForm\Methods\init
typeComboBox = DirPartyFormHandler::updateTypeComboBox(element, formControlStr(Dirpartyquickcreateform, partyTypeComboBox)); 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; }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
Теги |
наследование таблиц |
|
|