Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 сен 2024, 00:30

Сумма прописью на другом языке?

Автор Constantus, 31 авг 2015, 07:59

0 Пользователей и 1 гость просматривают эту тему.

Constantus

Приветствую, Форумчане!
Необходимо использовать сумму прописью на туркменском языке. Как я понял, в стандарты 1с не входит этот язык.

Как можно создать некую функцию, которая будет выдавать результат суммы прописью на туркменском языке?

vitasw

ЧислоПрописью(<Число>, <ФорматнаяСтрока>, <ПараметрыПредметаИсчисления>)

Constantus

Мне нужно получить прописью сумму не на русском языке, а на туркменском, типа
On bäş müň iki ýüz kyrk sekiz manat 00 teňňe

На ВБА это довольно простой код:

Function TurkmenProp$(c#)
Dim st$, tg$, ed, des, razr, i&, m$
If c > 999999999999# Or c < 0 Then Exit Function

ed = Array("", "bir ", "iki ", ChrW(252) & ChrW(231) & " ", "d" & ChrW(246) & "rt ", "b" & ChrW(228) & ChrW(351) & " ", "alty" & " ", ChrW(253) & "edi ", "sekiz ", "dokuz ")
des = Array("", "on ", ChrW(253) & "igrimi ", "otuz ", "kyrk ", "elli ", "altmy" & ChrW(351) & " ", ChrW(253) & "etmi" & ChrW(351) & " ", "segsen ", "togsan ")
razr = Array("milliard ", "million ", "m" & ChrW(252) & ChrW(328) & " ", "")

st = Left(Format(c, "000000000000.00"), 12)
tg = Right(Format(c, " 0.00"), 2)

If CDbl(st) = 0 Then m = "nol "
For i = 1 To Len(st) Step 3
    If Mid(st, i, 3) <> "000" Then
        m = m & IIf(Mid(st, i, 1) = "0", "", ed(CInt(Mid(st, i, 1))) & ChrW(253) & ChrW(252) & "z ")
        m = m & des(CInt(Mid(st, i + 1, 1))) & ed(CInt(Mid(st, i + 2, 1))) & razr((i - 1) \ 3)
    End If
Next i
TurkmenProp = UCase(Left(m, 1)) & Mid(m, 2) & "manat " & tg & " te" & ChrW(328) & ChrW(328) & "e"
End Function


Может поможете мне его перевести на 1с?

Пытаюсь сам перевести, но опыта просто нету, выдает ошибки...
Добавлено: 31 авг 2015, 13:49


Ед = Новый Массив(10);
Ед[0] = "";
Ед[1] = "bir ";
Ед[2] = "iki ";
Ед[3] = "üç ";
Ед[4] = "dört ";
Ед[5] = "bäş ";
Ед[6] = "alty ";
Ед[7] = "ýedi ";
Ед[8] = "sekiz ";
Ед[9] = "dokuz ";

Дес = Новый Массив(10);
Дес[0] = "";
Дес[1] = "on ";
Дес[2] = "ýigrimi ";
Дес[3] = "otuz ";
Дес[4] = "kyrk ";
Дес[5] = "elli ";
Дес[6] = "altmyş ";
Дес[7] = "ýetmiş ";
Дес[8] = "segsen ";
Дес[9] = "togsan ";

Разр = Новый Массив(4);
Разр[0]= "milliard ";
Разр[1]= "million ";
Разр[2]= "müň ";
Разр[3]= "";

м="";
ст = Формат(Цел(Сумма), "ЧГ=0; ЧЦ=12; ЧВН=");
тг = ?((Сумма - Цел(Сумма))*100=0,"00", Формат((Сумма - Цел(Сумма))*100,"ЧГ=0; ЧЦ=2; ЧВН="));

Для цик = 1 По СтрДлина(ст) Цикл
Если Сред(ст,цик,3) <> "000"  Тогда
м = "" + м + ?(Сред(ст,цик,1)="0", "", Ед[Число(Сред(ст,цик,1))] + "ýüz ");
м = "" + м + Дес[Число(Сред(ст,цик+1,1))] + Ед[Число(Сред(ст,цик+2,1))] + Разр[Цел((цик - 1)/3)]; 
КонецЕсли;
цик = цик + 2;
КонецЦикла;


м = ВРег(Лев(м, 1)) + Сред(м, 2);

Возврат м + "manat " + тг + " teňňe";
   

Вот код на сумму прописью на туркменском. Перевел с ВБА на 1с. Обсудите на предмет подводных камней и куда эту функцию вставить, если к ней мне придется обращаться из разных документов?

Шохрух

Constantus, добрый день, как будет одиннадцать, двенадцать, тринадцать.... пожалуйста
 

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск