Хотел спросить, можно ли добавить такое поле в свою карточку редактирования? (нашел в объекте поле с типом "Деньги", но не нашел ничего похожего в странице редактирования).
Это поле типа MultiCurrencyEdit (Мультивалютное поле), которое появилось начиная с версии 5.4. Для того, чтобы добавить подобное поле на собственную карточку, следует в редакторе переключиться на представление Все:
Тогда в списке появятся расширенные поля редактирование, в том числе и вышеупомянутое:
Часто для вывода в отчёте денежной суммы дробное число нужно оформить нужным образом, с разделением на нгултрумы и чертумы (или, скажем, рубли и копейки), также с пробелом или запятой между группами разрядов. Предлагается многофункциональная функция для осуществления такого форматирования.
function FormatFloat(Value, DecimalMark, ThousandSeparator, Prefix, Postfix, NoZero){
DecimalMark = IsNull(DecimalMark,',');
ThousandSeparator = IsNull(ThousandSeparator,' ');
Prefix = IsNull(Prefix,'');
Postfix = IsNull(Postfix,''); var Minus =(Math.abs(Value)!= Value)?' - ':'';
Value = Math.abs(Value); var Result =''; var Cop = Math.round((Value - Math.floor(Value))*100); if(Cop.toString().length>1||!!NoZero){
Result = Result + DecimalMark + Cop.toString(); }else{
Result = Result + DecimalMark +'0'+ Cop.toString(); } var IsFirstIteration =true;
while(true){ var Thousand = Math.floor(Value)- Math.floor(Value /1000)*1000; if(IsFirstIteration){
Result = Thousand + Result;
IsFirstIteration =false; }else{
Result = Thousand + ThousandSeparator + Result; }
Value = Math.floor(Value /1000); if(Value ==0){ return Prefix +Minus + Result + Postfix; }else{ if(Thousand 10){
Result ='00'+ Result; }else if(Thousand 100){
Result ='0'+ Result; } }
} }
Параметры:
Value — исходное дробное число. DecimalMark — десятичная запятая, точка или название валюты на её месте. ThousandSeparator — пробел или запятая между единицами, тысячами, миллионами и т.д. Prefix — название валюты перед числом. Postfix — название валюты или разменной монеты после числа. NoZero — если true, то 1 копейка, иначе — 01 копейка.
Примеры использования:
FormatFloat(-12345.67)//- 12 345,67
FormatFloat(1000003.62,' руб. ',null,null,' коп.')// 1 000 003 руб. 62 коп.
Также сходную задачу решает "коробочная" функция AmountToStr (скрипт scr_ConvertUtils), переводящая число в его написание словами. А если нужно ещё и склонять слово (1 копейка, 2 копейки,5 копеек), можно использовать соответствующий механизм.