Имя: Пароль:
1C
1C 7.7
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
(0) так что ли надо ?

http://s2.ipicture.ru/uploads/20121114/ylDn18Ir.jpg
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) + "ве";
          КонецЕсли;
           
          Окончание = "ых";
      КонецЕсли;
       
      Возвр = Возвр + ПоследнееСлово + " " + Дробная + Окончание;
  КонецЕсли;

  Возврат Возвр;
   
КонецФункции // ЧислоПрописью()