Показать сообщение отдельно
Старый 10.04.2019, 12:12   #374  
abv2703 is offline
abv2703
Участник
 
92 / 22 (1) +++
Регистрация: 05.12.2003
Адрес: Санкт-Петербург, улица Бухарестсткая
Цитата:
Сообщение от fed Посмотреть сообщение
В последнем DAX2009RU8 наткнулся на замечательный кусочек кода в reqTrans.findCommon():
X++:
            if (reqTrans.RefType == ReqRefType::TransferDemand)
            {
                select firstonly reqTrans
                    index hint RefIdx
                    where reqTrans.ReqPlanId     == reqTrans.ReqPlanId                &&
                          reqTrans.RefType       == ReqRefType::TransferPlannedOrder  &&
                          reqTrans.RefId         == reqTrans.RefId;
            }
Конечно можно понять, что автор просто хотел найти приходную половинку спланированного заказа на перенос. Но учитывая что условия reqTrans.refId==reqTrans.refiId и reqTrans.reqPlanId==reqTrans.reqPlanId выполняются автоматически, на самом деле, он нашел первую попавшуюся чистую потребность типа "Спланированный заказ на перенос" в первом попавшемся плане. В результате - посмотреть развертывание заказа на перенос из формы "Профиль потребностей", приводит к развертыванию первого попавшегося заказа на перенос.
Можно починить примерно вот так:
X++:
                reqTransCaller=reqTrans;
                select firstonly reqTrans
                    index hint RefIdx
                    where reqTrans.ReqPlanId     == reqTransCaller.ReqPlanId                &&
                          reqTrans.RefType       == ReqRefType::TransferPlannedOrder  &&
                          reqTrans.RefId         == reqTransCaller.RefId;


Хе, я эту фигню нашел сегодня в 4-ке