0

Я создал подписку обработчика событий на approveVariance метод в VendInvoiceInfoTable.Подписка на обработчик событий по утверждениюVariance

Вот код обработчика:

public static void postApprovingPendingInvoice(XppPrePostArgs _args) 
{ 
    VendInvoiceInfoTable vendInvoiceInfoTable; 

    vendInvoiceInfoTable = _args.getThis(); 

    info(vendInvoiceInfoTable.PurchId + " from handler"); 
} 

Все бога и хорошо, если я проверить и снимите флажок сам. Я говорю о флажке, найденном на VendInvoiceMatchingDetails образует с метким:

Approve posting with matching discrepancies. 

Проблема возникает, когда что approveVariance вызывается из партии. Обработчик больше не достигнут.

Правильное ли поведение? Есть ли какой-либо действительный подход к этому?

Я думаю, что могу создать статический метод в классе util и называть его каждый раз, когда вызывается approveVariance и отправляет конкретный parmeter. Я просто старался следовать лучшим практикам.

+2

Вы должны построить КСС – Matej

+1

Правда, он работал. Поэтому мне нужно построить CIL, чтобы иметь последнюю версию .dll, на которую ссылается этот пакетный процесс. Я добавлял подписку на события, но была доступна только более старая .dll. Это правильно? –

+0

@Matej, пожалуйста, напишите свой комментарий в качестве ответа, поэтому я могу принять его в качестве действительного решения для моего вопроса. –

ответ

1

Как сказал Матей, вам необходимо создать CIL (инкрементированный или полный), как пакетный запуск на CIL (Common Intermediate Language).

Когда вы пишете код, он изначально компилируется в P-код, который интерпретируется средой исполнения AX. Когда вы строите CIL, он интерпретирует/компилирует этот p-код в CIL.

Когда вы говорите «старую .dll», это больше похоже на старые *.xpp файлы, скорее всего, находится в c:\Program Files\Microsoft Dynamics AX\60\Server\[aos]\bin\XppIL\source

Here's a great article on the CIL

Смежные вопросы