Более тонкая работа с рублями и копейками в числе прописью
Понадобилось выводить вот такой текст из Сумма в Результат:
10 000 руб. 00 копеек (Десять тысяч рублей 00 копеек)
Как сделать это с только с помощью ЧислоПрописью не понял. Пришлось потрудиться:
Рублей = Цел(Сумма); Копеек = (Сумма - Цел(Сумма)) * 100; СуммаРублейПрописью1 = Формат(Рублей, "ЧДЦ=0; ЧГ=3,0") + " руб. " + Формат(Копеек, "ЧДЦ=2; ЧН=00") + " " + ФормаМножественногоЧисла("копейка", "копейки", "копеек", Копеек); СуммаРублейПрописью2 = ЧислоПрописью(ДанныеОбъекта.СуммаДоговора, "Л=ru_RU", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2"); Результат = "" + СуммаРублейПрописью1 + " (" + СуммаРублейПрописью2 + ")";
Использовал типовую функцию ФормаМножественногоЧисла:
// Функция преобразует строку к множественному числу // // Параметры: // Слово1 - форма слова в ед числе ("шкаф") // Слово2 - форма слова для числит 2-4 ("шкафа") // Слово3 - форма слова для числит 5-10 ("шкафов") // ЦелоеЧисло - целое число. // // Возвращаемое значение: // строку - одну из строк в зависимости от параметра ЦелоеЧисло. // // Описание: // Предназначена для формирования "правильной" подписи к числительным. // Функция ФормаМножественногоЧисла(Слово1, Слово2, Слово3, Знач ЦелоеЧисло) Экспорт // Изменим знак целого числа, иначе отрицательные числа будут неправильно преобразовываться. Если ЦелоеЧисло < 0 Тогда ЦелоеЧисло = -1 * ЦелоеЧисло; КонецЕсли; Если ЦелоеЧисло <> Цел(ЦелоеЧисло) Тогда // для нецелых чисел - всегда вторая форма Возврат Слово2; КонецЕсли; // остаток Остаток = ЦелоеЧисло%10; Если (ЦелоеЧисло >10) И (ЦелоеЧисло<20) Тогда // для второго десятка - всегда третья форма Возврат Слово3; ИначеЕсли Остаток=1 Тогда Возврат Слово1; ИначеЕсли (Остаток>1) И (Остаток<5) Тогда Возврат Слово2; Иначе Возврат Слово3; КонецЕсли; КонецФункции
1. использовать СтрШаблон (или аналог БСП ПодставитьПараметрыВСтроку) лаконичнее конкатенации
2. нет универсальности с валютами
1. про СтрШаблон не знал, искать в БСП аналог лень.
2. Валюты в данной задаче не были нужны.