Есть сумма (например 12), нужно, чтобы получился результат "12 рублей". Как это можно сделать максимально эффективно?
---
Немного не практично, но вроде подойдет.

```1c
    ПарамПредмета = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж,2";
    ФормСтрока = "Л=ru_RU; ДП=Ложь";

    СуммаПрописью = ЧислоПрописью(Реквизит2,ФормСтрока, ПарамПредмета);
    СуммаПрописью = СтрЗаменить(СуммаПрописью," ",Символы.ПС);

    Результат = Строка(Реквизит2) +" "+ ?(СтрЧислоСтрок(СуммаПрописью) > 3,
    СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью) -2) + " "+
    СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью) -1) + " "+
    СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью)), ");
```
---
https://wonderland.v8.1c.ru/blog/sklonenie-slovosochetaniy-s-chislitelnymi/?ysclid=lcheixijry191475329
ПолучитьСклоненияСтрокиПоЧислу()
---
там нужно не прописью А вы прочитали ТЗ? Непохоже:
нужно получить из числа строку вида 2500 рублей, или 252 рубля. и т.п.
Т.е. не всю сумму прописью, а число числом, а валюта с нужным склонением.
Заодно уж процитирую и и решение, на всякий случай:
извратился так
Валюта = СокрЛП(СтрЗаменить(СуммаПрописью, ЧислоПрописью(Сумма,ФормСтрока, ",,,,,,,,0" ),""));
---
извратился
Чтобы не извращаться, теперь такое умеет платформа сразу))
---
Чтобы не извращаться Замечу: автор не требовал "без извращений", он хотел "максимально эффективно".

А понятие эффективности у разных... людей - разное. Иногда - очень разное! ;-)
---
см.типовую конфигурацию , например УТ 11.4

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

Результат = Строка(ВашеЧисло) + " " + ВалютаСтрока ;
---
Используй ЧислоПрописью
---
Если использовать ЧислоПрописью, то цифры будет словами, а мне нужно получить склонение "рублей"
---
ПолучитьСклоненияСтрокиПоЧислу()
https://wonderland.v8.1c.ru/blog/sklonenie-slovosochetaniy-s-chislitelnymi/
---
Баян: https://forum.infostart.ru/forum9/topic102802/
---
там нужно не прописью, выше писал уже про это
---
а как это сделать без извращений?
---
В 4 ответ
---
```1c
    ПарамПредмета = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";
    ФормСтрока = "Л=ru_RU; ДП=Ложь";
    СуммаПрописью = ЧислоПрописью(Выборка1.Результат,ФормСтрока, ПарамПредмета);
    ЧислоРуу = СокрЛП(СтрЗаменить(СуммаПрописью, ЧислоПрописью(Выборка1.Результат,ФормСтрока, ",,,,,,,,0" ),"));
```

сделал так и всё равно выводит с прописью
---
Немного не практично, но вроде подойдет.

```1c
    ПарамПредмета = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж,2";
    ФормСтрока = "Л=ru_RU; ДП=Ложь";

    СуммаПрописью = ЧислоПрописью(Реквизит2,ФормСтрока, ПарамПредмета);
    СуммаПрописью = СтрЗаменить(СуммаПрописью," ",Символы.ПС);

    Результат = Строка(Реквизит2) +" "+ ?(СтрЧислоСтрок(СуммаПрописью) > 3,
    СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью) -2) + " "+
    СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью) -1) + " "+
    СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью)), ");
```
---
Или так, если без копеек:

```1c
    ПарамПредмета = "рубль, рубля, рублей, м,,,,,0";
    ФормСтрока = "Л=ru_RU; ДП=Ложь";

    СуммаПрописью = ЧислоПрописью(Реквизит2,ФормСтрока, ПарамПредмета);
    СуммаПрописью = СтрЗаменить(СуммаПрописью," ",Символы.ПС);

    Результат = Формат(Реквизит2,"ЧГ=3,0; ЧФ='Ч '") + СтрПолучитьСтроку(СуммаПрописью,СтрЧислоСтрок(СуммаПрописью));
```
---
сделал так и всё равно выводит с прописью А если так:

```1c
    ПарамПредмета = "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2";
    ФормСтрока = "Л=ru_RU; ДП=Ложь";
    СуммаПрописью = ЧислоПрописью(Выборка1.Результат, ФормСтрока, ПарамПредмета);
    ЧислоРуу = Строка(Цел(Выборка1.Результат)) + Сред(СуммаПрописью, Найти(СуммаПрописью, " рубл"));
```

Конечно, тоже извращение... но вполне себе эффективное. И притом - с копейками! :-)
---
тут ведь будет без копеек
---
Вы - автор? Или лучше его знаете - нужны ему копейки или нет?
---
мне кажется логичным, что если идёт диалог о суммах, то нужны копейки