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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.07.2010, 13:54   #1  
Silphidae is offline
Silphidae
Участник
 
96 / 15 (1) ++
Регистрация: 17.11.2008
Как уже писалось выше, есть подозрение, что это из-за специфического типа данных, который Вы пихаете в контейнер.

Например, на таблицах VendTrans или CustTrans есть поля AmountMST - у меня в запросе типа:
X++:
while select vendtrans where vendtrans.AccountNum == "2545"
{
    info(strfmt("%1", vendtrans.AmountMST));
}
в инфолог выводятся три типа значений - без знака, с плюсом и с минусом.

Так что проблема кроется в типе EDT, вернее, в его свойствах SignDisplay
Старый 22.07.2010, 15:58   #2  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от Silphidae Посмотреть сообщение
в инфолог выводятся три типа значений - без знака, с плюсом и с минусом.
Так что проблема кроется в типе EDT, вернее, в его свойствах SignDisplay
Да, выводятся 3 типа значений. Но что интересно. поле vendtrans.AmountMST имеет расширенный тип AmountMSTDebCred, которое имеет свойство SignDisplay=None ! Вот это совсем непонятно, откуда тогда берутся плюсы и минусы, по логике как раз не должно было быть вообще никаких знаков !
Старый 26.07.2010, 12:11   #3  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Возможно, где-то использовалась функция corrFlagSet(real real, int arg)

Вот джоб для наглядности:
X++:
static void signProblem(Args _args)
{
    AmountMstDebCred   amount;
    container          value;
    ;

    amount = 5;
    value  = conpoke(value, 1, amount);
    info(strFmt("Type: %1, Value: %2", typeOf(conpeek(value, 1)),
                                       conpeek(value, 1)));
    
    amount = corrFlagSet(amount, 1);
    
    value  = conpoke(value, 2, amount);
    info(strFmt("Type: %1, Value: %2", typeOf(conpeek(value, 2)),
                                       conpeek(value, 2)));
                                       
    info(strFmt("Type: %1, Value: %2", typeOf(conpeek(value, 2)),
                                       abs(conpeek(value, 2))));
                                       
}
Результат:
Type: Real, Value: 5,00
Type: Real, Value: +5,00
Type: Real, Value: 5,00

Последний раз редактировалось pedrozzz; 26.07.2010 в 12:18. Причина: добавил результаты джоба
Теги
преобразование типов

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX Sustained Engineering: Sale Order Batch Invoicing reprints invoices from prior runs, when “Print” is set to ‘After’ on AR >> Periodic >> Sales Update >> Invoice form Blog bot DAX Blogs 0 24.03.2010 02:06
Особенности поведения str Eldar9x DAX: Программирование 9 21.05.2009 14:45
daxsol: Axapta Kernel Functions Blog bot DAX Blogs 1 16.05.2009 19:22
C# and AX Development: Truncated real fields (ex. LineNum) when table is exported as XML Blog bot DAX Blogs 0 07.02.2009 11:05
real -> RealBase Eldar9x DAX: Программирование 2 21.11.2007 18:15
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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