Found solution. It was hard for me to find out:
Object formRun;
Args args = new Args();
PurchFormLetter purchFormLetter;
purchTable purchTable;
VendReceiptsListTrans ListTrans;
PurchParmLine purchParmLine;
PurchParmTable purchParmTable;
;
select purchTable where purchTable.PurchId == this.PurchId;
purchFormLetter = PurchFormLetter::construct(DocumentStatus::PackingSlip);
purchFormLetter.parmSourceTable(purchTable);
purchFormLetter.initLinesQuery();
purchformletter.createParmUpdate();
purchformletter.chooseLines();
while select OrigpurchId from ListTrans
group by ListTrans.OrigPurchId
where ListTrans.ReceiptsListId == this.ReceiptsListId && ListTrans.OrigPurchId != this.PurchId
{
select purchTable where purchTable.PurchId == ListTrans.OrigPurchId;
purchformletter.updateQueryAndChooseLines(purchTable);
}
ttsbegin;
while select forupdate purchParmLine
where purchParmLine.ParmId == purchformletter.parmId()
{
select firstonly ListTrans where ListTrans.ReceiptsListId == this.ReceiptsListId && ListTrans.OrigPurchId == purchParmLine.OrigPurchId &&
ListTrans.ItemId == purchParmLine.ItemId;
if (ListTrans.RecId == 0)
purchParmLine.delete();
}
update_recordset purchParmTable setting num = this.ETGpackingSlipId where purchParmTable.ParmId == purchformletter.parmId();
ttscommit;
purchformletter.reArrange(true);
args.name(formstr(PurchEditLines));
args.caller(purchformletter);
formRun = ClassFactory.formRunClass(args);
formRun.init();
formRun.ETGfromVendReceiptJour(this.RecId);
formRun.run();
formRun.wait();