Ну не знаю...
Одно из решений: допиливание классов DialogField и Dialog
Идея: при добавлении поля в диалоге указывать индекс поля (то бишь аналитику)
В классе Dialog метод addField()
X++:
DialogField addField(
int type,
FieldLabel label = '',
FieldHelp help = '',
ArrayIdx idx = 0 //modified for ArrayFields
)
{
DialogField DialogField;
fields += 1;
DialogField = new DialogField(this,type,fields);
this.addCtrlDialogField(dialogField.name());
// dialogField.init(this); //standard
dialogField.init(this, idx);//modified for ArrayFields
if (label)
dialogField.label(label);
if (help)
dialogField.helpText(help);
this.addDialogClass(dialogField);
return dialogField;
}
В классе DialogField метод init()
X++:
//void init(Dialog dialog)//standard
void init(Dialog dialog, ArrayIdx idx=0)//Modified for ArrayFields
{
....
//Added for ArrayFields -->
if((idx)&&(idx<=arraysize))
{
f = idx;
arraysize = idx;
}
//Added for ArrayFields <--
while (f <= arraysize)
{
....
}
Ну и сам вызов теперь
X++:
d.addField(TypeId(Dimension), '', '', 1);