![]() |
|
Функция Количество единиц прописью | ☑ | ||
---|---|---|---|---|
0
kobzon2
05.01.19
✎
11:35
|
Приветствую всех!
Никак не могу сообразить как с помощью "ЧислоПрописью" получить из целого числа, значение прописью типа: (Одной) единицы, (двух) единиц... и.т.д. Например, купили телевизор, в количестве 1(Одной) единицы. У меня получается только Один единиц)) п.с. Сильно не ругайтесь) |
|||
1
Масянька
05.01.19
✎
11:37
|
(0) Ройся :)
Если (Корень = "наименован") Тогда Если (мЧисло >= 10) и (мЧисло <= 20) Тогда ЧислоПрописью = Нрег(Формат(мЧисло, "ЧП")); Корень = Корень + "ий"; Фраза = стрПерваяБукваЗаглавная(ЧислоПрописью) + " " + Корень; Иначе ВсеЧислоПрописью = НРег(Формат(мЧисло, "ЧП")); Если мЧисло > 20 Тогда ПоследняяЦифраЧислом = мЧисло % 10; ПервыеЦифрыПрописью = стрПолучитьСловаДоПоследнегоИзСтроки(ВсеЧислоПрописью); ПоследняяЦифраПрописью = стрПолучитьПоследнееСловоИзСтроки(ВсеЧислоПрописью); ИначеЕсли мЧисло < 10 Тогда ПоследняяЦифраЧислом = мЧисло; ПервыеЦифрыПрописью = ""; ПоследняяЦифраПрописью = Нрег(Формат(мЧисло, "ЧП")); КонецЕсли; Если ПоследняяЦифраЧислом = 1 Тогда ПоследняяЦифраПрописью = "одно"; Корень = Корень + "ие"; ИначеЕсли (ПоследняяЦифраЧислом >= 2) и (ПоследняяЦифраЧислом <= 4) Тогда Корень = Корень + "ия"; Иначе Корень = Корень + "ий"; КонецЕсли; ВсеЧислоПрописью = СокрЛП(ПервыеЦифрыПрописью + " " + ПоследняяЦифраПрописью); Фраза = СокрЛП(стрПерваяБукваЗаглавная(ВсеЧислоПрописью) + " " + Корень); КонецЕсли; |
|||
2
kobzon2
05.01.19
✎
11:38
|
(1) Это реально?)
|
|||
3
Масянька
05.01.19
✎
11:40
|
(2) Что?
У меня в качестве корня реализовано 5 слов. Работает - никто не жалуется. |
|||
4
kobzon2
05.01.19
✎
11:41
|
(3) Ок, Спасибо! Пошел рыться)
|
|||
5
kobzon2
05.01.19
✎
11:47
|
(1) Видимо не хватает функций:
стрПерваяБукваЗаглавная стрПолучитьСловаДоПоследнегоИзСтроки стрПолучитьПоследнееСловоИзСтроки Ругается) |
|||
6
Масянька
05.01.19
✎
11:49
|
Функция стрПерваяБукваЗаглавная(мСтрока) Экспорт
мНоваяСтрока = ""; мДлина = СтрДлина(мСтрока); мПерваяБуква = ВРег(СокрЛП(Сред(мСтрока, 1, 1))); мОстаток = Нрег(СокрЛП(Сред(мСтрока, 2, СтрДлина(мСтрока)))); мНоваяСтрока = мПерваяБуква + мОстаток; Возврат мНоваяСтрока; КонецФункции //стрПерваяБукваЗаглавная() Функция стрПолучитьСловаДоПоследнегоИзСтроки(Слово) Экспорт мСтрока = Слово; ДлинаСтроки = СтрДлина(мСтрока); ПоследСлово = стрПолучитьПоследнееСловоИзСтроки(Слово); ДлинаПоследСлова = СтрДлина(ПоследСлово); ДлинаСтрокиДоСлова = ДлинаСтроки - ДлинаПоследСлова; мСтрока = Сред(мСтрока, 1, ДлинаСтрокиДоСлова); Возврат СокрЛП(мСтрока); КонецФункции // стрПолучитьСловаДоПоследнегоИзСтроки() Функция стрПолучитьПоследнееСловоИзСтроки(Слово) Экспорт мСтрока = Слово; Пока СтрЧислоВхождений(СокрЛП(мСтрока), " ") > 0 Цикл мСтрока = Сред(мСтрока, Найти(мСтрока, " ") + 1, СтрДлина(мСтрока)); КонецЦикла; Возврат СокрЛП(мСтрока); КонецФункции // стрПолучитьПоследнееСловоИзСтроки() Чёт я сегодня добрая... |
|||
7
kobzon2
05.01.19
✎
11:50
|
(6) Так праздники же ж. Вот и добрая)
Спасибо! |
|||
8
RomanYS
05.01.19
✎
12:20
|
Стандартный функционал корректно работает, по крайней мере до 20:
ФормСтрока = "Л = ru_RU; НД = Ложь"; ПарПредмета="единица,единицы,единиц,ж,,,,,0"; Для инд = 1 По 20 Цикл Сообщить(инд); Рез = ПолучитьСклоненияСтроки(ЧислоПрописью(инд, ФормСтрока, ПарПредмета),,"ПД = Родительный"); Для каждого Эл Из Рез Цикл Сообщить(" "+Эл); КонецЦикла; КонецЦикла; |
|||
9
RomanYS
05.01.19
✎
12:24
|
+(8) и дальше тоже:
Двух тысяч девятисот пятидесяти единиц Двух тысяч девятисот пятидесяти одной единицы Двух тысяч девятисот пятидесяти двух единиц Двух тысяч девятисот пятидесяти трех единиц Двух тысяч девятисот пятидесяти четырех единиц Двух тысяч девятисот пятидесяти пяти единиц Двух тысяч девятисот пятидесяти шести единиц Двух тысяч девятисот пятидесяти семи единиц Двух тысяч девятисот пятидесяти восьми единиц Двух тысяч девятисот пятидесяти девяти единиц |
|||
10
kobzon2
05.01.19
✎
12:31
|
(8) Стандартный, в смысле такая функция есть в типовых?
|
|||
11
RomanYS
05.01.19
✎
12:35
|
(10) в платформе. Тестировал на 8.3.13.1513
|
|||
12
kobzon2
05.01.19
✎
12:39
|
(11) В 8.3.12.1790 что то не находится даже ПолучитьСклоненияСтроки
|
|||
13
RomanYS
05.01.19
✎
12:49
|
(12) вывод очевиден)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |