12.01.2010, 14:28 | #1 |
Moderator
|
args.record - как заставить работать в форме PurchLine?
Аксапта 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(); } С какого-то перепуга (?), ломая мои представления об 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(); } Наконец, если во второй джоб добавить 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(); } Но мне-то нужно, чтобы запись в гриде появлялась только одна, как если бы правильно отработал первый джоб. Что думаете, коллеги? Всем откликнувшимся заранее большое спасибо. |
|
Теги |
args, dynalink, formdatasource, formrun |
|
|