![]() |
|
v7: Преобразование числа в строку | ☑ | ||
---|---|---|---|---|
0
Samir
14.11.12
✎
09:03
|
Есть #ЧП, есть #ЧПДС,
ЧПДС - это для денежной величины с копейками ЧП - вывод количества, но округленно Бух утверждает что в 7-ке видела вывод с сотыми и тысячными, перерыл весь инет, не нашел. т.е. вывести 2,67 как "две целых шестьдесят семь тысячных". В 8-ке это есть, я знаю, но в 7-ке впервые слышу. Вопрос: БУХ врет? Или мои познания слишком скудны? |
|||
1
Mikeware
14.11.12
✎
09:04
|
Пропись()
|
|||
2
ЧеловекДуши
14.11.12
✎
09:06
|
Бух не врем, познания скудны. По сути, открою для тебя тайну. Язык программирования 8.х был почти полностью слизан из 1С 7.7 :)
Так что некоторый функционал, есть и в 7-ке :) |
|||
3
ЧеловекДуши
14.11.12
✎
09:07
|
+ >>>2,67 как "две целых шестьдесят семь тысячных".
В 7.7 выведет Два рубля и уже цифрами рисуется 67 копеек. Т.е. преобразует только целую часть числа. |
|||
4
ЧеловекДуши
14.11.12
✎
09:09
|
+ 2.67 - Две целых, шестьдесят семь СОТЫХ :)
|
|||
5
Sserj
14.11.12
✎
09:10
|
Ну дык пофантазируй:
2,67 = 2 + 0.67 => сделай две прописи и получи одну строку |
|||
6
Ёпрст
гуру
14.11.12
✎
09:14
|
||||
7
Samir
14.11.12
✎
09:39
|
На случай если кому-нить еще понадобится:
//****************************************************************************** // ЧислоПрописью() // // Параметры: // ЗначЧисло - число, которое нужно представить прописью // // Возвращаемое значение: // строка, число представленное прописью. // // Описание: // Преобразует число в его представление пропись. В отличии от стандартной // функции формат умеет преобразовывать дробные числа с точностью до 3-х // знаков после запятой. Функция ЧислоПрописью(ЗначЧисло) Экспорт Перем Возвр; Перем ЦелЧасть, ДробЧасть; Перем Дробная; Перем Окончание; Перем ПоследнееСлово; ЦелЧасть = Цел(ЗначЧисло); ДробЧасть = Окр(ЗначЧисло - ЦелЧасть, 3); Если ДробЧасть=Окр(ДробЧасть,0) Тогда ДробЧасть = 0; Дробная = ""; ИначеЕсли ДробЧасть = Окр(ДробЧасть, 1) Тогда ДробЧасть = Окр(ДробЧасть, 1) * 10; Дробная = "десят"; ИначеЕсли ДробЧасть = Окр(ДробЧасть, 2) Тогда ДробЧасть = Окр(ДробЧасть, 2) * 100; Дробная = "сот"; Иначе ДробЧасть = ДробЧасть * 1000; Дробная = "тысячн"; КонецЕсли; Возвр = ""; Возвр = Возвр + ?(ПустоеЗначение(ЦелЧасть) = 1, "Ноль", СокрЛП(Формат(ЦелЧасть, "ЧП"))); Если Дробная <> "" Тогда // есть дробная часть // теперь займемся окончанием последнего слова целой части ПоследнееСлово = ""; Окончание = ""; Пока (Возвр <> "") И (Возвр = СокрП(Возвр)) Цикл // последний символ в строке не пробел ПоследнееСлово = Прав(Возвр, 1) + ПоследнееСлово; // добавляем последнюю букву Возвр = Лев(Возвр, СтрДлина(Возвр) - 1); // отрезаем последнюю букву КонецЦикла; Если Врег(ПоследнееСлово) = "ОДИН" Тогда // первую букву слова оставляем ПоследнееСлово = Лев(ПоследнееСлово, 1) + "дна"; Окончание = "ая"; Иначе Если (Врег(ПоследнееСлово) = "ДВА") Тогда ПоследнееСлово = Лев(ПоследнееСлово, 1) + "ве"; КонецЕсли; Окончание = "ых"; КонецЕсли; Возвр = Возвр + ПоследнееСлово + " цел" + Окончание + " " + НРег(СокрЛП(Формат(ДробЧасть, "ЧП"))); // теперь займемся окончанием последнего слова дробной части ПоследнееСлово = ""; Окончание = ""; Пока Возвр = СокрП(Возвр) Цикл // последний символ в строке не пробел ПоследнееСлово = Прав(Возвр, 1) + ПоследнееСлово; // добавляем последнюю букву Возвр = Лев(Возвр, СтрДлина(Возвр) - 1); // отрезаем последнюю букву КонецЦикла; Если Врег(ПоследнееСлово) = "ОДИН" Тогда // первую букву слова оставляем ПоследнееСлово = Лев(ПоследнееСлово, 1) + "дна"; Окончание = "ая"; Иначе Если (Врег(ПоследнееСлово) = "ДВА") Тогда ПоследнееСлово = Лев(ПоследнееСлово, 1) + "ве"; КонецЕсли; Окончание = "ых"; КонецЕсли; Возвр = Возвр + ПоследнееСлово + " " + Дробная + Окончание; КонецЕсли; Возврат Возвр; КонецФункции // ЧислоПрописью() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |