gifts2017

Число прописью без использования функции ЧислоПрописью

Опубликовал Vladimir A (wowik) в раздел Программирование - Практика программирования

На одном из собеседований просили сделать число прописью без использования встроенной функции ЧислоПрописью. На этом проверка знаний по 1С и закончилась.  
Все процедуры в статье сразу находятся, можно скопировать, вставить. Кому совсем лень, можно скачать обработку.

 

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Сообщить(ЧислоПрописьюСвойСпособ(ЧислоДляПреобразования));
    
КонецПроцедуры

//функция получения числа прописью  
Функция ЧислоПрописьюСвойСпособ(Знач ЧислоП) 
     
    Если ЧислоП < 0 Тогда    // число по модулю
        ЧислоП = ЧислоП*-1;
    КонецЕсли;

    ЧислоППрописью = "";
    //Вторая часть задания:"но программа должна ЛЕГКО расширяться для добавления больших чисел". Начало.
    //Если ЧислоП >= 1000000000000 Тогда        
    //    Количество =  Цел(ЧислоП/ 1000000000000);
    //ЧислоППрописью = СложитьСтроки(ЧислоППрописью,ЧислоСтрокой2(Количество)); //прописью сколько триллионов
    //    Если Количество = 1 Тогда
    //        ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "триллион")
    //    ИначеЕсли Количество = 2 Тогда
    //        ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "триллиона")
    //    Иначе
    //        ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "триллионов")
    //    КонецЕсли;
    //    ЧислоП = ЧислоП - Цел(ЧислоП / 1000000000000) * 1000000000000
    //КонецЕсли;                             
    //
    //Если ЧислоП >= 1000000000 Тогда        
    //    Количество =  Цел(ЧислоП/ 1000000000);
    //  ЧислоППрописью = СложитьСтроки(ЧислоППрописью,ЧислоСтрокой2(Количество)); //прописью сколько миллиардов
    //    Если Количество = 1 Тогда
    //        ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "миллиард")
    //    ИначеЕсли Количество = 2 Тогда
    //        ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "миллиарда")
    //    Иначе
    //        ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "миллиардов")
    //    КонецЕсли;
    //    ЧислоП = ЧислоП - Цел(ЧислоП / 1000000000) * 1000000000
    //КонецЕсли;    
    //Вторая часть задания:"но программа должна ЛЕГКО расширяться для добавления больших чисел". Окончание.
    
    Если ЧислоП >= 1000000 Тогда        
        Количество =  Цел(ЧислоП/1000000);  //сколько миллионов
        
        ЧислоППрописью = СложитьСтроки(ЧислоППрописью,ЧислоСтрокой2(Количество)); //прописью сколько миллионов

        Если Количество = 1 Тогда
            ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "миллион")
        ИначеЕсли Количество = 2 Тогда
            ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "миллиона")
        Иначе
            ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "миллионов")
        КонецЕсли;
        ЧислоП = ЧислоП - Цел(ЧислоП / 1000000) * 1000000 // для миллионов все сделали, далее нужно определить количество тысяч 
    КонецЕсли;
    
      Если ЧислоП >= 1000 Тогда        
        Количество =  Цел(ЧислоП/1000); //определить количество тысяч
        
        ЧислоППрописью = СложитьСтроки(ЧислоППрописью,ЧислоСтрокой2(Количество)); //прописью тысячи
        
        Если Количество = 1 Тогда
            ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "тысяча")
        ИначеЕсли Количество = 2 Тогда
            ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "тысячи")
        Иначе
            ЧислоППрописью = СложитьСтроки(ЧислоППрописью, "тысяч")
        КонецЕсли;
        ЧислоП = ЧислоП - Цел(ЧислоП / 1000) * 1000
    КонецЕсли;    

    Если ЧислоП >= 0 Then
        ЧислоППрописью = СложитьСтроки(ЧислоППрописью, ЧислоСтрокой2(ЧислоП))
    КонецЕсли;
    
    Возврат ЧислоППрописью;
 
КонецФункции

//возвращает строкове представление числа с разрадностью 3    
Функция ЧислоСтрокой2(Знач Количество)
    
    ЧислоП = "";
    Если Количество >= 100 Тогда
        ЧислоП = ЧислоСтрокой(Цел(Количество/100)*100);
        Количество = Количество - Цел(Количество / 100) * 100;
    КонецЕсли;
    
    Если Количество >= 20 Тогда
        ЧислоП     = СложитьСтроки(ЧислоП, ЧислоСтрокой(Цел(Количество/10) * 10)); 
        Количество = Количество - Цел(Количество / 10) * 10;             
    КонецЕсли;
    
    ЧислоП = СложитьСтроки(ЧислоП, ЧислоСтрокой(Количество));
    
    Возврат ЧислоП;
    
КонецФункции

//возвращает строковое представление числа    
Функция ЧислоСтрокой(Число)
    
    Если Число = 100 Тогда
        ЧислоСтрокой = "сто"
    ИначеЕсли Число = 200 Тогда
        ЧислоСтрокой = "двести"
    ИначеЕсли Число = 300 Тогда
        ЧислоСтрокой = "триста"
    ИначеЕсли Число =400  Тогда
        ЧислоСтрокой = "четыреста"
    ИначеЕсли Число = 500  Тогда
        ЧислоСтрокой = "пятьсот"
    ИначеЕсли Число = 600  Тогда
        ЧислоСтрокой = "шестьсот"
    ИначеЕсли Число = 700  Тогда
        ЧислоСтрокой = "семьсот"
    ИначеЕсли Число = 800  Тогда
        ЧислоСтрокой = "восемьсот"
    ИначеЕсли Число = 900 Тогда
        ЧислоСтрокой = "девятьсот"
    ИначеЕсли Число = 11  Тогда
        ЧислоСтрокой = "одиннадцать"
    ИначеЕсли Число = 12 Тогда
        ЧислоСтрокой = "двенадцать"
    ИначеЕсли Число = 13  Тогда
        ЧислоСтрокой = "тринадцать"
    ИначеЕсли Число = 14  Тогда
        ЧислоСтрокой = "четырнадцать"
    ИначеЕсли Число = 15  Тогда
        ЧислоСтрокой = "пятнадцать"
    ИначеЕсли Число = 16  Тогда
        ЧислоСтрокой = "шестнадцать"
    ИначеЕсли Число = 17  Тогда
        ЧислоСтрокой = "семнадцать"
    ИначеЕсли Число = 18 Тогда
        ЧислоСтрокой = "восемнадцать"
    ИначеЕсли Число = 19  Тогда
        ЧислоСтрокой = "девятнадцать"
    ИначеЕсли Число = 20 Тогда
        ЧислоСтрокой = "двадцать"
    ИначеЕсли Число = 30  Тогда
        ЧислоСтрокой = "тридцать"
    ИначеЕсли Число = 40 Тогда
        ЧислоСтрокой = "сорок"
    ИначеЕсли Число = 50 Тогда
        ЧислоСтрокой = "пятьдесят"
    ИначеЕсли Число = 60 Тогда
        ЧислоСтрокой = "шестьдесят"
    ИначеЕсли Число = 70  Тогда
        ЧислоСтрокой = "семьдесят"
    ИначеЕсли Число = 80  Тогда
        ЧислоСтрокой = "восемьдесят"
    ИначеЕсли Число = 90  Тогда
        ЧислоСтрокой = "девяносто"
    ИначеЕсли Число = 10 Тогда
        ЧислоСтрокой = "десять"
    ИначеЕсли Число = 9 Тогда
        ЧислоСтрокой = "девять"         
    ИначеЕсли Число = 8 Тогда
        ЧислоСтрокой = "восемь" 
    ИначеЕсли Число = 7 Тогда
        ЧислоСтрокой = "семь" 
    ИначеЕсли Число = 6 Тогда
        ЧислоСтрокой = "шесть" 
    ИначеЕсли Число = 5 Тогда
        ЧислоСтрокой = "пять" 
    ИначеЕсли Число = 4 Тогда
        ЧислоСтрокой = "четыре" 
    ИначеЕсли Число = 3 Тогда
        ЧислоСтрокой = "три" 
    ИначеЕсли Число = 2 Тогда
        ЧислоСтрокой = "два" 
    ИначеЕсли Число = 1 Тогда
        ЧислоСтрокой = "один"         
    КонецЕсли;

     Возврат  ЧислоСтрокой;
    
КонецФункции

//конкатенация двух строк 
Функция СложитьСтроки(Строка1, Строка2)
    
    Если Строка1 = "" Тогда
        СложитьСтроки = Строка2;
    ИначеЕсли Строка2 = "" Тогда 
        СложитьСтроки = Строка1
    Иначе
        СложитьСтроки = Строка1 + " " + Строка2
    КонецЕсли;
    
    Возврат СложитьСтроки;
    
КонецФункции

//при открытии формы обработки
Процедура ПриОткрытии()
    
    ЧислоДляПреобразования = 411211241;
    
КонецПроцедуры


        

Скачать файлы

Наименование Файл Версия Размер
Число прописью 5
.epf 7,39Kb
15.11.13
5
.epf 7,39Kb Скачать

См. также

Автор запретил комментарии