02.12.2011, 17:32 | #1 |
Участник
|
Не разносится накладная
Доброго дня!
Прошу помощи. Есть ситуация: при разноске накладной для заказа на покупку, выдается ошибка Недостаточно складских проводок со статусом "Получено", хотя сам заказ находится в статусе "Получено". И если посмотреть на строке через запасы -> проводки, там будет проводка со статусом Получено на количество, которое разносится в накладной. Подскажите, в чем может быть проблема или куда копать? |
|
02.12.2011, 17:48 | #2 |
Ищущий знания...
|
Цитата:
Сообщение от kart
Доброго дня!
Прошу помощи. Есть ситуация: при разноске накладной для заказа на покупку, выдается ошибка Недостаточно складских проводок со статусом "Получено", хотя сам заказ находится в статусе "Получено". И если посмотреть на строке через запасы -> проводки, там будет проводка со статусом Получено на количество, которое разносится в накладной. Подскажите, в чем может быть проблема или куда копать? Скорее всего у Вас проблемы с этими складскими ссылками.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
02.12.2011, 17:58 | #3 |
Ищущий знания...
|
Ещё вопрос созрел, у вас разноска накладных по закупке стандартная или в ней делались какие либо мадификации?
P.S. и какая версия системы?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
02.12.2011, 18:03 | #4 |
Участник
|
2009 RU5. Модификаций не делалось. Поля "Складская ссылка" и "Инвентарный номер" пустые. Также они пустые в тех заказах, где накладная разносится без ошибок.
Что это может быть? Последний раз редактировалось kart; 02.12.2011 в 18:18. |
|
02.12.2011, 18:31 | #5 |
Ищущий знания...
|
Цитата:
З.Ы. вообще что бы не мучаться советую вам поставить точку останова в классе info, и отловить то место, где ругается. Потом проанализировать это место, и думаю все прояснится. Скорее всего не выполняются условия запроса по поиску проводки при разноске, а вот какие условия не выполняются нужно смотреть в отладчике.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
02.12.2011, 18:34 | #6 |
Участник
|
Разобрался. Нашел косяк в коде. Суть:
есть класс InventUpd_Financical, который обновляет накладную, есть метод financialReceiptQueryRun_W, который выдает запрос по проводкам в inventTrans в нем есть строка в которой отбираются совпадения по номеру отборочной накладной qbds.addRange(fieldnum(InventTrans, PackingSlipId)).value(packingSlipId ? packingSlipId : movement.packingSlipForUpdate_W()); и если в номере отборочной накладной пользователь указал символ "," (запятая), то запрос не отрабатывает и выдает ошибку. Лечится добавлением queryValue для обработки спец. символов. Спасибо за участие |
|
|
За это сообщение автора поблагодарили: Bega (4). |
02.12.2011, 18:42 | #7 |
Banned
|
Ооо! Классика! Самое интересное, что этот "восточноевропейский" метод в принципе невозможно написать правильно. В польской локализации там передаются накладные через запятую. Во всех остальных странах было бы верно поставить 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). |
|
|