![]() |
#2 |
Участник
|
Цитата:
и не уверен, что для акс7 DictTable и DictField - правильные способы. я знаю два способа: 1. через перекрестные ссылки (могут содержать не актуальную и не полную информацию. зато запрос прямой как палка) 2. через DictTable, DictField вот кусок кода для акс7 из моего пока приватного проекта по созданию ER-диаграм и dgml-диаграм. этот кусок почти без изменений подойдет для любой версии. X++: SysDictTable dt = new SysDictTable(TableId); ... //------ relations SetEnumerator dre = dt.relations().getEnumerator(); while (dre.moveNext()) { SysDictRelation dr = dre.current(); var member = dr.externTableName(); container ThisKey = conNull(); container OtherKey = conNull(); for(int l=1; l<=dr.lines(); l++) { try { var ThisKeyId = dr.lineTableValue(l); var ThisKeyField = new SysDictField(dt.id(), ThisKeyId); var ThisKeyName = ThisKeyField ? ThisKeyField.name() : strFmt("%1", ThisKeyId); ThisKey += ThisKeyName; Var OtherKeyId = dr.lineExternTableValue(l); var OtherKeyField = new SysDictField(dr.externTable(), OtherKeyId); var OtherKeyName = OtherKeyField ? OtherKeyField.name() : strFmt("%1", OtherKeyId); OtherKey += OtherKeyName; } catch { exceptionTextFallThrough(); } } if( ThisKey && OtherKey ) { this.appendNewXML(xmlType, 'Association', [ ['Name', dr.name()], ['Member' , member], ['ThisKey', con2Str(ThisKey, ',')], ['OtherKey', con2Str(OtherKey, ',')], ['IsForeignKey', 'true'], ['Type', member]]); } Последний раз редактировалось mazzy; 30.08.2017 в 20:04. |
|
|
За это сообщение автора поблагодарили: Vadik (1), Logger (3), macklakov (3), kashperuk (2), axotnik88 (1). |
Теги |
dicttable, reflection, relation |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|