|
Помогите по функции "Формат" | ☑ | ||
---|---|---|---|---|
0
Паланик
20.02.09
✎
09:32
|
Нужно перевести дробное число в пропись. Форматная строка типа ЧПС - дает только округленное число прописью. Строка ЧПДС подставляет рубли/коп., а у меня вес. Есть выход из ситуации, кроме как выводить отдельно дробную и целую части? (дело интереса уже). Спасибо.
|
|||
1
Ёпрст
20.02.09
✎
09:33
|
лови
|
|||
2
Ёпрст
20.02.09
✎
09:34
|
||||
3
1Сергей
20.02.09
✎
09:35
|
я так делал, тока там конечно всё коряво:
Функция Прописью(Чис) //* возвращает строку, число прописью с копейками Чис1=Окр(Макс(Чис,-Чис),3); Стр=""; Если Чис1>=1 Тогда Если Чис1=Цел(Чис1) Тогда Возврат нрег(Формат(Чис1,"ЧП")); Иначе Единицы=СоздатьОбъект("СписокЗначений"); Единицы.ДобавитьЗначение("одна целая ",1); Единицы.ДобавитьЗначение("две целые ",2); Единицы.ДобавитьЗначение("три целые ",3); Единицы.ДобавитьЗначение("четыре целые ",4); Единицы.ДобавитьЗначение("пять целых ",5); Единицы.ДобавитьЗначение("шесть целых ",6); Единицы.ДобавитьЗначение("семь целых ",7); Единицы.ДобавитьЗначение("восемь целых ",8); Единицы.ДобавитьЗначение("девять целых ",9); Единицы.ДобавитьЗначение("целых ",0); Если (Чис1<=9) Тогда Стр=Стр+Единицы.ПолучитьЗначение(Чис1); ИначеЕсли (Лев(Прав(""+Цел(Чис1),2),1)="1") Тогда Стр=нрег(Формат(Цел(Чис1),"ЧП"))+" целых "; Иначе Стр=нрег(Формат(Цел(Чис1/10)*10,"ЧП")); Ед=Число(Прав(""+Цел(Чис1),1)); Если Ед>0 Тогда Стр=Стр+" "+Единицы.ПолучитьЗначение(Ед); КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли Чис1=0 Тогда Возврат "ноль"; Иначе Стр="ноль целых "; КонецЕсли; Чис2=Окр((Чис1-Цел(Чис1))*1000); Если Чис2>0 Тогда Если Прав(""+Чис2,2)="00" Тогда Чис2=Чис2/100; Единицы=СоздатьОбъект("СписокЗначений"); Единицы.ДобавитьЗначение("одна десятая",1); Единицы.ДобавитьЗначение("две десятых",2); Единицы.ДобавитьЗначение("три десятых",3); Единицы.ДобавитьЗначение("четыре десятых",4); Единицы.ДобавитьЗначение("пять десятых",5); Единицы.ДобавитьЗначение("шесть десятых",6); Единицы.ДобавитьЗначение("семь десятых",7); Единицы.ДобавитьЗначение("восемь десятых",8); Единицы.ДобавитьЗначение("девять десятых",9); Единицы.ДобавитьЗначение("десятых",0); Стр=Стр+Единицы.ПолучитьЗначение(Чис2); ИначеЕсли Прав(""+Чис2,1)="0" Тогда Чис2=Чис2/10; Единицы=СоздатьОбъект("СписокЗначений"); Единицы.ДобавитьЗначение("одна сотая",1); Единицы.ДобавитьЗначение("две сотых",2); Единицы.ДобавитьЗначение("три сотых",3); Единицы.ДобавитьЗначение("четыре сотых",4); Единицы.ДобавитьЗначение("пять сотых",5); Единицы.ДобавитьЗначение("шесть сотых",6); Единицы.ДобавитьЗначение("семь сотых",7); Единицы.ДобавитьЗначение("восемь сотых",8); Единицы.ДобавитьЗначение("девять сотых",9); Единицы.ДобавитьЗначение("сотых",0); Если Чис2<10 Тогда Стр=Стр+Единицы.ПолучитьЗначение(Число(Прав(""+Чис2,1))); ИначеЕсли Чис2<20 Тогда Стр=Стр+нрег(Формат(Чис2,"ЧП"))+" сотых"; Иначе Стр=Стр+нрег(Формат(Цел(Чис2/10)*10,"ЧП"))+" "+Единицы.ПолучитьЗначение(Число(Прав(""+Чис2,1))); КонецЕсли; Иначе Единицы=СоздатьОбъект("СписокЗначений"); Единицы.ДобавитьЗначение("одна тысячная",1); Единицы.ДобавитьЗначение("две тысячных",2); Единицы.ДобавитьЗначение("три тысячных",3); Единицы.ДобавитьЗначение("четыре тысячных",4); Единицы.ДобавитьЗначение("пять тысячных",5); Единицы.ДобавитьЗначение("шесть тысячных",6); Единицы.ДобавитьЗначение("семь тысячных",7); Единицы.ДобавитьЗначение("восемь тысячных",8); Единицы.ДобавитьЗначение("девять тысячных",9); Единицы.ДобавитьЗначение("тысячных",0); Если Чис2<10 Тогда Стр=Стр+Единицы.ПолучитьЗначение(Число(Прав(""+Чис2,1))); ИначеЕсли Число(Прав(""+Чис2,2))<20 Тогда Стр=Стр+нрег(Формат(Чис2,"ЧП"))+" тысячных"; Иначе Стр=Стр+нрег(Формат(Цел(Чис2/10)*10,"ЧП"))+" "+Единицы.ПолучитьЗначение(Число(Прав(""+Чис2,1))); КонецЕсли; КонецЕсли; КонецЕсли; Возврат Стр; КонецФункции |
|||
4
Паланик
20.02.09
✎
10:00
|
(2,3) Спасибо, занес в копилку, но я сделал так (быстрей и проще):
ЦелВес = Цел(ИтогоВес); ДробьВес = (ИтогоВес - ЦелВес)*1000; СтрокаВес = Строка(Формат(ЦелВес, "ЧПС")+" кг. "+Формат(ДробьВес, "ЧПС")+" гр."); Работает нормально, только вот граммы выводит с заглавной буквы, не смотрится как-то, но это уже не победить, походу... |
|||
5
Масянька
20.02.09
✎
10:02
|
НРег(строка) - все в нижнем регистре
|
|||
6
Паланик
20.02.09
✎
10:04
|
(5) Точно, спасибо!))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |