![]() |
#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; }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
Теги |
наследование таблиц |
|
|