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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.03.2003, 15:30   #1  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Подавлять завершающие нули
Столкнулся со следующей вещью - необходимо в отчетах по некоторым позициям выводить количество с точностью до 4 знаков после запятой.

Например так: 23,9424

Нашел расширенный тип данных и установил его свойство NoOfDecimals = 4

C другой стороны таких позиций не много. Поэтому при построении отчета по остальным позициям мы наблюдаем следующую картину:

23,0300
2,0000

Необходимо следующее:

* если есть 4 значащих знака после запятой -выводить 4.
* если их меньше, выводить меньше, подавляя завершающие нули.

Один способ решения я вижу - выводить данные в отчет не напрямую из таблицы, а через display метод, преобразуя в нем число в строку и вырезая необходимые цифры. Но в силу определенных причин этот способ мне не подходит.

Может кто-то может что-нибудь посоветовать.

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

Спасибо.
Старый 14.03.2003, 15:55   #2  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Аксапта не умеет распознавать количество Значащих знаков сама.
Сильно удивлюсь, если буду неправ.
Цитата:
Один способ решения я вижу - выводить данные в отчет не напрямую из таблицы, а через display метод, преобразуя в нем число в строку и вырезая необходимые цифры
А зачем в строку ? Перекрой executeSection и анализируй сколько знаков после запятой. Сколько знаков = столько и noOfDecimals контролу ставить надо. Вот тут код даже какой-то нашел, которым сам пользуюсь

PHP код:
static int noOfDecimals(real Numberint maxOfDec 3)
{
 
int i;
 ;
 for(
i=1;i<MaxOfDec+1;i++)
    if ((
number*power(10,maxOfDecmod power(10,i)) !=0)
     return 
maxOfDec+1-i;
return 
0;

__________________
С уважением, Вячеслав.
Старый 14.03.2003, 16:13   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Перекрой executeSection и анализируй сколько знаков после запятой.
Понимаешь, edt относится к глобальным типам данных - поменяв его NoOfDecimals я получаю такую фигню во всей системе - во всей куче форм и отчетов. Получается, что мне придется перекрывать executeSection() во всех формах и отчетах.
Старый 14.03.2003, 16:52   #4  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Цитата:
Изначально опубликовано Андре


Понимаешь, edt относится к глобальным типам данных - поменяв его NoOfDecimals я получаю такую фигню во всей системе - во всей куче форм и отчетов. Получается, что мне придется перекрывать executeSection() во всех формах и отчетах.
Понял. Знаю Я и имел ввиду конкретный отчет
А в остальном
Цитата:
Изначально опубликовано slava

Аксапта не умеет распознавать количество Значащих знаков сама.
Сильно удивлюсь, если буду неправ.
__________________
С уважением, Вячеслав.
Старый 14.03.2003, 17:12   #5  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Понял.

Спасибо за функцию.
Старый 14.03.2003, 17:19   #6  
Pavel is offline
Pavel
SAP
SAP
 
2,760 / 239 (13) ++++++
Регистрация: 14.12.2001
Адрес: Moscow
Re: Подавлять завершающие нули
Цитата:
Изначально опубликовано Андре
Столкнулся со следующей вещью - необходимо в отчетах по некоторым позициям выводить количество с точностью до 4 знаков после запятой.
Увидев тему чисто для интереса решил проверить настройку десятичных. По сравнению с XAL полная Ж....
- нельзя настраивать через пользовательскую настройку экрана в свойствах поля
- нельзя задать через AOT в дизайне отчета в свойствах поля
- нельзя управлять через пользовательскую конфигурацию (параметр количество десятичных для отображения)

Скажите как это делается? Только Глазов знает?
 


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

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

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