У меня есть кнопка на VendOpenTrans и реализован ее метод clicked.Маркировка VendTransOpen с CustVendOpenTransManager
Я думал, что это будет работать, но я получаю исключение и AX закрывается ..
void clicked()
{
LedgerJournalTrans ledgerJournalTrans;
VendTransOpen vto;
super();
switch (originator.TableId)
{
case tableNum(LedgerJournalTrans):
ledgerJournalTrans = element.args().record();
}
for (vto = vendTransOpen_ds.getFirst(0); vto; vto = vendTransOpen_ds.getNext())
{
//vendTransOpen_ds.markRecord(vto, 1);
if (vto.RecId)
{
if (manager.getTransMarked(vto) == NoYes::No)
{
select Invoice from vendTrans
where vto.AccountNum == vendTrans.AccountNum &&
vto.RefRecId == vendTrans.RecId;
if (ledgerJournalTrans.Invoice == vendTrans.Invoice)
{
// Mark transaction for settlement
showError = NoYes::No;
manager.updateTransMarked(vto, NoYes::Yes);
showError = NoYes::Yes;
}
}
}
// Update dynamic controls & refresh form as auto-redraw is not triggered
element.updateDesignDynamic();
element.redraw();
}
vendTransOpen_ds.refreshEx(-2);
}
Если я закомментируйте следующие строки она будет работать, в основном, помечая все строки в сетке.
//select Invoice from vendTrans
//where vto.AccountNum == vendTrans.AccountNum &&
//vto.RefRecId == vendTrans.RecId;
//if (ledgerJournalTrans.Invoice == vendTrans.Invoice)
//{
// Mark transaction for settlement
showError = NoYes::No;
manager.updateTransMarked(vto, NoYes::Yes);
showError = NoYes::Yes;
//}
Таким образом, чтобы быть более ясным, что остается это: manager.updateTransMarked (VTO, Нойес :: Да);
и этот способ, он работает. Насколько я вижу, что-то происходит, когда я добавляю этот выбор.
Использование отладки я был в состоянии проверить это, и я думаю, что исключение выбрасывается для цикла ..
Есть ли шанс, чтобы получить подсказку по этому поводу?
Он работал именно так, как вы сказали. Большое спасибо, но вы можете немного объяснить цикл for? –
'?' И ':' предназначены для тройной операции (см. Https://msdn.microsoft.com/en-us/library/aa552755.aspx?f=255&MSPPError=-2147217396). Поэтому, если 'getFirst()' не возвращает значение, он использует курсор. –