26.01.2021, 22:33 | #1 |
Участник
|
AX2012 R3 modal form - "unbalanced TTS" при нажатии CTRL+V, TAB или правом клике мышью
AX2012 R3. Клиент хочет добавить логику при ручном создании sales order confirmation: в самом конце процесса проверяются некоторые данные, и всплывает модальная форма с вариантами развития событийб где пользователь должен определить что делать дальше.
Форма вызывается так: X++: args = new Args(); args.name(formstr(xxxRecoverDialog)); args.record(log); formRun = classFactory::formRunClassOnClient(Args); formRun.init(); formRun.run(); formRun.wait(); X++: public void run() { super(); this.wait(true); } Датасорс формы read-only. Никакой логики на active, write и т.д. TTS есть только в методах которые вызываются кнопками, и при дебагге они не вызываются - т.к. на кнопки мы не нажимаем. Единственный TTS begin который присутствует в момент когда форма вызывается, это внешний TTS от sales order confirmation. Если честно, вообще не понимаю что происходит ((( |
|
27.01.2021, 00:08 | #2 |
Боец
|
во первых - зачем в методе run() снова делать wait(true), почему бы сразу не в месте вызова?
Ну а во вторых - кто ж форму в транзакции открывает? Это ещё хуже, чем признаться что дворец его ... см. SalesFormLetter и место, где глобальная транщакция закрывается, там и вызывать. По-моему, там даже метод-пу тышка где-то есть нс такой случай. |
|
27.01.2021, 01:58 | #3 |
Участник
|
Так вот в том и дело, что транзакцию надо отменить если пользователь так решил - поэтому запускать после окончания транзакции не вариант.
|
|
27.01.2021, 07:48 | #4 |
Участник
|
Цитата:
Так вот в том и дело, что транзакцию надо отменить если пользователь так решил - поэтому запускать после окончания транзакции не вариант.
Не знаю можно ли это обойти, просто не возникало желания что-то спрашивать у пользователя во время выполнения транзакций.
|
|
|
|