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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.06.2010, 10:20   #1  
driller is offline
driller
Сам.AX
Аватар для driller
Самостоятельные клиенты AX
SAP
 
78 / 54 (2) ++++
Регистрация: 11.04.2007
Адрес: Санк-Петербург
Ошибка в функции str2num при обработке данных в экспоненциальном формате (плавающей запятой, научной нотацией).
Добрый день.

DAX 4.0 - Kernel version: 4.0.2503.516, Application version: 4.0.2501.347

Столкнулся с этой ошибкой при заливке остатков из 1С из файла excel, при обработке чисел с плавающей запятой малой величины, функция возвращает некорректный результат.
После анализа стало видно что ошибка возникает, когда в обрабатываемых данных из excel не стоит разделитель.

Вот демонстрация ошибки:
X++:
static void errorStr2num(Args _args)
{
    Qty qty1, qty2, qty3;
    ;
    qty1    = str2num('1e-3');
    qty2    = str2num('5.6e-2');
    qty3    = str2num('1.e-3');

    info(strFmt('%1 %2', num2str(qty1,0,3,2,0), 'Ошибка ожидаем 0,001'));
    info(strFmt('%1 %2', num2str(qty2,0,3,2,0), 'Без ошибки'));
    info(strFmt('%1 %2', num2str(qty3,0,3,2,0), 'Без ошибки'));
}
Название: 4-ка.jpg
Просмотров: 525

Размер: 34.8 Кб

Причём в 3-ке MBS Axapta 3.0 Build #1951.7609/514-320 SP4/OP032-196 всё работало корректно.

Название: 3-ка.jpg
Просмотров: 533

Размер: 34.7 Кб


Как вариант обхода ошибки можно использовать функцию any2real, или в обрабатываемом файле заменить разделитель с запятой на точку, это приводит к тому что данные из excel (пробовал на 2007-ом) подтягиваются не в экспоненциальном формате.

Подскажите исправлен ли баг в последующих версиях, если нет как зарегистрировать эту ошибку в microsoft?
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам."
Поль Валери

Последний раз редактировалось driller; 28.06.2010 в 10:22.
За это сообщение автора поблагодарили: kashperuk (5).
Старый 28.06.2010, 11:27   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Цитата:
1,000 Ошибка ожидаем 0,001
0,056 Без ошибки
0,001 Без ошибки
DAX 2009 EE SP1 Hotfix Rollup 3 (RU1) (5.0.1500.1313)
Старый 28.06.2010, 11:58   #3  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от driller Посмотреть сообщение
Как вариант обхода ошибки можно использовать функцию any2real, или в обрабатываемом файле заменить разделитель с запятой на точку, это приводит к тому что данные из excel (пробовал на 2007-ом) подтягиваются не в экспоненциальном формате.
\Classes\Global\str2num_RU

\Classes\Global\num2expstr

Перед импортом '1e-3' можно же спокойно преобразовать в '1.e-3', тем более понимание есть.

P.S. DAX 2009 EE SP1 Hotfix Rollup 4 (5.0.1500.2116)
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 28.06.2010, 12:34   #4  
Bober is offline
Bober
Участник
 
311 / 104 (4) +++++
Регистрация: 29.05.2007
А вот еще интересно, что и '.1-3', и '.1e-3' преобразуются в ноль.
Старый 28.06.2010, 13:09   #5  
driller is offline
driller
Сам.AX
Аватар для driller
Самостоятельные клиенты AX
SAP
 
78 / 54 (2) ++++
Регистрация: 11.04.2007
Адрес: Санк-Петербург
Цитата:
Сообщение от oip Посмотреть сообщение
DAX 2009 EE SP1 Hotfix Rollup 3 (RU1) (5.0.1500.1313)
Спасибо. Значит сломали, давно но ещё не заметили. Нужно оформлять баг-репор не подскажете как? Просто ещё не сталкивался с этим...
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам."
Поль Валери
Старый 28.06.2010, 13:20   #6  
driller is offline
driller
Сам.AX
Аватар для driller
Самостоятельные клиенты AX
SAP
 
78 / 54 (2) ++++
Регистрация: 11.04.2007
Адрес: Санк-Петербург
Цитата:
Сообщение от Poleax Посмотреть сообщение
\Classes\Global\str2num_RU

\Classes\Global\num2expstr

Перед импортом '1e-3' можно же спокойно преобразовать в '1.e-3', тем более понимание есть.

P.S. DAX 2009 EE SP1 Hotfix Rollup 4 (5.0.1500.2116)
str2num_RU в 4-ке нету, и видимо предложенный вами вариант работает только вместе с ним потому как num2expstr на входе ждет "real r".Не спорю вариантов обхода может быть масса, когда уже знаешь где споткнулся. Просто не приятно когда натыкаешься на такие системные баги, представь при импорте несколько тысяч строк с такое ошибок попалось меньше двух десятков и только после довольно длительного времени.
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам."
Поль Валери
Старый 29.06.2010, 06:54   #7  
driller is offline
driller
Сам.AX
Аватар для driller
Самостоятельные клиенты AX
SAP
 
78 / 54 (2) ++++
Регистрация: 11.04.2007
Адрес: Санк-Петербург
Цитата:
Сообщение от Bober Посмотреть сообщение
А вот еще интересно, что и '.1-3', и '.1e-3' преобразуются в ноль.
Опять же в отладчике видно что вариант с '.1e-3', 3-ка обрабатывает нормально, а '.1-3' передавать наверное не корректно, думаю присутствие "E" (exponent) является обязательным.
__________________
"Считать метафору доказательством, поток праздных слов источником истины, а себя оракулом - это заблуждение, свойственное всем нам."
Поль Валери
Старый 01.07.2010, 15:56   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Создал баг в системе для АХ6.
Спасибо за сообщение об ошибке
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка в Данных компании DAX2009 Kuibida DAX: Программирование 8 24.07.2018 10:05
Ошибка при доступе к подключению к базе данных Ark DAX: Администрирование 11 01.06.2009 08:17
Ошибка в формате числа. 36AC DAX: Программирование 7 19.10.2006 10:04
Ошибка при обработке С-Ф Sergo DAX: Программирование 7 20.01.2006 11:56
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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