|
Число прописью | ☑ | ||
---|---|---|---|---|
0
G751
22.03.18
✎
09:00
|
Как получить число прописью в родительном падеже?
Конкретно: 5 - пяти, 10- десяти и т.д. К функции ЧислоПрописью() отсылать меня не надо(перепробовал). Просто покажите, пожалуйста на примере. Спасибо. |
|||
1
lodger
22.03.18
✎
09:04
|
(0) если не хватает функционала ЧислоПрописью(), тогда в пределах 1ц это решается муторно и долго.
обычно используют внешние компоненты, иногда даже прибегают к веб-сервису склонений. |
|||
2
lodger
22.03.18
✎
09:04
|
(0) в своей конфе поищите модули СтроковыеФункции...
|
|||
3
jsmith82
22.03.18
✎
09:05
|
||||
4
jsmith82
22.03.18
✎
09:06
|
||||
5
spiller26
22.03.18
✎
09:09
|
Это попробуй
https://helpf.pro/faq8/view/38.htm |
|||
6
spiller26
22.03.18
✎
09:11
|
Или воспользуйся morpher.ru
http://1clenta.ru/pattern/79 |
|||
7
Масянька
22.03.18
✎
09:13
|
Докатились...
Там делов на полчаса с перекурами... Функция стрФразаПрописью(мЧисло, Корень) Экспорт Если (Корень = "наименован") Тогда Если (мЧисло >= 10) и (мЧисло <= 20) Тогда ЧислоПрописью = Нрег(Формат(мЧисло, "ЧП")); Корень = Корень + "ий"; Фраза = стрПерваяБукваЗаглавная(ЧислоПрописью) + " " + Корень; Иначе ВсеЧислоПрописью = НРег(Формат(мЧисло, "ЧП")); Если мЧисло > 20 Тогда ПоследняяЦифраЧислом = мЧисло % 10; ПервыеЦифрыПрописью = стрПолучитьСловаДоПоследнегоИзСтроки(ВсеЧислоПрописью); ПоследняяЦифраПрописью = стрПолучитьПоследнееСловоИзСтроки(ВсеЧислоПрописью); ИначеЕсли мЧисло < 10 Тогда ПоследняяЦифраЧислом = мЧисло; ПервыеЦифрыПрописью = ""; ПоследняяЦифраПрописью = Нрег(Формат(мЧисло, "ЧП")); КонецЕсли; Если ПоследняяЦифраЧислом = 1 Тогда ПоследняяЦифраПрописью = "одно"; Корень = Корень + "ие"; ИначеЕсли (ПоследняяЦифраЧислом >= 2) и (ПоследняяЦифраЧислом <= 4) Тогда Корень = Корень + "ия"; Иначе Корень = Корень + "ий"; КонецЕсли; ВсеЧислоПрописью = СокрЛП(ПервыеЦифрыПрописью + " " + ПоследняяЦифраПрописью); Фраза = СокрЛП(стрПерваяБукваЗаглавная(ВсеЧислоПрописью) + " " + Корень); КонецЕсли; ИначеЕсли (Корень = "картридж") Тогда Если (мЧисло >= 10) и (мЧисло <= 20) Тогда ЧислоПрописью = Нрег(Формат(мЧисло, "ЧП")); Корень = Корень + "ей"; Фраза = стрПерваяБукваЗаглавная(ЧислоПрописью) + " " + Корень; Иначе ВсеЧислоПрописью = НРег(Формат(мЧисло, "ЧП")); Если мЧисло > 20 Тогда ПоследняяЦифраЧислом = мЧисло % 10; ПервыеЦифрыПрописью = стрПолучитьСловаДоПоследнегоИзСтроки(ВсеЧислоПрописью); ПоследняяЦифраПрописью = стрПолучитьПоследнееСловоИзСтроки(ВсеЧислоПрописью); ИначеЕсли мЧисло < 10 Тогда ПоследняяЦифраЧислом = мЧисло; ПервыеЦифрыПрописью = ""; ПоследняяЦифраПрописью = Нрег(Формат(мЧисло, "ЧП")); КонецЕсли; Если ПоследняяЦифраЧислом = 1 Тогда ПоследняяЦифраПрописью = "один"; ИначеЕсли (ПоследняяЦифраЧислом >= 2) и (ПоследняяЦифраЧислом <= 4) Тогда Корень = Корень + "а"; Иначе Корень = Корень + "ей"; КонецЕсли; ВсеЧислоПрописью = СокрЛП(ПервыеЦифрыПрописью + " " + ПоследняяЦифраПрописью); Фраза = СокрЛП(стрПерваяБукваЗаглавная(ВсеЧислоПрописью) + " " + Корень); КонецЕсли; ИначеЕсли (Корень = "день") Тогда Если (мЧисло >= 10) и (мЧисло <= 20) Тогда ЧислоПрописью = Нрег(Формат(мЧисло, "ЧП")); Корень = "дней"; Фраза = стрПерваяБукваЗаглавная(ЧислоПрописью) + " " + Корень; Иначе ВсеЧислоПрописью = НРег(Формат(мЧисло, "ЧП")); Если мЧисло > 20 Тогда ПоследняяЦифраЧислом = мЧисло % 10; ПервыеЦифрыПрописью = стрПолучитьСловаДоПоследнегоИзСтроки(ВсеЧислоПрописью); ПоследняяЦифраПрописью = стрПолучитьПоследнееСловоИзСтроки(ВсеЧислоПрописью); ИначеЕсли мЧисло < 10 Тогда ПоследняяЦифраЧислом = мЧисло; ПервыеЦифрыПрописью = ""; ПоследняяЦифраПрописью = Нрег(Формат(мЧисло, "ЧП")); КонецЕсли; Если ПоследняяЦифраЧислом = 1 Тогда ПоследняяЦифраПрописью = "один"; ИначеЕсли (ПоследняяЦифраЧислом >= 2) и (ПоследняяЦифраЧислом <= 4) Тогда Корень = "дня"; Иначе Корень = "дней"; КонецЕсли; ВсеЧислоПрописью = СокрЛП(ПервыеЦифрыПрописью + " " + ПоследняяЦифраПрописью); Фраза = СокрЛП(стрПерваяБукваЗаглавная(ВсеЧислоПрописью) + " " + Корень); КонецЕсли; ИначеЕсли (Корень = "чек") Тогда Если (мЧисло >= 10) и (мЧисло <= 20) Тогда ЧислоПрописью = Нрег(Формат(мЧисло, "ЧП")); Корень = "чеков"; Фраза = стрПерваяБукваЗаглавная(ЧислоПрописью) + " " + Корень; Иначе ВсеЧислоПрописью = НРег(Формат(мЧисло, "ЧП")); Если мЧисло > 20 Тогда ПоследняяЦифраЧислом = мЧисло % 10; ПервыеЦифрыПрописью = стрПолучитьСловаДоПоследнегоИзСтроки(ВсеЧислоПрописью); ПоследняяЦифраПрописью = стрПолучитьПоследнееСловоИзСтроки(ВсеЧислоПрописью); ИначеЕсли мЧисло < 10 Тогда ПоследняяЦифраЧислом = мЧисло; ПервыеЦифрыПрописью = ""; ПоследняяЦифраПрописью = Нрег(Формат(мЧисло, "ЧП")); КонецЕсли; Если ПоследняяЦифраЧислом = 1 Тогда ПоследняяЦифраПрописью = "один"; ИначеЕсли (ПоследняяЦифраЧислом >= 2) и (ПоследняяЦифраЧислом <= 4) Тогда Корень = "чека"; Иначе Корень = "чеков"; КонецЕсли; ВсеЧислоПрописью = СокрЛП(ПервыеЦифрыПрописью + " " + ПоследняяЦифраПрописью); Фраза = СокрЛП(стрПерваяБукваЗаглавная(ВсеЧислоПрописью) + " " + Корень); КонецЕсли; ИначеЕсли (Корень = "кассов") Тогда ВсеЧислоПрописью = НРег(Формат(мЧисло, "ЧП")); Если мЧисло > 20 Тогда ПоследняяЦифраЧислом = мЧисло % 10; ПервыеЦифрыПрописью = стрПолучитьСловаДоПоследнегоИзСтроки(ВсеЧислоПрописью); ПоследняяЦифраПрописью = стрПолучитьПоследнееСловоИзСтроки(ВсеЧислоПрописью); ИначеЕсли мЧисло < 10 Тогда ПоследняяЦифраЧислом = мЧисло; ПервыеЦифрыПрописью = ""; ПоследняяЦифраПрописью = Нрег(Формат(мЧисло, "ЧП")); КонецЕсли; Если ПоследняяЦифраЧислом = 1 Тогда ПоследняяЦифраПрописью = "один"; Корень = Корень + "ый"; Иначе Корень = Корень + "ых"; КонецЕсли; ВсеЧислоПрописью = СокрЛП(ПервыеЦифрыПрописью + " " + ПоследняяЦифраПрописью); Фраза = СокрЛП(стрПерваяБукваЗаглавная(ВсеЧислоПрописью) + " " + Корень); КонецЕсли; Возврат Фраза; КонецФункции // стрФразаПрописью() |
|||
8
Fish
22.03.18
✎
09:16
|
(7) Если (Корень = "наименован") Тогда
... ИначеЕсли (Корень = "картридж") Тогда ... ИначеЕсли (Корень = "день") Тогда ... ИначеЕсли (Корень = "кассов") Тогда Что это за ад? |
|||
9
spiller26
22.03.18
✎
09:41
|
Вся фишка в том, что не только цифры явно нужно склонять, но и наименование того что за ними.
Пример: пять рублей пяти рублей пятью рублями и т.д. |
|||
10
Малыш Джон
22.03.18
✎
09:41
|
(0) в русском языке всего тридцать шесть слов обозначающих числительные на промежутке от 1 до 999, на следующем промежутке - то же самое , только прибавляется слово "тысяч", на следующем - "миллионов".
Поставь в цикле эти 36 условий и перебирай по цифрам. Алгоритм практически копипастом пишется, только названия числительных меняй |
|||
11
spiller26
22.03.18
✎
09:46
|
(10) Как вариант, если нужно склонять только цифры, то можно загнать в несколько соответствий по падежам, юзабельней будет перебирать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |