Аксапта 3.0, SP4, приложение GMCS, СУБД - Oracle
Хочу, чтобы корректно работал нижеследующий джоб. Собственно до него мои представления об args.record позволяли это вполне законно ожидать.
X++:
static void Job243_1(Args _args)
{
PurchIdBase purchId = 'ПЗ0050395';
PurchTable purchTable = PurchTable::find(purchId);
PurchLine purchLine = PurchLine::find(purchId, 2);
Args args = new Args();
FormRun formRun;
;
args.name(formstr(PurchLine));
args.record(purchLine);
formRun = classFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
}
Не работает, вместо одной ожидаемой записи форма PurchLine открывается со всеми записями (все строки всех закупок) и с активной первой строкой.
С какого-то перепуга (?), ломая мои представления об args.record, работает другой джоб, отбирая только строки заданной закупки:
X++:
static void Job243_2(Args _args)
{
PurchIdBase purchId = 'ПЗ0050395';
PurchTable purchTable = PurchTable::find(purchId);
PurchLine purchLine = PurchLine::find(purchId, 2);
Args args = new Args();
FormRun formRun;
;
args.name(formstr(PurchLine));
args.record(purchTable); // ЗДЕСЬ ИЗМЕНИЛОСЬ
formRun = classFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
}
Законен ли такой эффект, когда датасорсу типа PurchLine через args.record передается "неродная" переменная типа PurchTable? Или это очередная недокументированная возможность?
Наконец, если во второй джоб добавить findRecord (он получается по небольшому кол-ву уже отобранных записей одной закупки, а потому вполне быстр), то курсор позиционируется на нужную запись:
X++:
static void Job243_3(Args _args)
{
PurchIdBase purchId = 'ПЗ0050395';
PurchTable purchTable = PurchTable::find(purchId);
PurchLine purchLine = PurchLine::find(purchId, 2);
Args args = new Args();
FormRun formRun;
;
args.name(formstr(PurchLine));
args.record(purchTable); // ЗДЕСЬ ИЗМЕНИЛОСЬ
formRun = classFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.dataSource(1).findRecord(purchLine); // ЗДЕСЬ ДОБАВИЛОСЬ
formRun.wait();
}

Но мне-то нужно, чтобы запись в гриде появлялась только одна, как если бы правильно отработал первый джоб.
Что думаете, коллеги? Всем откликнувшимся заранее большое спасибо.