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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.07.2010, 15:41   #21  
-xXx- is offline
-xXx-
Участник
 
4 / 10 (1) +
Регистрация: 23.09.2009
Цитата:
Сообщение от _AxDevel_ Посмотреть сообщение
am = conpeek(value, conIterator);
s = strfmt("%1",am);
получаю со знаком плюса

am = 1.0*conpeek(value, conIterator);
s = strfmt("%1",am);
без знака плюса

где am - real
s - str
conIterator = 2

а значение контейнера value какие?
Старый 21.07.2010, 16:01   #22  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
Цитата:
Сообщение от -xXx- Посмотреть сообщение
а значение контейнера value какие?
con2str(value) = "тестирование,386920.98,0,636"
Старый 21.07.2010, 16:55   #23  
-xXx- is offline
-xXx-
Участник
 
4 / 10 (1) +
Регистрация: 23.09.2009
Цитата:
Сообщение от _AxDevel_ Посмотреть сообщение
con2str(value) = "тестирование,386920.98,0,636"
Ни в 3-ке, ни в 4-ке не удалось повторить ваш глюк...
Старый 22.07.2010, 13:54   #24  
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   #25  
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   #26  
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. Причина: добавил результаты джоба
Старый 12.08.2010, 12:08   #27  
titov is offline
titov
Участник
 
73 / 87 (3) ++++
Регистрация: 23.12.2005
Адрес: Казань
попробуйте СОЗДАВАТЬ контейнер не так

con += realCurr; (или так con = con + realCurr) - глючит

а так

con = conins (con, conlen(con) + 1, realCurr); - корректный код

возможно здесь имеет место быть глюк Аксапты для контейнеров . Глючит на больших массивах, не сразу и поймаешь, может очередной элемент превратить в контейнер, стринг или вообще в непонятное - у меня просто вылетало, а здесь strFmt не дает ошибку...

ловил отладчиком так -
если есть знак плюс - получить индекс массива - и смотрим что в этом элементе контейнера в отладчике - иногда где-нибудь 1000 элемент ищем. К сожалению нет джоба дающего 100% выход на такое.
Теги
преобразование типов

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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:33.