Показать сообщение отдельно
Старый 29.10.2019, 09:57   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,652 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Поднял старую тему, поскольку также вызывает недоумение фрагмент этого кода в dax2012, который тянется с младших версий

X++:
           else
            if (tmpInventTransMark.QtyMarkNow != 0) // update new marking
            {
                qtyRemain = -tmpInventTransMark.QtyMarkNow;
                loop      = 0;

                while (loop < 4)   // почему здесь значение 4, а не 3 ?
                {
                    // Select transactions are to be marked
                    inventTransThis = TmpInventTransMark::inventTransMark(_inventTransId,
                                                                          _inventDimCriteria,
                                                                          _qty,
                                                                          tmpInventTransMark,
                                                                          loop);
Это собственно маркирование и поиск проводок для этого самого маркирования

loop = 0 - Не маркированные проводки с тем же значением InventDimId
loop = 1 - Не маркированные проводки, но по значениям аналитик
loop = 2 - Проводки по значениям аналитик, маркированные с другой проводкой
loop = 3 - Проводки по значениям аналитик. Без контроля маркирования

Вот loop = 3 и вызывает вопросы. По сути, этот шаг цикла просто еще раз отберет те же самые проводки, которые были отобраны на предыдущих шагах.

В результате, если изначально ошиблись с подсчетом количества для маркирования или другой пользователь внес изменения в проводки, то вот этот самый шаг с loop = 3 может привести к разнообразным глюкам маркирования

Я не очень понимаю, это специально было сделано? Может, в младших версиях был в этом какой-то смысл?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...