Показать сообщение отдельно
Старый 02.12.2011, 18:42   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Ооо! Классика! Самое интересное, что этот "восточноевропейский" метод в принципе невозможно написать правильно. В польской локализации там передаются накладные через запятую. Во всех остальных странах было бы верно поставить queryValue(). К несчастью, у меня в клиентах - концерн с двумя польскими, датской и русскими фабриками. Приходится делать проверки на CompanyInfo::features_W()

Там есть еще прелесть: если packingSlipId пришел пустой, то идет поиск строки InventTrans c ПУСТОЙ (!) накладной. Представляю переписанный тремя поколениями разработчиков пассаж, который, вроде, работает при всех условиях:
X++:
    ...
    packSlipId = packingSlipId ? packingSlipId : movement.packingSlipForUpdate_W();
    if( packSlipId )
    {
        packSlipId = strRTrim(strLTrim(packSlipId));
        if( strScan(packSlipId,",",1,strlen(packSlipId)) && CompanyInfo::features_W() == CRSEFeatures_W::PL)
            packSlipId = packSlipId;
        else
            packSlipId = queryValue(packSlipId);
        qbds.addRange(fieldnum(InventTrans, PackingSlipId)).value(packSlipId);
    }
    ...

Последний раз редактировалось EVGL; 02.12.2011 в 18:58.
За это сообщение автора поблагодарили: Pustik (3), Logger (5).