ЧислоПрописью с дефисами

1. netesoff 4 12.12.19 08:22 Сейчас в теме
Всем привет.
Можно ли стандартной функцией ЧислоПрописью() получить пропись в следующем формате:
Twenty-four thousand one hundred thirty-six dollars and 69 cents? Вроде как по правилам именно такое представление является корректным.

Вопрос только в дефисах при выводе составного числительного twenty-four, thirty-six.
Переключение локализации между американским/британским английским не помогло, использование упрощенной/классической прописи тоже. Платформа 8.3.15.1656
Найденные решения
9. user856012 13 12.12.19 11:34 Сейчас в теме
(8)
почему 48?
Пардон, это я как 1С-ник посчитал, а не как программист.
вроде 9 всего
Не согласен (в первую очередь с самим собой в (7)), достаточно всего 6:
"ty o" > "ty-o" "ty t" > "ty-t" "ty f" > "ty-f" "ty s" > "ty-s" "ty e" > "ty-e" "ty n" > "ty-n"
user774630; +1 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ice-net 19 12.12.19 09:36 Сейчас в теме
(1) Мне кажется обойтись одной лишь этой функцией не выйдет.
или писать аналог этой функции с нужным результатом или использовать стрзаменить() и менять, или какие-то сторонние решения.
5. netesoff 4 12.12.19 10:24 Сейчас в теме
(2) Да, похоже только так
3. user-z99999 67 12.12.19 09:38 Сейчас в теме
Сообщить(ЧислоПрописью(1234.56, "Л=en_US;ДП=Истина", "dollar,dollars,cent,cents,2"));
4. netesoff 4 12.12.19 10:24 Сейчас в теме
(3) без обид, но сами-то пробовали посмотреть результат?
мне такое возвращается: "One thousand two hundred thirty four dollars fifty six cents"
требуемый вариант "One thousand two hundred thirty-four dollars and fifty-six cents"
6. user-z99999 67 12.12.19 10:26 Сейчас в теме
(4)
А далее, результат обработай через СтрЗаменить
Можешь написать свою функцию.
7. user856012 13 12.12.19 11:01 Сейчас в теме
(6)
А далее, результат обработай через СтрЗаменить
Ага, всего-то 48 замен. ;)
8. EVKash 14 12.12.19 11:24 Сейчас в теме
(7) почему 48? вроде 9 всего
"ty one" > "ty-one" ..... "ty nine" > "ty-nine"
9. user856012 13 12.12.19 11:34 Сейчас в теме
(8)
почему 48?
Пардон, это я как 1С-ник посчитал, а не как программист.
вроде 9 всего
Не согласен (в первую очередь с самим собой в (7)), достаточно всего 6:
"ty o" > "ty-o" "ty t" > "ty-t" "ty f" > "ty-f" "ty s" > "ty-s" "ty e" > "ty-e" "ty n" > "ty-n"
user774630; +1 Ответить
11. EVKash 14 12.12.19 11:39 Сейчас в теме
(9) twenty thousand?
я бы не мудрил ;)
12. user856012 13 12.12.19 11:43 Сейчас в теме
(11)
twenty thousand?
Ну откуда у программиста такие деньги? ;)
15. user856012 13 13.12.19 10:25 Сейчас в теме
(11)
я бы не мудрил ;)
А я все-таки еще чуть-чуть помудрил и сократил до трех замен:

ПредставлениеСуммы = СтрЗаменить(СтрЗаменить(СтрЗаменить(ПредставлениеСуммы,"ty ","ty-"),"ty-thousand","ty thousand"),"ty-dollar","ty dollar");


Для богатых - четыре замены:

ПредставлениеСуммы = СтрЗаменить(СтрЗаменить(СтрЗаменить(СтрЗаменить(ПредставлениеСуммы,"ty ","ty-"),"ty-million","ty million"),"ty-thousand","ty thousand"),"ty-dollar","ty dollar");
16. EVKash 14 13.12.19 15:26 Сейчас в теме
10. netesoff 4 12.12.19 11:39 Сейчас в теме
Может кому еще понадобится

Процедура ПреобразоватьПредставлениеПоПравилу(ПредставлениеСуммы)
	
	Для йота = 21 По 99 Цикл
		
		// составное числительное в начале строки
		ТекПредставление = ЧислоПрописью(йота, "L=en_US;НП=Ложь;", ",,,,0");
		Если СтрНайти(ПредставлениеСуммы, ТекПредставление) Тогда
			ПредставлениеСуммы = СтрЗаменить(ПредставлениеСуммы, ТекПредставление, СтрЗаменить(ТекПредставление, " ", "-"));
		КонецЕсли;	
		
		// составное числительное в середине строки
		ТекПредставление = НРег(ТекПредставление);
		Если СтрНайти(ПредставлениеСуммы, ТекПредставление) Тогда
			ПредставлениеСуммы = СтрЗаменить(ПредставлениеСуммы, ТекПредставление, СтрЗаменить(ТекПредставление, " ", "-"));
		КонецЕсли;	
		
	КонецЦикла;	
	
КонецПроцедуры
Показать
13. EVKash 14 12.12.19 11:43 Сейчас в теме
(10) 79 итераций? по 2 стрнайти? оптимальность? не... не слышали
user774630; +1 Ответить
14. netesoff 4 13.12.19 04:36 Сейчас в теме
(13) Да, Ваш вариант лучше.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)