![]() |
#36 |
Участник
|
эксперимент
Здравствуйте.
Решил возобновить тему, чтобы еще раз попытаться разобраться с FieldUpdate = Relative С помощью таких действий X++: static void Job_1(Args _args) { Ltable t_1; Ltable t_2; Ltable t_3;; // point_0 ttsbegin; {// block_1 select forupdate t_1 where t_1.id == 5; {// block_2 select forupdate t_2 where t_2.id == 5; { // block_3 select forupdate t_3 where t_3.id == 5; t_3.Val = 14; t_3.update(); } t_2.Val = 700; t_2.update(); } t_1.Val = 50000; t_1.update(); } ttscommit; } Код: W = V + (-V + U_1) + (-V + U_2) + ... + (-V + U_n), В частности, в самых интересных для практики случаях, которые обсуждались выше, получаем 1. i = 1 : W = U_1 (отличия от FieldUpdate = Absolute не видны). 2. i = 2 : после первого запуска джоба имеем W = U_1 + U_2 - V после второго запуска джоба имеем W = V (любители арифметики могут убедиться, что при других i подобных циклов нет). ---------------------- Надеюсь, кто-нибудь сможет пояснить, для чего заложена именно такая формула для Relative update, поскольку из предыдущего обсуждения мне показалось, что люди ожидали работы по формуле W = V + U_1 + U_2 + ... + U_n. В качестве офтопа еще хочу спросить, почему не возникает deadlock при выполнении block_2 после block_1.
__________________
Axapta 3.0 SP 4 Последний раз редактировалось bodeaux; 03.07.2013 в 14:53. |
|
Теги |
ledgerbalance, ledgerbalancesdimtrans, ledgerbalancestrans, главная книга, итоги, сальдо, crm2011 |
|
|