26.05.2009, 11:56 | #1 |
Участник
|
Всем добрый день!
Столкнулись со следующей ошибкой "Дата некорректна" при попытке применить операции клиента: авансовый платеж и счет предоплат. Даты операций совпадают. Дебагер ругается на Normaledate в функции InsertGLEntry. Счет предоплат учтен в валюте, авансовый платеж в рублях. Может кто сталкивался с данной проблемой и решил, просим помочь MS Dynamics NAV 5.0 SP1 FP2. |
|
26.05.2009, 12:23 | #2 |
Участник
|
а курс валюты есть на эту дату???
|
|
26.05.2009, 13:06 | #3 |
Участник
|
Ошибка "Дата некорректна" из-за пустого аргумента для NORMALDATE(). Смотрите, почему ему скармливают пустую Дату Учета.
|
|
26.05.2009, 16:06 | #4 |
Участник
|
Проблему решили:
После обновления Codeunit 12 в функции CustUnrealizedVAT механизм сохранения данных: GenJnlLine := SavedGenJnlLine; ... SavedGenJnlLine := GenJnlLine; был немного испорчен, а конкретней строку "GenJnlLine := SavedGenJnlLine;" убрали внутрь оператора IF THEN. Поэтому, если при вычислениях условие=FALSE, то сохранения записи GenJnlLine не происходит, а строка "SavedGenJnlLine := GenJnlLine;" выполняется вне зависимости от условия. В результате SavedGenJnlLine присваивается пустое значение и как результат "Posting Date" = 0D. Это и вызывает ошибку при проверке NORMALDATE. Стоит заметить, что в версии до обновления этой ошибки не было. |
|
26.05.2009, 16:13 | #5 |
Участник
|
|
|
26.05.2009, 16:32 | #6 |
Участник
|
Цитата:
Сообщение от loneta
Проблему решили:
После обновления Codeunit 12 в функции CustUnrealizedVAT механизм сохранения данных: GenJnlLine := SavedGenJnlLine; ... SavedGenJnlLine := GenJnlLine; был немного испорчен, а конкретней строку "GenJnlLine := SavedGenJnlLine;" убрали внутрь оператора IF THEN. Поэтому, если при вычислениях условие=FALSE, то сохранения записи GenJnlLine не происходит, а строка "SavedGenJnlLine := GenJnlLine;" выполняется вне зависимости от условия. В результате SavedGenJnlLine присваивается пустое значение и как результат "Posting Date" = 0D. Это и вызывает ошибку при проверке NORMALDATE. Стоит заметить, что в версии до обновления этой ошибки не было. |
|
26.05.2009, 16:54 | #7 |
Участник
|
|
|
27.05.2009, 15:14 | #8 |
Участник
|
|
|
27.05.2009, 16:02 | #9 |
Moderator
|
Интересно, а как и где это применение Вы делаете.
У меня ошибки не повторяется, а хотелось бы понять откуда она возникает.... |
|
27.05.2009, 17:03 | #10 |
Участник
|
Цитата:
Вопрос в том, что строка GenJnlLine := SavedGenJnlLine несколько раз есть и шут его знает сходу что "исправлять". |
|
28.05.2009, 09:23 | #11 |
Участник
|
Цитата:
IF NOT AmtDiffDocToPrepayment THEN IF GLSetup."Unrealized VAT" OR (GLSetup."Prepayment Unrealized VAT" AND NewCustLedgEntry.Prepayment) THEN BEGIN TransferCustLedgEntry(NewCVLedgEntryBuf,NewCustLedgEntry,FALSE); IF GenJnlLine."Prepayment Status" <> GenJnlLine."Prepayment Status"::Set THEN CheckUnrealizedCust := TRUE; IF NewCustLedgEntry."Prepayment Document No." <> NewCustLedgEntry."Document No." THEN BEGIN GenJnlLine."Document Type" := GenJnlLine."Document Type"::Invoice; GenJnlLine."Document No." := NewCustLedgEntry."Prepayment Document No."; END; UnrealizedCustLedgEntry := NewCustLedgEntry; UnrealizedRemainingAmountCust := NewCustLedgEntry."Remaining Amount" - NewRemainingAmtBeforeAppln; END; GenJnlLine := SavedGenJnlLine; END; уберите галочку GLSetup."Unrealized VAT" или GLSetup."Prepayment Unrealized VAT" то GenJnlLine := SavedGenJnlLine; не произойдет. Вы получите регулярную ошику! Строчку GenJnlLine := SavedGenJnlLine; надо перенести за END; "я так думаю!" (Мимино) |
|
28.05.2009, 11:00 | #12 |
Участник
|
Да уж... Опять Prepayment.. Неужели несколько подразделений одной компании не могу договориться и слить функционал этот воедино.. Я даже готов поделиться доками по Prepayment для россиян..
А то всем известно, что Prepayment стандарный совсем НЕ дружит с Prepayment российским... P.S. Как обычно опять начинается... Народ, извините! Опять начинается, хотя понимаю, что никому там это не нужно. Ну просто накипело... |
|