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

03.10.18

Разработка - Универсальные функции

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

Скачать исходный код

Наименование Файл Версия Размер
Число прописью
.epf 7,39Kb
9
.epf 7,39Kb 9 Скачать
Все обработки от wowik на infostart.ru до 01.10.2018
.zip 59,98Kb
0
.zip 59,98Kb Скачать

 

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

//функция получения числа прописью  
Функция ЧислоПрописьюСвойСпособ(Знач ЧислоП) 
     
    Если ЧислоП < 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;
    
КонецПроцедуры


        
 

число прописью

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2918    2    John_d    11    

56

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    5166    atdonya    22    

52

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    4134    ke.92@mail.ru    16    

62

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    9514    YA_418728146    6    

143

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2282    26    progmaster    8    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16401    143    sapervodichka    112    

130

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7372    quazare    8    

110