Функции на все времена
Сумма прописью

Из множества реализаций этой востребованной функции представлен вариант, наиболее отвечающий требованиям отечественного документооборота (в части правил написания и склонения названий валют).  

В демо-файле использована модифицированная версия Михаила Едошина, опубликованная в КЛУБ FileMaker.RU.

Модификация состоит в том, что основная функция ЧислоПрописью, которая, собственно, и превращает целое число в слова, вызывается "внешней" функцией СуммаПрописьюВалюта, параметрами которой являются поля Сумма и Валюта. В ней уже прописаны некоторые варианты написания валют (род, склонения), которые вы можете сами дополнить.

Функция СуммаПрописьюВалюта(Сумма, Валюта) добавляет в текст названия денежных единиц (рублей, копеек, долларов, центов... ) в правильном числе и падеже. 

Предполагается, что Сумма - это число вида Rub.Kop (допустимые варианты - 123, 123.4, 123.45), где "копейки" могут либо отсутствовать вообще, либо занимать не более двух символов. 
Лишние символы в "копейках" игнорируются. Например, 123.4567 превратится в 123.45.

Примеры:



Код функции СуммаПрописьюВалюта

В данном варианте возможные значения параметра Валюта: 
USD, EUR, RUB, Гривна. Любое другое эквивалентно RUB.

Обратите внимание: элементы формулы, обозначающие
род валюты - "М", "Ж", "С" -  набираются кириллицей;
"Kop" - латиницей.


СуммаПрописьюВалюта(Число, Валюта) =  

Let(

[
Rub = Int ( Число); Kop = Left ( 100*(Число - Rub);2) ;

TextRub = Case(
Валюта = "USD"; ЧислоПрописью ( Rub; "М" ; "доллар США" ; "доллара США" ; "долларов США" );
Валюта = "EUR"; ЧислоПрописью ( Rub; "М" ; "ЕВРО" ; "ЕВРО" ; "ЕВРО" );
Валюта = "Гривна"; ЧислоПрописью ( Rub; "Ж" ; "гривня" ; "гривнi" ; "гривень" );
ЧислоПрописью ( Rub; "М" ; "рубль" ; "рубля" ; "рублей" ))
];

Replace ( TextRub; 1; 1; Proper ( Left ( TextRub ; 1))) & " " &
Case(
Валюта = "USD"; ЧислоПрописью ( Kop; "М" ; "цент" ; "цента" ; "центов" );
Валюта = "EUR"; ЧислоПрописью ( Kop; "М" ; "евроцент" ; "евроцента" ; "евроцентов" );
Валюта = "Гривна"; ЧислоПрописью ( Kop; "Ж" ; "копiйка" ; "копiйкi" ; "копiйок" );
ЧислоПрописью ( Kop; "Ж" ; "копейка" ; "копейки" ; "копеек" )
)
)


Код функции ЧислоПрописью ввиду его огромности здесь не приводится. Вы можете скопировать его из демо-файла (как и код функции СуммаПрописьюВалюта).  


Как вставить функцию в свое приложение:

1. Скачайте демо-файл.
2. Откройте свой файл. Пройдитесь по цепочке File/Manage/Custom Functions...
3. Импортируйте в свой файл функции СуммаПрописьюВалюта и ЧислоПрописью из демо-файла. 
4. В своем файле создайте (если их еще нет) поля

Валюта (Text)

Сумма (Number)

СуммаПрописью (calc, Text) = СуммаПрописьюВалюта (Сумма; Валюта)

5. Разместите на нужном лэйауте в подходящем месте все три поля. Назначьте полю Валюта выпадающий список со значениями

RUB
USD
EUR
Гривна

6. Если вы захотите ввести новую валюту, например, фунт стерлингов, добавьте в выпадающий список значение GBP и вставьте в коде функции в соответствующие места две строчки, как показано ниже (выделено):

...
Валюта = "Гривна"; ЧислоПрописью ( Rub; "Ж" ; "гривня" ; "гривнi" ; "гривень" );
Валюта = "GBP"; ЧислоПрописью ( Rub; "М" ; "фунт стерлингов" ; "фунта стерлингов" ; "фунтов стерлингов" );
ЧислоПрописью ( Rub; "М" ; "рубль" ; "рубля" ; "рублей" ))
...
Валюта = "Гривна"; ЧислоПрописью ( Kop; "Ж" ; "копiйка" ; "копiйкi" ; "копiйок" );
Валюта = "GBP"; ЧислоПрописью ( Kop; "М" ; "пенни" ; "пенса" ; "пенсов" );
ЧислоПрописью ( Kop; "Ж" ; "копейка" ; "копейки" ; "копеек" )
...

7. Вот и все


 Демо-файл (.fp7)




Автор: М.Едошин, модификация FMLogia

Тэги: сумма прописью, функции

← Вернуться к списку статей