Показать сообщение отдельно
Старый 16.04.2011, 02:19   #1  
Blog bot is offline
Blog bot
Участник
 
25,644 / 848 (80) +++++++
Регистрация: 28.10.2006
Dynamics AX Sustained Engineering: Issue with check numbers when exceeding the upper limit of a 32-bit integer
Источник: http://blogs.technet.com/b/dynamicsa...t-integer.aspx
==============

Problem:

When attempting to process a check which exceeds the upper limit of a 32-bit integer the following message is displayed: “The value is not within the range. Acceptable values are within the range 0 – 2147483647.”

Resolution:

To resolve this issue the following changes can be made.

1. Create a new 64-bit Extended Data Type to be used for checks
a. From the AOT navigate to \Data Dictionary\Extended Data Types
b. Right-click and select New -> Int64
i. Name = BankChequeStartNumInt64
ii. Label = @SYS23068
iii. HelpText = @SYS23068
iv. FormHelp = BankChequeLookup
v. DisplayLength = 10
vi. ConfigurationKey = BankCheque
c. Save the Extended Data Type.

2. Update NumberSeq Class to handle the new 64-bit integer
a. \Classes\NumberSeq\numInsertFormat
From:

X++:
public static client server Num numInsertFormat(Integer                num,
                                                NumberSequenceFormat   format
                                               )
{
    ;
    if (format == '')
        return int2str(num);

    if (!strfind(format, #SymbolLetters,1,999))
        return NumberSeq::numInsertFormatInternal(int2str(num), format);

    return NumberSeq::numInsertFormatLetters(num, format);
}
To:

X++:
public static client server Num numInsertFormat(Int64                num,
                                                NumberSequenceFormat   format
                                               )
{
    ;
    if (format == '')
        return int642str(num);

    if (!strfind(format, #SymbolLetters,1,999))
        return NumberSeq::numInsertFormatInternal(int642str(num), format);

    return NumberSeq::numInsertFormatLetters(num, format);
}
3. Update BankChequeCreate Class to handle the new 64-bit integer
a. \Classes\BankChequeCreate\dialog
From:

X++:
public Object dialog()
{
    DialogRunbase dialog = super();

    dialogFromNegInstNum = dialog.addFieldValue(typeid(BankChequeStartNum), fromNegInstNum, "@SYS4083");
    dialogFromNegInstNum.lookupButton(0);
    ...
To:

X++:
public Object dialog()
{
    DialogRunbase dialog = super();

    dialogFromNegInstNum = dialog.addFieldValue(typeid(BankChequeStartNumInt64), fromNegInstNum, "@SYS4083");
    dialogFromNegInstNum.lookupButton(0);
    ...
4. Update BankNegInstCreate Class to handle the new 64-bit integer

a. \Classes\BankNegInstCreate\classDeclaration

From:

X++:
abstract public class BankNegInstCreate extends RunBase
{
    BankAccountTable        bankAccountTable;
    NumberSequenceFormat    format;

    CompanyBankAccountId    accountID;
    BankNegInstStartNum     fromNegInstNum;
    BankNegInstQty          numOfNegInst;

    DialogField             dialogAccountId;
    DialogField             dialogFromNegInstNum;
    DialogField             dialogNumOfNegInst;

    #DEFINE.CurrentVersion(1)
    ...
To:

X++:
abstract public class BankNegInstCreate extends RunBase
{
    BankAccountTable        bankAccountTable;
    NumberSequenceFormat    format;

    CompanyBankAccountId    accountID;
    BankChequeStartNumInt64     fromNegInstNum;
    BankNegInstQty          numOfNegInst;

    DialogField             dialogAccountId;
    DialogField             dialogFromNegInstNum;
    DialogField             dialogNumOfNegInst;

    #DEFINE.CurrentVersion(2)
    ...
b. \Classes\BankNegInstCreate\parmFromNegInstNum

From:

X++:
public BankNegInstStartNum parmFromNegInstNum(BankNegInstStartNum _fromNegInstNum = fromNegInstNum)
{
To:

X++:
public BankChequeStartNumInt64 parmFromNegInstNum(BankChequeStartNumInt64 _fromNegInstNum = fromNegInstNum)
{
c. \Classes\BankNegInstCreate\run

From:

X++:
public void run()
{
    #OCCRetryCount
    BankNegInstStartNum toNegInstNum;
    BankNegInstNum      negInstNum;
    ;
To:

X++:
public void run()
{
    #OCCRetryCount
    BankChequeStartNumInt 64 toNegInstNum;
    BankNegInstNum      negInstNum;
    ;



Источник: http://blogs.technet.com/b/dynamicsa...t-integer.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.