Automated Testing in business central (BC 16)

Faran123Faran123 Member Posts: 11
edited 2020-09-29 in NAV Three Tier
Hi Community, I am doing automated testing in Business central and while testing one of my functions is using following code:

CreatesubscriptionInvoices.RunModal();
CreatesubscriptionInvoices variable is of type Report.

to run processing only report along with a request page but as soon code hits that line test case becomes failed and following error appears;


"The following C/AL functions are limited during write transactions because one or more tables will be locked. Form.RunModal is not allowed in write transactions. Codeunit.Run is allowed in write transactions only if the return value is not used."
Anyone knows what its means and how to solve it ?
thanks

Answers

  • Wisa123Wisa123 Member Posts: 308
    That error had a useful phrase after is in previous versions
    Use the COMMIT function to save the changes before this call, or structure the code differently.

    What it means is that you cannot call a RunModal or Codeunit.Run during an active Write-Transaction.
    So either you make sure that you don't have any Insert() or Modify() before your RunModal() call in that transaction, or make sure to commit those changes via Commit().

    Usually if you run into this error you've made some bad design decisions while constructing your code. UI Elements should be shown before actual processing is done. If you can't/don't want/are not able to restructure your code properly try committing any open transactions before calling RunModal()
    Commit();
    CreatesubscriptionInvoices.RunModal();
    
    Austrian NAV/BC Dev
Sign In or Register to comment.