|
22.03.2007, 07:38 | #1 |
Участник
|
Проверка наличия поля в DictTable
Ребята, помогите, с проверкой.
Какими методами можно проверить существование поля в DictTable? exist недоступен, а перебирать каждое поле для сравнения с шаблоном имхо не рационально. Axapta 3.0 Build SP 2/OP023-19 Oracle |
|
22.03.2007, 08:42 | #2 |
сибиряк
|
Насколько помню dictTable.fieldName2Id("Bla-bla") возвращает 0, если поля нет в таблице
__________________
С уважением, Вячеслав. |
|
22.03.2007, 08:44 | #3 |
MCT
|
Перебор есть в методе SysApplCheck.checkFieldDefaultReport()
По моему отсюда и выход если есть fieldId, то и перебирать не нужно |
|
22.03.2007, 08:57 | #4 |
Участник
|
А каким образом вы идентифицируете поле?
Если по имени - то как предложил slava Если по Id'у, то так X++: if (new DictField(dictTable.id(), fieldId)) X++: DictTable dictTable = new DictTable(tableNum(LedgerTable)); FieldId fieldId; ; if (dictTable) { fieldId = dictTable.fieldName2Id("Dimension[4]"); if (fieldId && new DictField(dictTable.id(), fieldId)) { // поле существует } }
__________________
Axapta v.3.0 sp5 kr2 Последний раз редактировалось AndyD; 22.03.2007 в 09:00. |
|
22.03.2007, 08:59 | #5 |
MCT
|
Или так
X++: static void Job2(Args _args) { void PrintExistCustField() { int i, n, k; CustTable c; DictTable dt; dt=new DictTable(c.TableId); n=dt.fieldCnt(); print "Number of fields in table: ", n; for(i=1; i<=n; i++) { k=dt.fieldCnt2Id(i); print "The ", dt.fieldName(k), " field exist with Id=",k ; pause; } } PrintExistCustField(); } |
|
Теги |
ax3.0 |
|
|