|
![]() |
#1 |
Участник
|
Мы опять упираемся в ПОСТАНОВКУ задачи.
Вот нафига конвертировать в строку, чтобы потом опять конвертировать в число. Причем еще неизвестно где, по непонятным причинам, пока это была строка произошла замена пробела на неразрывный пробел. Может проще сразу число прочитать? |
|
![]() |
#2 |
Moderator
|
Я примерно представляю, о чем может идти речь.
Например, об этом: Главная Книга \Запросы \Оборот по счету \Анализ счета. После задания параметров и кнопки ОК выводится форма "Анализ счета", в которой в колонках "Дебит" и "Кредит" как раз суммы в текстовом виде, с которыми мы боремся. Суммы превращаются в текст в методе insertRow класса RLedgerSheetEngine_AccountReview: X++: amount = ledgerTransDebit.exists(rowAccount) ? ledgerTransDebit.lookup(rowAccount) : 0; formListItem = new FormListItem(strRfix(strFmt("%1", amount), amountDictType.displayLength())); ... amount = ledgerTransCredit.exists(rowAccount) ? ledgerTransCredit.lookup(rowAccount) : 0; formListItem = new FormListItem(strRfix(strFmt("%1", amount), amountDictType.displayLength())); Чтобы получить сумму в первозданном виде, например, при щелчке по строке списка нужно будет считать из нее номер счета, выбрать мэп (дебитовый или кредитовый) и получить сумму при помощи map.lookup. Последний раз редактировалось Gustav; 30.04.2009 в 17:35. |
|
|
За это сообщение автора поблагодарили: valentino (1). |
![]() |
#3 |
Участник
|
Владимир, если Вы внимательно будете читать все топики данной темы сначала, то постановка задачи станет Вам ясна.
Gustav абсолютно точно ее понял. Вообще, я надеялся, что кто-то подскажет почему Аксапта при преобразовании из числа в строку втыкает тысячным разделителем обычный пробел (32) а не знак разделителя из панели управления (160) (я думал где-то есть тайные настройки). Но, в принципе считаю тему исчерпанной. Спасибо всем! |
|
![]() |
#4 |
Moderator
|
Цитата:
Функция strFmt ведёт себя похоже на функции num2str и date2str. Похожесть заключается в числе прочего и в том, что в качестве разделителей (десятичных, тысяч, элементов даты) используются только разделители, "регламентированные" этими двумя функциями. Так разделителем тысяч в функции num2str может быть точка, запятая, ничего (пустая строка) или пробел, который с кодом 32. Поробуйте поставить в региональных настройках в качестве разделителя тысяч, скажем, букву x (икс латинская) - strFmt все равно будет использовать один из 4-х доступных разделителей - не могу сказать с уверенностью, какой именно - для какого "нерегламентированного" символа. Таким образом, согласно моей гипотезе, нерегламентированный пробел с кодом 160 "неудачно" заменяется на "регламентированный" пробел с кодом 32 - просто как на один из 4-х возможных вариантов, зашитых в функцию, вводя нас в заблуждение. Т.е. проблема существует, но корни, похоже, у нее совсем другие, чем просто "неряшливость" разработчиков функции strFmt. Видимо, можно говорить о том, что функция strFmt следует за региональными настройками только пока региональные настройки находятся с ней в "хорошем согласии" (совпадают разделители и проч.), позволяющем не замечать отклонений. К счастью, большинство настроек, находятся в хорошем согласии, а экспериментаторов, ставящих x в качестве разделителя тысяч не так много ![]() |
|
Теги |
разделитель тысячных, axapta |
|
![]() |
||||
Тема | Ответов | |||
Разделитель страницы в MS WORD | 3 | |||
Разделитель десятичных знаков в отчетах | 0 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|