AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.04.2011, 02:19   #1  
Blog bot is offline
Blog bot
Участник
 
25,643 / 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, напишите личное сообщение администратору.
Старый 16.04.2011, 10:10   #2  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
887 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Кстати, да , давно вопрос возникнуть должен был, и не только у пользователей и партеров - система уже с 4-ки понимает int64, а в NumberSequence до сих пор каменный век с 32-битным счетчиком.
__________________
Мы летаем, кружимся, нагоняем ужасы ...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
dynamics-ax-dev: Copying a Production Environment into a Development/Test Environment Blog bot DAX Blogs 0 02.12.2010 00:11
Dynamics AX Sustained Engineering: Microsoft Dynamics AX 4.0 and AX 2009 are compatible with Microsoft Windows 7 and Microsoft Windows Server 2008 R2 Blog bot DAX Blogs 0 22.09.2009 04:06
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:16.