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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.01.2014, 15:33   #1  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
Доброе время суток. Ситуация такая:
аксапта 3
имею переменную типа anytype , которая хранит 12700.00
имею переменную типа real.
если положить переменную 1 в 2 то получаю во 2 12.00
Помогите, пожалуйста, произвести преобразование. Облазил все интернеты, пречитал все мануалы по типам аксапты.
X++:
 ret.Qty1 = Fields.itemIdx(costsLineTbl.ColumnLoad - 1).Value();
                    temp = Fields.itemIdx(costsLineTbl.ColumnLoad - 1).Value();
                    //ret.Qty1 = str2num(Fields.itemIdx(costsLineTbl.ColumnLoad - 1).Value());
                    info(strfmt('C %1 %2 %3', Fields.itemIdx(costsLineTbl.ColumnLoadPaymDesk - 1).value(),num2str(ret.Qty1,3,3,3,3),temp));
Я думаю у тебя в anytype строка, удали пробел между 2 и 900.00 и все ок.

X++:
    anyType a = "2 900.00";
    real    b = a;
    ;
     info(strFmt("%1", typeof(a)));
     info(strFmt("%1", b));
    a = strrem(a,' ');
    b = a;
    info(strFmt("%1", b));
Изображения
 

Последний раз редактировалось maldini; 14.01.2014 в 16:00.
Старый 14.01.2014, 15:36   #2  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от maldini Посмотреть сообщение
Я думаю у тебя в anytype строка, удали пробел между 2 и 900.00 и все ок.
я проверял тип anytype с помощью typeOf(), вернул 1.
Старый 14.01.2014, 15:49   #3  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
я проверял тип anytype с помощью typeOf(), вернул 1.
При преобразовании в anyType в real DAX думает что пробел это конец записи. В job выше видно что и как происходит.

Последний раз редактировалось maldini; 14.01.2014 в 16:14.
Старый 14.01.2014, 16:21   #4  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от maldini Посмотреть сообщение
При преобразовании в anyType в real DAX думает что пробел это конец записи. В job выше видно что и как происходит.
нет. Нету там пробелов. Нету в excel и нету в переменной.
вот доказательство.
X++:
void  loadEx(anytype _date)
{   int i;
    str _str;
    str temp = "";
    ;
    _str = any2str(_date);
    info(_date);
    temp= "";
    for (i=1;i<strlen(_str);i++)
    {
        if (subStr(_str,i,1) != " ")
        {
            temp += subStr(_str,i,1);
        }
        else info ("delete  ' '");
    }
    info ("result "+ temp);
}
Старый 14.01.2014, 16:26   #5  
maldini is offline
maldini
Участник
 
103 / 30 (2) +++
Регистрация: 06.03.2007
Адрес: москва
Цитата:
Сообщение от АртемМелихов Посмотреть сообщение
нет. Нету там пробелов. Нету в excel и нету в переменной.
вот доказательство.
X++:
void  loadEx(anytype _date)
{   int i;
    str _str;
    str temp = "";
    ;
    _str = any2str(_date);
    info(_date);
    temp= "";
    for (i=1;i<strlen(_str);i++)
    {
        if (subStr(_str,i,1) != " ")
        {
            temp += subStr(_str,i,1);
        }
        else info ("delete  ' '");
    }
    info ("result "+ temp);
}
Возможно там какой то другой символ, но факт остается фактом. Мне кажется надо копать в этом направлении. Например сравнит длину строки с тем что на экране.
что в info если написать так
X++:
 info(strFmt("%1", typeof(_date)));
 info(strFmt("%1  длинна строки %2", _date,strLen(_date)));

Последний раз редактировалось maldini; 14.01.2014 в 16:38.
За это сообщение автора поблагодарили: АртемМелихов (1).
Старый 14.01.2014, 16:36   #6  
АртемМелихов is offline
АртемМелихов
Участник
Аватар для АртемМелихов
 
120 / 10 (1) +
Регистрация: 18.12.2013
Адрес: Samara
Цитата:
Сообщение от maldini Посмотреть сообщение
Возможно там какой то другой символ, но факт остается фактом. Мне кажется надо копать в этом направлении. Например сравнит длину строки с тем что на экране.
что в info если написать так
X++:
 info(strFmt("%1", typeof(_date)));
прошу прошения, там есть пробелы. Загнал в строку, смотрите код выше, и теперь проверил по Ascii кодам. Есть 160 код. Спасибо, Сейчас поробую убить его и снова перевести.
Теги
anytype, real

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX for Retail 2012 R2: Troubleshooting the Real-time Service Blog bot DAX Blogs 0 31.12.2012 11:13
emeadaxsupport: AX for Retail 2012 R2: Installing the Real-time Service Blog bot DAX Blogs 0 19.12.2012 11:11
Преобразование строк UTF-8 в ANSI в DAX 2009 (без файловых операций) Ar DAX: Программирование 0 21.08.2012 19:24
Несоответствие типов: ожидалось real, а получено int S.Kuskov DAX: Программирование 8 23.06.2011 13:03
daxsol: Axapta Kernel Functions Blog bot DAX Blogs 1 16.05.2009 19:22

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

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

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