При выводе различных отчетов часто необходимо преобразовать числовое значение в строку прописью. В 1С это решается очень просто: для этого предусмотрена функция ЧислоПрописью().
При формировании числа прописью есть возможность рядом выводить еще и предмет исчисления этого числа в необходимом роде и падеже. Предмет исчисления — это что измеряет преобразуемое число, например, деньги, ящики, вагоны, телевизоры и т.д.
- Без предмета исчисления:
- Двадцать два;
- Триста восемьдесят четыре.
- С предметом исчисления:
- Тридцать восемь дублонов;
- Двенадцать кораблей;
- Два дома.
Примеры
Для начала приведем примеры преобразования, чтобы узнать возможности 1С:
// ***** Вывод чисел: *****
ЧислоПрописью(9876.54);
// Девять тысяч восемьсот семьдесят шесть 54
ЧислоПрописью(1234.56, «Л=ru_RU;ДП=ИСТИНА», «целая, целых, целых, ж, сотая, сотой, сотых, ж, 2»);
// Одна тысяча двести тридцать четыре целых пятьдесят шесть сотых
ЧислоПрописью(7432, «Л=ru_RU;НП=Ложь», «,,,,,,,,0»);
// Семь тысяч четыреста тридцать два
// ***** Вывод денежных сумм: *****
ЧислоПрописью(9845.11, «Л=ru_RU», «рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2»);
// Девять тысяч восемьсот сорок пять рублей 11 копеек
ЧислоПрописью(2845.11, «Л=ru_RU;ДП=Истина», «рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2»);
// Две тысячи восемьсот сорок пять рублей одиннадцать копеек
ЧислоПрописью(555.16, «Л=ru_RU;ДП=Истина», «доллар, доллара, долларов, м, цент, цента, центов, м, 2»);
// Пятьсот пятьдесят пять долларов шестнадцать центов
ЧислоПрописью(453.23, «Л=ru_RU;ДП=Истина», «евро, евро, евро, м, цент, цента, центов, м, 2»);
// Четыреста пятьдесят три евро двадцать три цента
ЧислоПрописью(812.44, «Л=en_US;ДП=Истина», «dollar, dollars, cent, cents, 2»);
// Eight hundred twelve dollars forty four cents
ЧислоПрописью(3945.76, «Л=en_US;ДП=Истина», «euro, euros, cent, cents, 2»);
// Three thousand nine hundred forty five euros seventy six cents
// ***** Преобразовывать можно не только денежные единицы: *****
ЧислоПрописью(535, «Л=ru_RU», «коробка, коробки, коробок, ж,,,,ж, 0»);
// Пятьсот тридцать пять коробок
ЧислоПрописью(342, «Л=ru_RU», «телевизор, телевизора, телевизоров, м,,,,м, 0»);
// Триста сорок два телевизора
Описание работы с функцией
Как мы выяснили, для получения числа прописью используется функция
ЧислоПрописью(<Число>, <ФорматнаяСтрока>, <ПараметрыПредметаИсчисления>)
Функция возвращает строковое значение. В качестве входных параметров передаются:
- Число — преобразуемое значение;
- ФорматнаяСтрока — параметры форматирования:
- Л — Код локализации (например, u_RU — русский; en_US — английский, de_DE — немецкий). По умолчанию используются настройки операционной системы.
- НП — Выводить название предмета исчисления, по умолчанию — Истина.
- НД — Выводить название десятичных частей предмета исчисления, по умолчанию — Истина.
- ДП — Дробную часть выводить прописью/числом, по умолчанию — Ложь.
- ИИ — Выводить союз and. Анализируется только для англоязычной локализации. Возможные значения: «НеИспользовать», «Использовать».
- ПараметрыПредметаИсчисления — перечисление через запятую параметров предмета исчисления. Формат зависит от локализации.
Для русского языка параметры предмета исчисления имеют вид «рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2», где:
- рубль – единственное число именительный падеж;
- рубля – единственное число родительный падеж;
рублей – множественное число родительный падеж;
м – мужской род (ж – женский род, с – средний род);
«копейка, копейки, копеек, ж» – дробная часть, аналогично предмету исчисления (может отсутствовать);
«2» – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).
Использование в типовых решениях
В конфигурациях, построенных на библиотеке стандартных подсистем, в общем модуле РаботаСКурсамиВалют есть функция
СформироватьСуммуПрописью(СуммаЧислом, Валюта, ВыводитьСуммуБезКопеек = Ложь)
Функция служит для преобразования валютных сумм в строку прописью.