Показать сообщение отдельно
Старый 25.05.2007, 15:53   #1  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Лукап, отображающий список полей определённой таблицы
Изучая метод pickField() наткнулся на метод findFields() таблицы TmpSysTableField.
Есть там такой вот участок
X++:
                    field       = new SysDictField(dictTable.id(), dictTable.fieldCnt2Id(i), j);

                    if ((field.flags()      &  #DBF_VISIBLE) &&
                        (field.flags()      &  #DBF_STORE) &&
                        (field.baseType()   != Types::CONTAINER) &&
                        (field.name()       != fieldStr(Common, dataAreaId)) &&
                        (field.name()       != fieldStr(Common, sequenceNum)) &&
                        (field.name()       != fieldStr(Common, tableId)) &&
                        (field.baseType()   != Types::VARSTRING))
                    {
                        elements++;
                        pack = conIns(pack, elements, [dictTable.fieldCnt2Id(i),
                                                       field.extendedFieldId(),
                                                       field.name(),
                                                       field.label(),
                                                       field.help(j),
                                                       field.extendedTypeId(),
                                                       field.baseType()]);
                    }
Ну вот почему в случае поля с типом Dimension метод field.name() возвращает просто "Dimension", причём несколько (кол-во аналитик) раз ? Вроде как ожидается что-то типа "Dimension[1]", "Dimension[2]" и т.д. Конечно можно легко заменить field.name() методом fieldid2name() или ещё как-то, чтобы добиться требуемого результата, но почему изначально-то правильно не работает ...
Вобщем вот, высказался
P.S. Проверено в 3.0 SP5 и 4.0 SP1
__________________
Дмитрий