|
|
|
Дробное число прописью Ø |
☑ | ||
|---|---|---|---|---|
|
0
LpRT
18.03.05
✎
14:24
|
Как написать дробное число прописью, например 19.737 (х=19.737)
Если использовать выражение Формат(х,"ЧП"), то напишется "двадцать", а надо полностью. Собственно вопрос, как? |
|||
|
1
okiso
18.03.05
✎
14:26
|
*.SPL смотри !
|
|||
|
2
LpRT
18.03.05
✎
14:29
|
Посмотрел 1CV7.spl, что туда надо добавтиь, чтобы решить мою задачу. Файл ни разу не редактировался!
|
|||
|
3
okiso
18.03.05
✎
14:33
|
Формат(ИтСуммаСНДС, "ЧПДС") у меня так показывает !
|
|||
|
4
LpRT
18.03.05
✎
14:34
|
Мне надо НЕ в денежном формате.
|
|||
|
5
AVP
18.03.05
✎
14:42
|
//******************************************************************************
// ЧислоПрописью() // // Параметры: // ЗначЧисло - число, которое нужно представить прописью // // Возвращаемое значение: // строка, число представленное прописью. // // Описание: // Преобразует число в его представление пропись. В отличии от стандартной // функции формат умеет преобразовывать дробные числа с точностью до 3-х // знаков после запятой. Функция ЧислоПрописью(ЗначЧисло) Экспорт Перем Возвр; Перем ЦелЧасть, ДробЧасть; Перем Дробная; Перем Окончание; Перем ПоследнееСлово; ЦелЧасть = Цел(ЗначЧисло); ДробЧасть = Окр(ЗначЧисло - ЦелЧасть, 3); Если ДробЧасть=Окр(ДробЧасть,0) Тогда ДробЧасть = 0; Дробная = ""; ИначеЕсли ДробЧасть = Окр(ДробЧасть, 1) Тогда ДробЧасть = Окр(ДробЧасть, 1) * 10; Дробная = "десят"; ИначеЕсли ДробЧасть = Окр(ДробЧасть, 2) Тогда ДробЧасть = Окр(ДробЧасть, 2) * 100; Дробная = "сот"; Иначе ДробЧасть = ДробЧасть * 1000; Дробная = "тысячн"; КонецЕсли; Возвр = ""; Возвр = Возвр + ?(ПустоеЗначение(ЦелЧасть) = 1, "Ноль", СокрЛП(Формат(ЦелЧасть, "ЧП"))); Если Дробная <> "" Тогда // есть дробная часть // теперь займемся окончанием последнего слова целой части ПоследнееСлово = ""; Окончание = ""; Пока (Возвр <> "") И (Возвр = СокрП(Возвр)) Цикл // последний символ в строке не пробел ПоследнееСлово = Прав(Возвр, 1) + ПоследнееСлово; // добавляем последнюю букву Возвр = Лев(Возвр, СтрДлина(Возвр) - 1); // отрезаем последнюю букву КонецЦикла; Если Врег(ПоследнееСлово) = "ОДИН" Тогда // первую букву слова оставляем ПоследнееСлово = Лев(ПоследнееСлово, 1) + "дна"; Окончание = "ая"; Иначе Если (Врег(ПоследнееСлово) = "ДВА") Тогда ПоследнееСлово = Лев(ПоследнееСлово, 1) + "ве"; КонецЕсли; Окончание = "ых"; КонецЕсли; Возвр = Возвр + ПоследнееСлово + " цел" + Окончание + " " + НРег(СокрЛП(Формат(ДробЧасть, "ЧП"))); // теперь займемся окончанием последнего слова дробной части ПоследнееСлово = ""; Окончание = ""; Пока Возвр = СокрП(Возвр) Цикл // последний символ в строке не пробел ПоследнееСлово = Прав(Возвр, 1) + ПоследнееСлово; // добавляем последнюю букву Возвр = Лев(Возвр, СтрДлина(Возвр) - 1); // отрезаем последнюю букву КонецЦикла; Если Врег(ПоследнееСлово) = "ОДИН" Тогда // первую букву слова оставляем ПоследнееСлово = Лев(ПоследнееСлово, 1) + "дна"; Окончание = "ая"; Иначе Если (Врег(ПоследнееСлово) = "ДВА") Тогда ПоследнееСлово = Лев(ПоследнееСлово, 1) + "ве"; КонецЕсли; Окончание = "ых"; КонецЕсли; Возвр = Возвр + ПоследнееСлово + " " + Дробная + Окончание; КонецЕсли; Возврат Возвр; КонецФункции // ЧислоПрописью() |
|||
|
6
okiso
18.03.05
✎
14:45
|
Вот именно !
|
|||
|
7
мefisto
18.03.05
✎
14:45
|
X=19.737;
Y=Цел(X); Z=(X-Y)*1000; Сообщить(Формат(Y,"ЧП")+" "+Формат(Z,"ЧП")); |
|||
|
8
LpRT
18.03.05
✎
14:50
|
Всем спасибо, работает.
Особый респект AVP! |
|||
|
9
AVP
18.03.05
✎
14:52
|
Пожалуйста, тем более не мое :)))))
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |