Эта статья будет о том, как получить представление числа или суммы прописью, используя стандартную функцию ЧислоПрописью().
Пишу это в качестве шпаргалки, в том числе и для себя, ибо требуется достаточно часто, а запоминать все эти конструкции нет никакого желания (синтаксис помощник, как-то не сильно помогает).
В этой статье я не буду приводить описание функции ЧислоПрописью() и ее параметров — это есть в синтаксис-помощнике.
Число прописью
Начнем с простой записи числа прописью:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //по-русски ЧислоСтрокой = ЧислоПрописью(1234.56, "Л=ru_RU"); //по-английски ЧислоСтрокой = ЧислоПрописью(1234.56, "Л=un_US"); //по-украински ЧислоСтрокой = ЧислоПрописью(1234.56, "Л=uk_UA"); //по-латышски ЧислоСтрокой = ЧислоПрописью(1234.56, "Л=lv_LV"); //по-казахски ЧислоСтрокой = ЧислоПрописью(1234.56, "Л=kk_KZ"); //по-румынски ЧислоСтрокой = ЧислоПрописью(1234.56, "Л=ro_RO"); //по-болгарски ЧислоСтрокой = ЧислоПрописью(1234.56, "Л=bg_BG"); |
Результат правда будет немного не таким, каким хотелось бы — дробная часть будет записана цифрами.
Можно попробовать сделать так:
1 2 | ЧислоСтрокой = ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина"); //Результат: Одна тысяча двести тридцать четыре пятьдесят шесть |
Но это все равно не то, так как нельзя понять где заканчивается целая часть и начинается дробная.
Для решения этой проблемы можно задействовать третий параметр:
1 2 | ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "целая, целых, целых, ж, сотая, сотой, сотых, ж, 2"); //Результат: Одна тысяча двести тридцать четыре целых пятьдесят шесть сотых |
Результат выгляди уже более или менее приемлемо, но такой способ совершенно не подходит, если количество знаков после запятой неизвестно заранее.
Стандартного и универсального решения этой проблемы, к сожалению, не существует (поправьте меня, если я ошибаюсь).
Сумма прописью
Теперь перейдем к представлению сумм прописью (по суммой подразумевается пара — число+валюта). Здесь все гораздо лучше — знаков после запятой практически всегда два.
Сумма в российских рублях на разных языках:
1 2 3 4 5 6 7 8 9 10 11 12 | //по-русски Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2")); //по-английски Сообщить(ЧислоПрописью(1234.56, "Л=en_US;ДП=Истина", "rouble,roubles,kopeck,kopecks,2")); //по-украински Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "карбованець,карбованцi,карбованцiв,м,копiйка,копiйки,копiйок,м,2")); //по-латышски Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "rublis,rubli,rublu,v,kapeika,kapeiki,kapeiku,s,2")); //по-румынски Сообщить(ЧислоПрописью(1234.56, "Л=ro_RO;ДП=Истина", "rubla,ruble,f,copeica,copeici,f,2")); //по-болгарски Сообщить(ЧислоПрописью(1234.56, "Л=bg_BG;ДП=Истина", "рубла,рубли,ж,копейка,копейки,ж,2")); |
Сумма в долларах США на разных языках:
1 2 3 4 5 6 7 8 9 10 11 12 | //по-русски Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "доллар,доллара,долларов,м,цент,цента,центов,м,2")); //по-английски Сообщить(ЧислоПрописью(1234.56, "Л=en_US;ДП=Истина", "dollar,dollars,cent,cents,2")); //по-украински Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "долар,долара,доларiв,м,цент,цента,центiв,м,2")); //по-латышски Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "dolars,dolari,dolaru,v,cent,centi,centu,v,2")); //по-румынски Сообщить(ЧислоПрописью(1234.56, "Л=ro_RO;ДП=Истина", "dolar,dolari,m,cent,centi,m,2")); //по-болгарски Сообщить(ЧислоПрописью(1234.56, "Л=bg_BG;ДП=Истина", "долар,долара,м,цент,цента,м,2")); |
Сумма в евро на разных языках:
1 2 3 4 5 6 7 8 9 10 11 12 | //по-русски Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "евро,евро,евро,м,евроцент,евроцента,евроцентов,м,2")); //по-английски Сообщить(ЧислоПрописью(1234.56, "Л=en_US;ДП=Истина", "euro,euros,eurocent,eurocents,2")); //по-украински Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "євро,євро,євро,м,євроцент,євроцента,євроцентів,м,2")); //по-латышски Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "eiro,eiro,eiro,v,cents,centi,centi,v,2")); //по-румынски Сообщить(ЧислоПрописью(1234.56, "Л=ro_RO;ДП=Истина", "euro,euro,м,eurocent,eurocenti,м,2")); //по-болгарски Сообщить(ЧислоПрописью(1234.56, "Л=bg_BG;ДП=Истина", "евро,евро,с,евроцент,евроцента,м,2")); |
Сумма в украинских гривнах на разных языках:
1 2 3 4 5 6 7 8 9 10 11 12 | //по-русски Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "гривна,гривны,гривен,ж,копейка,копейки,копеек,ж,2")); //по-английски Сообщить(ЧислоПрописью(1234.56, "Л=en_US;ДП=Истина", "hryvnia,hryvnias,kopeck,kopecks,2")); //по-украински Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "гривня,гривнi,гривень,ж,копiйка,копiйки,копiйок,ж,2")); //по-латышски Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "grivna,grivni,grivnu,s,kapeika,kapeiki,kapeiku,s,2")); //по-румынски Сообщить(ЧислоПрописью(1234.56, "Л=ro_RO;ДП=Истина", "hrivna,hrivne,f,copeica,copeici,f,2")); //по-болгарски Сообщить(ЧислоПрописью(1234.56, "Л=bg_BG;ДП=Истина", "гривна,гривни,ж,копейка,копейки,ж,2")); |
Сумма в латвийских латах на разных языках:
1 2 3 4 5 6 7 8 9 10 11 12 | //по-русски Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "лат,лата,латов,м,сантим,сантима,сантимов,м,2")); //по-английски Сообщить(ЧислоПрописью(1234.56, "Л=en_US;ДП=Истина", "lat,lats,santim,santims,2")); //по-украински Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "лат,лата,латiв,м,сантим,сантима,сантимiв,м,2")); //по-латышски Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "lats,lati,latu,v,santims,santimi,santimu,v,2")); //по-румынски Сообщить(ЧислоПрописью(1234.56, "Л=ro_RO;ДП=Истина", "lata,lata,f,sentima,santime,f,2")); //по-болгарски Сообщить(ЧислоПрописью(1234.56, "Л=bg_BG;ДП=Истина", "лат,лата,м,сантим,сантима,м,2")); |
Сумма в румынских леях на разных языках:
1 2 3 4 5 6 7 8 9 10 11 12 | //по-русски Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "лей,лея,леев,м,бани,бани,бани,м,2")); //по-английски Сообщить(ЧислоПрописью(1234.56, "Л=en_US;ДП=Истина", "leu,lei,ban,bany,2")); //по-украински Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "леі,лея,леїв,м,бані,бані,бань,ж,2")); //по-латышски Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "leja,lejas,liejas,s,bans,bani,bani,v,2")); //по-румынски Сообщить(ЧислоПрописью(1234.56, "Л=ro_RO;ДП=Истина", "leu,lei,м,ban,bani,м,2")); //по-болгарски Сообщить(ЧислоПрописью(1234.56, "Л=bg_BG;ДП=Истина", "лея,леи,ж,бана,бани,ж,2")); |
Сумма в болгарских львах на разных языках:
1 2 3 4 5 6 7 8 9 10 11 12 | //по-русски Сообщить(ЧислоПрописью(1234.56, "Л=ru_RU;ДП=Истина", "лев,лева,левов,м,стотинка,стотинки,стотинок,ж,2")); //по-английски Сообщить(ЧислоПрописью(1234.56, "Л=en_US;ДП=Истина", "lev,leva,stotinki,stotinki,2")); //по-украински Сообщить(ЧислоПрописью(1234.56, "Л=uk_UA;ДП=Истина", "лев,лева,левів,м,стотинка,стотинки,стотинок,ж,2")); //по-латышски Сообщить(ЧислоПрописью(1234.56, "Л=lv_LV;ДП=Истина", "leva,levas,levas,s,stotinka,stotinki,stotinki,s,2")); //по-румынски Сообщить(ЧислоПрописью(1234.56, "Л=ro_RO;ДП=Истина", "leva,leva,f,stotinc,stotinci,m,2")); //по-болгарски Сообщить(ЧислоПрописью(1234.56, "Л=bg_BG;ДП=Истина", "лев,лева,м,стотинка,стотинки,ж,2")); |
Казахский язык и валюту я пропустил из-за сложностей с отображением символов.
На этом все, надеюсь данная статья вам помогла.
Не получилось. По вашим командам, создавала внешнюю печатную форму в 1с. Так вот сумма вышла на английском языке, и вместо тенге, было написано тиын
просто ты е6л@н, не парься
Если в дробной не более двух знаков, то след код подходит
ФорматСтрока = «Л=ru_RU;ДП=Истина»;
Если Цел(Сумма *10) Сумма * 10 Тогда
Результат1 = ЧислоПрописью(Сумма, ФорматСтрока, «целая, целых, целых, ж, сотая, сотой, сотых, ж, 2»);
ИначеЕсли Цел(Сумма) Сумма Тогда
Результат1 = ЧислоПрописью(Сумма, ФорматСтрока, «целая, целых, целых, ж, десятая, десятой, десятых, ж, 1»);
Иначе
ФорматСтрока = «Л=ru_RU;ДП=Ложь»;
Результат1 = ЧислоПрописью(Сумма, ФорматСтрока, «, , , , , , , , 0»);
КонецЕсли;