После применения RU6 федеральная форма NF-e будет пустой

Применяется к
Microsoft Dynamics AX 2009

Проблема

После применения накопительного пакета 6 (KB2405516) федеральная форма NF-e будет пустой. Вы не сможете проверить состояние, связанное с ранее размещенными федеральными счетами NF-e, и невозможно узнать, какие меры следует предпринять.

Причина

В классе RelaseUpdateDB60_Cust имеется дефект кода, updateReferencesInEFDocument_BR метод. 

Этот метод обновляет EFDocument_BR таблицы, чтобы он всегда ссылались на FiscalDocJour_BR таблицу. В предыдущих версиях EFDocument_BR использовались для хранения ссылок на счет, который был создан бразильским финансовым документом, например CustInvoiceJour и VendInvoiceJour. Теперь пара полей RefTableId и RefRecId всегда будет ссылаться на таблицу бразильских финансовых документов: FiscalDocJour_BR.

При выполнении этого метода в среде с накопительным пакетом 5, из которой были созданы новые NF-e, эти NF-e (которые уже были в порядке) теряют свои связи с FiscalDocJour_BR, что приводит к пустой форме. Этот метод должен выполняться только для ссылок NF-e на CustInvoiceJour и VendInvoiceJour. 

Решение

Мы настоятельно рекомендуем выполнить полное резервное копирование базы данных AX перед выполнением действий, описанных в этой статье базы знаний.

1. Когда следует применить исправление
После применения пакета RU6 запустите клиент AX и отобразится "Контрольный список обновления". Перед запуском "Presynchronize" необходимо применить это исправление.

2. Откройте AOT и вставьте следующую инструкцию WHERE в класс RelaseUpdateDB60_Cust, updateReferencesInEFDocument_BR метод.

До:
    при выборе параметра forupdate eFDocument
    {
        fiscalDocJour = FiscalDocJour_BR::findRefRecId(eFDocument.RefTableId, eFDocument.RefRecId);
        eFDocument.RefTableId = fiscalDocJour.TableId;
        eFDocument.RefRecId = fiscalDocJour.RecId;

        eFDocument.doUpdate();
    }

После:
    при выборе параметра forupdate eFDocument
        where eFDocument.RefTableId != tablenum(FiscalDocJour_BR)
    {
        fiscalDocJour = FiscalDocJour_BR::findRefRecId(eFDocument.RefTableId, eFDocument.RefRecId);
        eFDocument.RefTableId = fiscalDocJour.TableId;
        eFDocument.RefRecId = fiscalDocJour.RecId;

        eFDocument.doUpdate();
    }