Поднял старую тему, поскольку также вызывает недоумение фрагмент этого кода в 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 может привести к разнообразным глюкам маркирования
Я не очень понимаю, это специально было сделано? Может, в младших версиях был в этом какой-то смысл?