Вызов дочерней формы программно с параметром / фильтром

Я создаю настройку, при которой по нажатию кнопки мне нужно выделить плату для определенного журнала заказов на покупку / счет-фактуру.

С внешнего интерфейса я бы выполнил это, следуя жизненному циклу заказа на покупку и выставляя счет. Затем я бы зашел на вкладку накладной заказа на поставку, щелкнув Журналы накладных -> Расходы -> Корректировка. Это откроет желаемую форму, в которой я выберу код оплаты, сумму оплаты, валюту и категорию, а затем я нажму "ОК" и система позаботится об остальной части процесса.

Имя формы: 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();
Другие вопросы по тегам