Так у вас же в k уже находится Id поля. Подставляйте его вместо fieldNum()
Кстати, правильнее было бы указать для k тип FieldId
PS Надо учитывать наличие массивов. И ошибка, скорее всего, связана с отсутствием .object() - надо проверять на NULL
X++:
DictTable dt = new DictTable(_forecastpurch.TableId);
int i;
FieldId id = 0;
FieldId extId;
DictField dictField;
;
id = dt.fieldNext(id);
while (id)
{
if (id != fieldNum(ForecastPurch, itemId))
{
dictField = dt.fieldObject(id);
for (i=1;i<=dictField.arraySize();i++)
{
extId = fieldid2ext(id, i);
if (ForecastPurch_DS.object(extId))
ForecastPurch_DS.object(extId).allowEdit(false);
}
}
id = dt.fieldNext(id);
}