Проверок побольше сделайте.
Такие комбинации не всегда проходят:
X++:
dictField = new DictField;
Вам не кажется, что в методе не хватает информативности?
Что-то в этом роде:
X++:
if (!_table.validateField(x))
{
sysinfo = new SysInfoAction_TableField(_table, x);
if( dictField.arraySize() > 1)
info(strfmt("Field %1.%2[%3] with RecId = %4 not valid", dict.tableName(_table.TableId), dictField.name(), dictField.arraySize(), _table.RecId), "", sysinfo);
else
info(strfmt("Field %1.%2 with RecId = %3 not valid", dict.tableName(_table.TableId), dictField.name(), _table.RecId), "", sysinfo);
ret = false;
}