Имя: Пароль:
1C
1C 7.7
v7: Масса прописью
,
0 КонецЦикла
 
30.10.13
21:55
У кого-то есть готовая функция массы прописью?
Чтобы не писать кг и гр поделив число, а нормально забацать: "двадцать килограммов сто семьдесят граммов"
1 Armando
 
30.10.13
21:58
Так же как сумма прописью не? Тока вместо рублей килограммы, копейки - граммы
2 КонецЦикла
 
30.10.13
21:59
воно не так как надо
двадцать киллограммов 170 граммов
3 EvgeniuXP
 
30.10.13
22:03
170 переведи отдельно в слово, потом замени на 170.
4 КонецЦикла
 
30.10.13
22:06
Эх... не прокатила хлява
5 DGorgoN
 
30.10.13
22:14
(4) Ты не только хляву. но и кого угодно не прокатим. 1Сники ж, жадные ж..
6 Толич
 
30.10.13
22:17
ПараметрыПредметаИсчисления = "килограмм, килограмма, килограммов, м, грамм, грамма, граммов, м, 3";
ФорматнаяСтрока = "Л=ru_RU; ДП=Истина";
Сообщить(ЧислоПрописью(ВыводимоеЧисло, ФорматнаяСтрока, ПараметрыПредметаИсчисления));
Строковое представление числа - как это делается?
7 Armando
 
30.10.13
22:24
(6) семерка же
8 DGorgoN
 
30.10.13
22:26
(7) Можно 8-ку вызывать и в ней форматить!
9 Толич
 
30.10.13
22:27
Функция ЧислоПрописью(ЗначЧисло,ДП=1)
  
  Перем Возвр;
  Перем ЦелЧасть, ДробЧасть;
  Перем Дробная;
  Перем Окончание;
  Перем ПоследнееСлово;
  ЦелЧасть = Цел(ЗначЧисло);
  ДробЧасть = Окр(ЗначЧисло - ЦелЧасть,4);
  Возвр = "";
  Возвр = Возвр + ?(ПустоеЗначение(ЦелЧасть) = 1, "Ноль", СокрЛП(Формат(ЦелЧасть, "ЧП")));
  Если ДробЧасть <> 0 Тогда // есть дробная часть
    Если ДробЧасть=Окр(ДробЧасть,0) Тогда
      ДробЧасть = 0;
      Дробная = "";
    ИначеЕсли ДробЧасть = Окр(ДробЧасть, 1) Тогда
      ДробЧасть = Окр(ДробЧасть, 1) * 10;
      Дробная = "десят";
    ИначеЕсли ДробЧасть = Окр(ДробЧасть, 2) Тогда
      ДробЧасть = Окр(ДробЧасть, 2) * 100;
      Дробная = "сот";
    ИначеЕсли ДробЧасть = Окр(ДробЧасть, 3) Тогда
      ДробЧасть = ДробЧасть * 1000;
      Дробная = "тысячн";
    Иначе
      ДробЧасть = ДробЧасть * 10000;
      Дробная = "десятитысячн";
    КонецЕсли;
    // теперь займемся окончанием последнего слова целой части
    ПоследнееСлово = "";
    Окончание = "";
    Пока (Возвр <> "") И (Возвр = СокрП(Возвр)) Цикл // последний символ в строке не пробел
      ПоследнееСлово = Прав(Возвр, 1) + ПоследнееСлово; // добавляем последнюю букву
      Возвр = Лев(Возвр, СтрДлина(Возвр) - 1); // отрезаем последнюю букву
    КонецЦикла;
    Если Врег(ПоследнееСлово) = "ОДИН" Тогда
      // первую букву слова оставляем
      ПоследнееСлово = Лев(ПоследнееСлово, 1) + "дна";
      Окончание = "ая";
    Иначе
      Если (Врег(ПоследнееСлово) = "ДВА") Тогда
        ПоследнееСлово = Лев(ПоследнееСлово, 1) + "ве";
      КонецЕсли;
      Окончание = "ых";
    КонецЕсли;
    
    Если ДП<>0 Тогда
      Возвр = Возвр + ПоследнееСлово + " цел" + Окончание + " " + НРег(СокрЛП(Формат(ДробЧасть, "ЧП")));
      // теперь займемся окончанием последнего слова дробной части
      ПоследнееСлово = "";
      Окончание = "";
      Пока Возвр = СокрП(Возвр) Цикл // последний символ в строке не пробел
        ПоследнееСлово = Прав(Возвр, 1) + ПоследнееСлово; // добавляем последнюю букву
        Возвр = Лев(Возвр, СтрДлина(Возвр) - 1); // отрезаем последнюю букву
      КонецЦикла;
      Если Врег(ПоследнееСлово) = "ОДИН" Тогда
        // первую букву слова оставляем
        ПоследнееСлово = Лев(ПоследнееСлово, 1) + "дна";
        Окончание = "ая";
      Иначе
        Если (Врег(ПоследнееСлово) = "ДВА") Тогда
          ПоследнееСлово = Лев(ПоследнееСлово, 1) + "ве";
        КонецЕсли;
        Окончание = "ых";
      КонецЕсли;
      Возвр = Возвр + ПоследнееСлово + " " + Дробная + Окончание;
    Иначе
      Возвр = Возвр + ПоследнееСлово + " цел" + Окончание + " " + СокрЛП(Формат(ДробЧасть,"Ч 18.0"));
      // теперь займемся окончанием последнего числа
      ПоследнееСлово = Прав(Возвр,1);
      Окончание = "";
      Если ПоследнееСлово = "1" Тогда
        Окончание = "ая";
      Иначе
        Окончание = "ых";
      КонецЕсли;
      Возвр = Возвр + " " + Дробная + Окончание;
    КонецЕсли;
  КонецЕсли;
  Возврат Возвр;
КонецФункции // ЧислоПрописью()

Масса брутто прописью в ТОРГ-12. Возможно ли это?

Скоро буду как телепатБот. =)
10 Сияющий Асинхраль
 
30.10.13
23:03
(0) Да не надо здесь ничего писать. Создай файл прописи для килограмм-грамм и все. Чтобы посмотреть на подобный файл, зайди в каталог тиса, там файл usd.* (расширение не помню). По аналогии сотвори то что надо...
11 КонецЦикла
 
30.10.13
23:06
(9) Видел это поиском, но т.к. не увидел килограммов и изумило кол-во текста - поспешил закрыть
12 КонецЦикла
 
30.10.13
23:07
(10) да, надо 2 файла создать и не ипать моск
13 КонецЦикла
 
30.10.13
23:07
Пока не добрался еще. Знаю что просто, но временная жаба дущит :)
14 Сияющий Асинхраль
 
30.10.13
23:09
(11) для варианта (10) нужно иметь файл прописи и четыре строки кода для его использования
15 КонецЦикла
 
30.10.13
23:46
(14) вот именно
16 Ненавижу 1С
 
гуру
30.10.13
23:56
(15) тебе впадлу добавить?
17 Злопчинский
 
31.10.13
01:34
КЦ, ты мну поразил... я такую хрень лет 10 назад пришпандоривал.. сбацал файл прописи и все... граммы выделял отдельно потом кг заменял на гр
18 zak555
 
31.10.13
09:53
(17) файл прописи использовать необязательно, достаточно сформировать СЗ
19 КонецЦикла
 
31.10.13
09:55
(17) Привет, не ипи моск плиз
Я еще не добрался до этого
20 Ёпрст
 
31.10.13
09:57
(0) возьми на сайте Рупора.
21 Ёпрст
 
31.10.13
10:03
http://zalil.ru/34791603
модернизированная Uho с кубани
22 КонецЦикла
 
31.10.13
10:59
(21) Спасибо, посморим
23 пипец
 
31.10.13
11:15
мдааа , еще на 6.0 все работало
24 КонецЦикла
 
31.10.13
11:35
(21) Это полный улет, спасипки
(23) Так-с...
25 zak555
 
31.10.13
12:42
(21) надо был весь исходный код выложить


??????? ?????????????(??,???1,???2,???3,???)
    Speller=?????????????("??????????????");
    Money=?????????????("??????????????");
    Money.??????????????????????(""""+???1+""","""+???2+""","""+???3+""","""","""","""","""+?(???=1,"?","?")+"""");
    Speller.????????????????(Money,"Money");
    ???????(Speller);
    ??? = ??????(???(??),"????");
    ??? = ???(???,????????(???)-2);

    ??????? ???;
????????????    

????????? ??()
    ???????????=??????(??????(?,"?15."+??????));      
    ?????=???(???????????);
    ??????????=?????(????(""+???????????+".0",?????(""+???????????+".0",".")+1));
    ????????(??????(?((???????????????????=0) ? (?????=0),"",?????????????(?????,??????(???11),??????(???12),??????(???13),???1))
    +?((????????????????????????=0) ? (??????????=0) ,""," "+????(?????????????(??????????,??????(???21),??????(???22),??????(???23),???2)))));
??????????????


?=1234.56789;
???11="?????";???12="?????";???13="????";
???21="?????????";???22="??????????";???23="???????????";
???1=2;???2=1;      
??????=3;  
????????????????????????=1;
???????????????????=1
26 zak555
 
31.10.13
12:42
//// за основу взята обработка avb:
////                  
////                   Alexey Bazhitov aka avb
////                    Moscow,  october 2003
////                  mailto: [email protected]
////
//// от исходной обработки осталась форма,
//// алгоритм написан заново by Uho, [email protected]



Функция ЧислоПрописью(зн,стр1,стр2,стр3,пол)
    Speller=СоздатьОбъект("СписокЗначений");
    Money=СоздатьОбъект("СписокЗначений");
    Money.ИзСтрокиСРазделителями(""""+стр1+""","""+стр2+""","""+стр3+""","""","""","""","""+?(пол=1,"М","Ж")+"""");
    Speller.ДобавитьЗначение(Money,"Money");
    Пропись(Speller);
    рез = Формат(Цел(зн),"ЧПДС");
    рез = Лев(рез,СтрДлина(рез)-2);

    Возврат рез;
КонецФункции    

Процедура ОК()
    Округленное=СокрЛП(Формат(Ч,"Ч15."+Округл));      
    Целые=Цел(Округленное);
    Десятичные=Число(Сред(""+Округленное+".0",Найти(""+Округленное+".0",".")+1));
    Сообщить(СокрЛП(?((ПоказыватьЦелыйНуль=0) И (Целые=0),"",ЧислоПрописью(Целые,СокрЛП(стр11),СокрЛП(стр12),СокрЛП(стр13),пол1))
    +?((ПоказыватьДесятичныйНуль=0) И (Десятичные=0) ,""," "+Нрег(ЧислоПрописью(Десятичные,СокрЛП(стр21),СокрЛП(стр22),СокрЛП(стр23),пол2)))));
КонецПроцедуры


ч=1234.56789;
стр11="тонна";стр12="тонны";стр13="тонн";
стр21="килограмм";стр22="килограмма";стр23="килограммов";
пол1=2;пол2=1;      
округл=3;  
ПоказыватьДесятичныйНуль=1;
ПоказыватьЦелыйНуль=1
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс