Не знаю, корректно это или нет, но у меня сработало вот так
X++:
PurchIdBase purchId = 'ПЗ0050395';
PurchTable purchTable = PurchTable::find(purchId);
PurchLine purchLine = PurchLine::find(purchId, 3);
Args args = new Args();
FormRun formRun;
FormDataSource fds; // добавил
;
args.name(formstr(PurchLine));
//args.record(purchLine); // закомментил
formRun = classFactory.formRunClass(args);
formRun.init();
//-------- добавил -----
fds = formRun.dataSource();
fds.query().dataSourceTable(tablenum(PurchLine)).addDynalink(fieldNum(PurchLine,PurchId),purchLine,fieldNum(PurchLine,PurchId));
fds.query().dataSourceTable(tablenum(PurchLine)).addDynalink(fieldNum(PurchLine,LineNum),purchLine,fieldNum(PurchLine,LineNum));
//------------------------
formRun.run();
formRun.wait();