25.07.2008, 01:05 | #1 |
китайский стажер
|
AIF, создаем Sales Order, не пишет CostPrice (DAX 4)
В момент создания Sales Order через AIF не пишется CostPrice.
Пытаемся найти ошибку. Есть класс axSalesLine, который по идее должен вызываться классовм axdSalesOrder, там есть ParamCostPrice, кто-то из них по идее должен писать CostPrice. Имеем 1) AIF в котором активирован action AxdSalesOrder; вызываем пакет и 2) видим что побывали здесь: Classes\AifGatewayReceiveService 3) дальше здесь: AifInboundProcessingService, где есть строчка многообещающая строчка runas(message.sourceEndpointAxUserId(), classnum(AifInboundProcessingService), staticmethodstr(AifInboundProcessingService, processAsUser), [message.pack(), messageId]); Однако, деббагер не заходит ни в axdSalesOrder ни в axSalesLine. Хотя судя по тому, что SalesTable и salesLine заполняются, эти классы все же вызываются и отрабатывают. Как проверить что случается с CostPrice в момент создания SalesLine. Или как это исправить? |
|
25.07.2008, 10:32 | #2 |
Участник
|
замените вызов от другого пользователя обычным вызовом для дебага.
то есть просто вызовите X++: AifInboundProcessingService.processAsUser([message.pack(), messageId]); |
|
|
За это сообщение автора поблагодарили: Qaz Qwerty (1). |
25.07.2008, 22:57 | #3 |
китайский стажер
|
Спасибо!
Хотя мне не хватило опыта понять что и как надо изменить, зато хватило настырности составить правильный поисковый запрос на основе Вашего совета и найти пост, который детально описывает что и как надо сделать, и который я привожу ниже в русском переводе: http://casperkamal.spaces.live.com/Blog/cns!9138ED475277CD63!175.entry Вместо того, чтобы запускать batch для AIF , можно написать job: Для Outbound X++: static void AifOutboundJob() { new AifOutboundProcessingService().run(); new AifGatewaySendService().run(); } X++: static void AifInboundJob() { new AifGatewayReceiveService().run(); new AifInboundProcessingService().run(); } Для того, чтобы работатьс с отладчиком, надо изменить код классов AifInboundProcessingService или AifOutboundProcessingService следующим образомЖ надо найти в методе run примерно 60-65 строчке следующий код: X++: runas(message.sourceEndpointAxUserId(), classnum(AifInboundProcessingService), staticmethodstr(AifInboundProcessingService, processAsUser), [message.pack(), messageId]); изменить метод того же класса «private static void processAsUser(container messageParams)» на public и затем вызвать этот метод из метода run: X++: AifInboundProcessingService::processAsUser([message.pack(), messageId]); X++: AifOutboundProcessingService::processAsUser([outboundProcessingQueue]); |
|
Теги |
ax4.0 |
|
|