В вашем варианте не корректно будут выводиться поля-массивы (например набор фин. аналитик), более правильно будет так:
X++:
static void testFields(Args _args)
{
InventTable inventTable;
DictTable dt;
SysDictField df;
SysDictField dfExt;
Counter idx;
Counter arrayIdx;
;
select firstonly inventTable;
dt = new DictTable(tablenum(InventTable));
for (idx = 1; idx <= dt.fieldCnt(); idx++)
{
df = new SysDictField(dt.id(), dt.fieldCnt2Id(idx));
if (df.isSql())
{
for (arrayIdx = 1; arrayIdx <= df.arraySize(); arrayIdx++)
{
dfExt = new SysDictField(dt.id(), df.id(), arrayIdx);
info(strFmt("%1: %2", dfExt.label(), inventTable.(dfExt.id())));
}
}
}
}
Насчет передачи таблицы из грида, если используете для кнопки MenuItem смотрите его свойство DataSource и класс Args, на что-то подобное уже отвечал
тут