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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.05.2026, 16:08   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,734 / 1220 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Операция присваивания или сравнения вызывает потерю точности.
dax2012

При работе с числовыми значениями, при записи в поле типа Integer, Axapta может предупредить

Цитата:
Операция присваивания или сравнения вызывает потерю точности.

Понятно, что тут следует использовать разные функции конвертации типов вроде any2int(). Но что делать, если такое сообщение возникает при работе с групповыми командами вроде insert_recordset и update_recordset?

Ну, например, в шапке документа есть поле для хранения количества строк. Тип Integer. Для подсчета строк использую count(RecId), но RecId - это int64. Получаю предупреждение о возможной потере точности

условный код примерно такой

Код:
insert_recordset MyTab (NumOfLines)
select count(RecId) from MyLine where (...)

Как для таких команд подавить предупреждение Best Practices о потере точности?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 09.06.2026, 22:28   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
4,020 / 3312 (119) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
dax2012
Как для таких команд подавить предупреждение Best Practices о потере точности?
Не сталкивался с таким.

Может быть сделать count(RECVERSION) и его значение вставить. Там тип как раз int32
Но я не пробовал.

X++:
insert_recordset MyTab (NumOfLines)
select count(recVersion) from MyLine where (...)

Последний раз редактировалось Logger; 09.06.2026 в 22:33.
За это сообщение автора поблагодарили: Владимир Максимов (5).
Старый 10.06.2026, 01:01   #3  
Товарищ ♂uatr is offline
Товарищ ♂uatr
Участник
Аватар для Товарищ ♂uatr
MCBMSS
 
346 / 933 (32) +++++++
Регистрация: 23.10.2012
Стоит взвесить издержки:
- Сменить тип переменной с int на int64 = рост занимаемого дискового пространства x2;
- Осуществлять runTime-конвертацию (не для случая вставки при выборке) = снижение быстродействия, что критично для вычислительных операций;
- Закрыть глаза на данное BP = риск ошибок, которые проявятся только в runTime.

С count нужно постараться, чтобы превысить int, но это если функция выполняет, например, sum/max - переполнение реальное.
Использование иного типа данных является правильным решением, но не во всех случаях уместным.
Старый 11.06.2026, 21:18   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,734 / 1220 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Про то, что кроме RecId есть еще RecVersion забыл. Все примеры-то через RecId. А через RecVersion проще делать подсчет количества
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Операция перемотки mksval DAX: Функционал 14 10.05.2016 14:51
ОС операция с двумя проводками BeLFO DAX: Функционал 17 19.04.2012 18:58
Как понять что вызывает исключение Invalid Method Call Jab Straight DAX: Программирование 0 17.12.2007 23:23
Возврат как отдельная операция AKIS-Falcon DAX: Функционал 7 25.10.2004 14:47
3.0, Модуль: ОС, операция: Разноска строк журнала ОС (с предварит просм проводок) MagisterLudi DAX: Функционал 2 07.10.2003 18:55
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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