![]() |
![]() |
![]() |
|
Namedecl.dll - подойдет для склонения чисел в родительный падеж? | ☑ | ||
---|---|---|---|---|
0
Trance_1C
19.07.13
✎
06:06
|
Подскажите стоит ли ее подключать, или она только для склонения ФИО?
мне нужно на выходе получить число строкой в родительном падеже 10 = Десяти 37 = Тридцати семи... пока нашел только это, но как-то громоздко выглядит: //Представление числа до 999 в родит. падеже - 10 = Десяти... Функция СколнениеЦифр(Цифра) Экспорт НачальнаяСтрока = "" + Цифра; КонечнаяСтрока = ""; ПредыдушаяЦифра = ""; КоличествоЦифр = СтрДлина(НачальнаяСтрока); СтруктураЕдиницы = Новый Массив; СтруктураЕдиницы.Вставить(1, "одной"); СтруктураЕдиницы.Вставить(2, "двух"); СтруктураЕдиницы.Вставить(3, "трех"); СтруктураЕдиницы.Вставить(4, "четырех"); СтруктураЕдиницы.Вставить(5, "пяти"); СтруктураЕдиницы.Вставить(6, "шести"); СтруктураЕдиницы.Вставить(7, "семи"); СтруктураЕдиницы.Вставить(8, "восьми"); СтруктураЕдиницы.Вставить(9, "девяти"); СтруктураВторойДесяток = Новый Массив; СтруктураВторойДесяток.Вставить(0, "десяти"); СтруктураВторойДесяток.Вставить(1, "одиннадцати"); СтруктураВторойДесяток.Вставить(2, "двенадцати"); СтруктураВторойДесяток.Вставить(3, "тринадцати"); СтруктураВторойДесяток.Вставить(4, "четырнадцати"); СтруктураВторойДесяток.Вставить(5, "пятнадцати"); СтруктураВторойДесяток.Вставить(6, "шестнадцати"); СтруктураВторойДесяток.Вставить(7, "семнадцати"); СтруктураВторойДесяток.Вставить(8, "восемнадцати"); СтруктураВторойДесяток.Вставить(9, "девятнадцати"); СтруктураДесятки = Новый Массив; СтруктураДесятки.Вставить(2, "двадцати"); СтруктураДесятки.Вставить(3, "тридцати"); СтруктураДесятки.Вставить(4, "сорока"); СтруктураДесятки.Вставить(5, "пятидесяти"); СтруктураДесятки.Вставить(6, "шестидесяти"); СтруктураДесятки.Вставить(7, "семидесяти"); СтруктураДесятки.Вставить(8, "восьмидесяти"); СтруктураДесятки.Вставить(9, "девяносто"); СтруктураСотни = Новый Массив; СтруктураСотни.Вставить(1, "ста"); СтруктураСотни.Вставить(2, "двухсот"); СтруктураСотни.Вставить(3, "трехсот"); СтруктураСотни.Вставить(4, "четырехсот"); СтруктураСотни.Вставить(5, "пятиста"); СтруктураСотни.Вставить(6, "шестиста"); СтруктураСотни.Вставить(7, "семиста"); СтруктураСотни.Вставить(8, "восьмиста"); СтруктураСотни.Вставить(9, "девятиста"); СтруктураТысячи = Новый Массив; СтруктураТысячи.Вставить(1, "одной тысячи"); СтруктураТысячи.Вставить(2, "двух тысяч"); СтруктураТысячи.Вставить(3, "трех тысяч"); СтруктураТысячи.Вставить(4, "четырех тысяч"); СтруктураТысячи.Вставить(5, "пяти тысяч"); СтруктураТысячи.Вставить(6, "шести тысяч"); СтруктураТысячи.Вставить(7, "семи тысяч"); СтруктураТысячи.Вставить(8, "восьми тысяч"); СтруктураТысячи.Вставить(9, "девяти тысяч"); ТекущаяЦифраПрописью = ""; для х = 1 по КоличествоЦифр цикл ТекущаяЦифра = Сред(НачальнаяСтрока, х, 1); //Если 1,2,3,4,5.... Если КоличествоЦифр = 1 Тогда ТекущаяЦифраПрописью = ТекущаяЦифраПрописью + СтруктураЕдиницы[Число(ТекущаяЦифра)]; КонечнаяСтрока = КонечнаяСтрока + ТекущаяЦифраПрописью; Продолжить; КонецЕсли; //Если 10,11,12,13,14... Если КоличествоЦифр = 2 И х = 1 И Число(ТекущаяЦифра) = 1 Тогда Продолжить; КонецЕсли; Если КоличествоЦифр = 2 И х = 2 И ТекущаяЦифраПрописью = "" Тогда ТекущаяЦифраПрописью = ТекущаяЦифраПрописью + СтруктураВторойДесяток[Число(ТекущаяЦифра)]; КонечнаяСтрока = КонечнаяСтрока + ТекущаяЦифраПрописью; Продолжить; КонецЕсли; //Если 20-99 Если КоличествоЦифр = 2 И х = 1 И Число(ТекущаяЦифра) <> 1 Тогда ТекущаяЦифраПрописью = ТекущаяЦифраПрописью + СтруктураДесятки[Число(ТекущаяЦифра)]; КонечнаяСтрока = КонечнаяСтрока + ТекущаяЦифраПрописью; Продолжить; КонецЕсли; Если КоличествоЦифр = 2 И х = 2 И ТекущаяЦифраПрописью <> "" Тогда ТекущаяЦифраПрописью = СтруктураЕдиницы[Число(ТекущаяЦифра)]; КонечнаяСтрока = КонечнаяСтрока + " " + ТекущаяЦифраПрописью; Продолжить; КонецЕсли; //Если 100-999 Если КоличествоЦифр = 3 И х = 1 Тогда ТекущаяЦифраПрописью = ТекущаяЦифраПрописью + СтруктураСотни[Число(ТекущаяЦифра)]; КонечнаяСтрока = КонечнаяСтрока + ТекущаяЦифраПрописью; Продолжить; КонецЕсли; Если КоличествоЦифр = 3 И х = 2 И (Число(ТекущаяЦифра) = 1 ИЛИ Число(ТекущаяЦифра) = 0) Тогда ПредыдушаяЦифра = ТекущаяЦифра; Продолжить; КонецЕсли; Если КоличествоЦифр = 3 И х = 3 И Число(ПредыдушаяЦифра) = 1 Тогда ТекущаяЦифраПрописью = СтруктураВторойДесяток[Число(ТекущаяЦифра)]; КонечнаяСтрока = КонечнаяСтрока + " " + ТекущаяЦифраПрописью; Продолжить; КонецЕсли; Если КоличествоЦифр = 3 И х = 2 И Число(ТекущаяЦифра) <> 1 Тогда ТекущаяЦифраПрописью = СтруктураДесятки[Число(ТекущаяЦифра)]; КонечнаяСтрока = КонечнаяСтрока + " " + ТекущаяЦифраПрописью; ПредыдушаяЦифра = ТекущаяЦифра; Продолжить; КонецЕсли; Если КоличествоЦифр = 3 И х = 3 Тогда Если Число(ТекущаяЦифра) <> 0 Тогда ТекущаяЦифраПрописью = СтруктураЕдиницы[Число(ТекущаяЦифра)]; КонечнаяСтрока = КонечнаяСтрока + " " + ТекущаяЦифраПрописью; Продолжить; Иначе Продолжить; КонецЕсли; КонецЕсли; КонецЦикла; Возврат КонечнаяСтрока; КонецФункции |
|||
1
Trance_1C
19.07.13
✎
06:07
|
может есть еще варианты? :)
|
|||
2
Cube
19.07.13
✎
06:08
|
(0) Весь цивилизованный мир пишет сумму прописью в именительном падеже. Вы решили выделиться?
|
|||
3
Trance_1C
19.07.13
✎
06:09
|
мне нужно выводить фразы типа - "обязуется оплатить в течении 3 (трех) дней"... и т.п.
|
|||
4
Cube
19.07.13
✎
06:17
|
(3) Ну так можно перефразировать и получить число в именительном падеже.
|
|||
5
Trance_1C
19.07.13
✎
06:25
|
(4) невозможно перефразировать, юристы дали форму - ее нужно разместить в 1С.
Перефразировать можно накладную в ларьке. |
|||
6
Мимохожий Однако
19.07.13
✎
07:47
|
Тогда напиши свою функцию склонения чисел.
|
|||
7
shuhard
19.07.13
✎
07:49
|
(5)[Перефразировать можно накладную в ларьке.]
дык ты в ларьке и работаешь |
|||
8
Cube
19.07.13
✎
07:59
|
(5) Ну, если у вас юристы - это истина в последней инстанции, то да, суши весла...
|
|||
9
Мимохожий Однако
19.07.13
✎
08:09
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |