Вызов дочерней формы программно с параметром / фильтром
Я создаю настройку, при которой по нажатию кнопки мне нужно выделить плату для определенного журнала заказов на покупку / счет-фактуру.
С внешнего интерфейса я бы выполнил это, следуя жизненному циклу заказа на покупку и выставляя счет. Затем я бы зашел на вкладку накладной заказа на поставку, щелкнув Журналы накладных -> Расходы -> Корректировка. Это откроет желаемую форму, в которой я выберу код оплаты, сумму оплаты, валюту и категорию, а затем я нажму "ОК" и система позаботится об остальной части процесса.
Имя формы: MarkupAllocation_VendInvoiceTrans
Родительская форма Имя: VendInvoiceJournal
Вы можете видеть, что дочерняя форма вызывается с несколькими параметрами, такими как номер счета, очевидно, что эта ссылка должна быть. Если я захожу в AOT под формами, я щелкаю правой кнопкой мыши и открываю VendInvoiceJournal, но я не смогу открыть MarkupAllocation_VendInvoiceTrans, потому что для этого требуются параметры.
Задача:
A: Чтобы открыть MarkupAllocation_VendInvoiceTrans через код, где я вручную передаю эти параметры для ссылки на родительскую таблицу. Я бы предоставил номер счета и тому подобное. Цель состоит в том, чтобы пропустить открытие родительской таблицы и вручную перейти к настройкам. Я хочу открыть эту форму напрямую и связать ее с той записью, которую я укажу.
B: Мне нужно иметь возможность передать параметр _ChargesValue и предварительно заполнить его для меня. Я не знаю, возможно ли это, поэтому я хотел спросить и поговорить. В идеале я должен иметь возможность нажимать кнопку в моей пользовательской форме и иметь форму MarkupAllocation_VendInvoiceTrans, открытую непосредственно для указанного счета, с предварительно заполненными значениями в строке.
Я знаю, что должен решать эту проблему по одному шагу за раз, поэтому шаг А является приоритетом номер один.
Я могу открыть родительскую форму сравнительно легко, но я не могу сделать то же самое для дочерней формы. Очевидно, что тот же подход не сработает, так как мне нужно указать отношения родительской таблицы, прежде чем я ее открою.
private void allocateMarkup()
{
Object formRun;
Args args = new Args();
VendInvoiceJour jourTable;
;
select * from jourTable where jourTable.PurchId == 'PO000001191';
args.name(formstr(VendInvoiceJournal));
args.record(jourTable);
formRun = ClassFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
}
Как я смогу это сделать?
(Примечание: я понимаю, что вызова всей этой формы можно было бы избежать, если бы все транзакции выполнялись программно, а не позволяли функциональности "из коробки" обрабатывать ее, но логика разметки и выделения является ее собственным чудовищем, и мне она кажется намного более сложной чем делать это. Если кто-то сделал это таким образом, любая помощь по этому вопросу также будет принята с благодарностью)
1 ответ
Если я правильно прочитал ваш пост, вы просто хотите открыть Расходы> Корректировка для определенного счета. Вот один простой метод:
MarkupAdjustment markupAdjustment = new MarkupAdjustment();
markupAdjustment.vendInvoiceJour(VendInvoiceJour::findFromPurchId('PO 120079'));
markupAdjustment.run();