Просклонять слово "рубли" после суммы

1. user1847230 04.01.23 11:16 Сейчас в теме
Есть сумма (например 12), нужно, чтобы получился результат "12 рублей". Как это можно сделать максимально эффективно?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
17. user5300 1047 04.01.23 14:51 Сейчас в теме
(13) Немного не практично, но вроде подойдет.

ПарамПредмета = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж,2";
    ФормСтрока = "Л=ru_RU; ДП=Ложь";         
	
	СуммаПрописью = ЧислоПрописью(Реквизит2,ФормСтрока, ПарамПредмета);  
	СуммаПрописью = СтрЗаменить(СуммаПрописью," ",Символы.ПС);
	
	Результат = Строка(Реквизит2) +" "+ ?(СтрЧислоСтрок(СуммаПрописью) > 3, 
					СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью) -2) + " "+
					СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью) -1) + " "+	
					СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью)), "");
Показать
user1816391; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Sashares 35 04.01.23 11:34 Сейчас в теме
8. user856012 14 04.01.23 11:47 Сейчас в теме
(7)
там нужно не прописью
А вы прочитали ТЗ? Непохоже:
нужно получить из числа строку вида 2500 рублей, или 252 рубля. и т.п.
Т.е. не всю сумму прописью, а число числом, а валюта с нужным склонением.

Заодно уж процитирую и и решение, на всякий случай:
извратился так
Валюта = СокрЛП(СтрЗаменить(СуммаПрописью, ЧислоПрописью(Сумма,ФормСтрока, ",,,,,,,,0" ),""));
9. Sashares 35 04.01.23 11:56 Сейчас в теме
(8)
извратился

Чтобы не извращаться, теперь такое умеет платформа сразу))
10. user856012 14 04.01.23 11:59 Сейчас в теме
(9)
Чтобы не извращаться
Замечу: автор не требовал "без извращений", он хотел "максимально эффективно".

А понятие эффективности у разных... людей - разное. Иногда - очень разное! ;-)
user1847230; Sashares; +2 Ответить
19. ilnur75 04.01.23 15:25 Сейчас в теме
(1) см.типовую конфигурацию , например УТ 11.4

ВалютаСтрока = ОбщегоНазначенияУТКлиентСервер.СклонениеСлова(
ВашеЧисло,
НСтр("ru='рубль'"), НСтр("ru='рубля'"), НСтр("ru='рублей'"), НСтр("ru='м'"));


Результат = Строка(ВашеЧисло) + " " + ВалютаСтрока ;
2. user1816391 04.01.23 11:19 Сейчас в теме
Используй ЧислоПрописью
user1847230; +1 Ответить
3. user1847230 04.01.23 11:20 Сейчас в теме
(2) Если использовать ЧислоПрописью, то цифры будет словами, а мне нужно получить склонение "рублей"
user1816391; +1 Ответить
5. Drovaru2 04.01.23 11:34 Сейчас в теме
7. user1816391 04.01.23 11:38 Сейчас в теме
(6) там нужно не прописью, выше писал уже про это
11. user1816391 04.01.23 12:27 Сейчас в теме
(9) а как это сделать без извращений?
12. Sashares 35 04.01.23 12:28 Сейчас в теме
13. user1847230 04.01.23 12:30 Сейчас в теме
(8)
ПарамПредмета = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";
			ФормСтрока = "Л=ru_RU; ДП=Ложь";         
			СуммаПрописью = ЧислоПрописью(Выборка1.Результат,ФормСтрока, ПарамПредмета);  
			ЧислоРуу = СокрЛП(СтрЗаменить(СуммаПрописью, ЧислоПрописью(Выборка1.Результат,ФормСтрока, ",,,,,,,,0" ),""));

сделал так и всё равно выводит с прописью
17. user5300 1047 04.01.23 14:51 Сейчас в теме
(13) Немного не практично, но вроде подойдет.

ПарамПредмета = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж,2";
    ФормСтрока = "Л=ru_RU; ДП=Ложь";         
	
	СуммаПрописью = ЧислоПрописью(Реквизит2,ФормСтрока, ПарамПредмета);  
	СуммаПрописью = СтрЗаменить(СуммаПрописью," ",Символы.ПС);
	
	Результат = Строка(Реквизит2) +" "+ ?(СтрЧислоСтрок(СуммаПрописью) > 3, 
					СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью) -2) + " "+
					СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью) -1) + " "+	
					СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью)), "");
Показать
user1816391; +1 Ответить
18. user5300 1047 04.01.23 15:04 Сейчас в теме
(17) Или так, если без копеек:

ПарамПредмета = "рубль, рубля, рублей, м,,,,,0";
    ФормСтрока = "Л=ru_RU; ДП=Ложь";         
	
	СуммаПрописью = ЧислоПрописью(Реквизит2,ФормСтрока, ПарамПредмета);  
	СуммаПрописью = СтрЗаменить(СуммаПрописью," ",Символы.ПС);
	
	Результат = Формат(Реквизит2,"ЧГ=3,0; ЧФ='Ч '") + СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью));
20. user856012 14 04.01.23 16:01 Сейчас в теме
(13)
сделал так и всё равно выводит с прописью
А если так:
ПарамПредмета = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";
ФормСтрока = "Л=ru_RU; ДП=Ложь";
СуммаПрописью = ЧислоПрописью(Выборка1.Результат, ФормСтрока, ПарамПредмета);
ЧислоРуу = Строка(Цел(Выборка1.Результат)) + Сред(СуммаПрописью, Найти(СуммаПрописью, " рубл"));

Конечно, тоже извращение... но вполне себе эффективное. И притом - с копейками! :-)
user1816391; +1 Ответить
14. user1816391 04.01.23 12:44 Сейчас в теме
(8) тут ведь будет без копеек
15. user856012 14 04.01.23 14:09 Сейчас в теме
(14) Вы - автор? Или лучше его знаете - нужны ему копейки или нет?
16. user1816391 04.01.23 14:14 Сейчас в теме
(15) мне кажется логичным, что если идёт диалог о суммах, то нужны копейки
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот