Изучая метод 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