Функция ЧислоПрописьюУзб(simv) Экспорт преобразует число, число с прописью.
Можно поместить в общую модуль, и обращаться к этой функции. Буквы к, х, у, г остались не измененным, то есть например число 40 пишется как «кирк» .
Функция ЧислоПрописьюУзб(simv) Экспорт
s1 = Новый массив(22);
s2 = Новый массив(12);
s4 = Новый массив(12);
s1[1] = "бир";
s1[2] = "икки";
s1[3] = "уч";
s1[4] = "турт";
s1[5] = "беш";
s1[6] = "олти";
s1[7] = "етти";
s1[8] = "саккиз";
s1[9] = "туккиз";
s1[10] = "ун";
s1[11]="ун бир";
s1[12]="ун икки";
s1[13]="ун уч";
s1[14]="ун турт";
s1[15]="ун беш";
s1[16]="ун олти";
s1[17]="ун етти";
s1[18]="ун саккиз";
s1[19]="ун туккиз";
s1[20]="йигирма";
s1[21]="";
s2[1] = "ун";
s2[2] = "йигирма";
s2[3] = "уттиз";
s2[4] = "кирк";
s2[5] = "эллик";
s2[6] = "олтмиш";
s2[7] = "етмиш";
s2[8] = "саксон";
s2[9] = "туксон";
s2[10] = "юз";
s2[11] = "";
s4[1] = "бир юз";
s4[2] = "икки юз";
s4[3] = "уч юз";
s4[4] = "турт юз";
s4[5] = "беш юз";
s4[6] = "олти юз";
s4[7] = "етти юз";
s4[8] = "саккиз юз";
s4[9] = "туккиз юз";
s4[10] = "минг";
s4[11] = "";
slova = "";
word = "";
ss0 = СтрЗаменить(simv,Символы.НПП,"");
ss1 = Цел(Число(ss0));
k = СтрДлина(ss1);
if k > 9 then
n = k-9;
mlrd = лев(ss1,n);
word=aniq(mlrd,s1,s2,s4);
slova=word+" миллиaрд";
mln=Сред(СокрЛП(ss1),n+1,3);
if Число(mln)=0 then
word="";
slova=slova+" "+word;
else
word = aniq(mln,s1,s2,s4);
slova=slova+" "+word+" миллион";
endif;
ming=Сред(СокрЛП(ss1),n+4,3);
if Число(ming)=0 then
word="";
slova=slova+" "+word;
else
word = aniq(ming,s1,s2,s4);
slova=slova+" "+word+" минг";
endif;
uz=Сред(СокрЛП(ss1),n+7,3);
if Число(uz)=0 then
word="";
slova=slova+" "+word+" сум";
else
word = aniq(uz,s1,s2,s4);
slova=slova+" "+word+" сум";
endif
else
if 6 n=k-6;
mln=Сред(СокрЛП(ss1),1,n);
word = aniq(mln,s1,s2,s4);
slova=СокрЛП(slova)+" "+word+" миллион";
ming=Сред(СокрЛП(ss1),n+1,3);
mm=0;
if Число(ming)=0 then
word="";
slova=slova+" "+word;
else
mm=1;
word = aniq(ming,s1,s2,s4);
slova=slova+" "+word+" минг";
endif;
uz=Сред(СокрЛП(ss1),n+4,3);
if Число(uz)=0 then
word="";
slova=slova+" "+word+" сум";
else
word = aniq(uz,s1,s2,s4);
slova=slova+" "+word+" сум";
endif;
else
if 3 n=k-3;
ming=Сред(СокрЛП(ss1),1,n);
if Число(ming)=0 then
word="";
else
word= aniq(ming,s1,s2,s4);
slova=СокрЛП(slova)+" "+word+" минг";
endif;
uz=Сред(СокрЛП(ss1),n+1,3);
if Число(uz)=0 then
word="";
slova=slova+" "+word+" сум";
else
word = aniq(uz,s1,s2,s4);
slova=slova+" "+word+" сум";
endif;
else
if k n=k-3;
uz=Сред(СокрЛП(ss1),1,k);
if Число(uz)=0 then
word="";
slova=slova+" "+word+" сум";
else
word = aniq(uz,s1,s2,s4);
slova=slova+" "+word+" сум";
endif;
endif;
endif;
endif;
endif;
monet=simv-цел(simv);
if monet>0 then
slova=СокрЛП(slova)+" "+Строка(monet*100)+" тийин.";
endif;
nn=СтрДлина(СокрЛП(slova));
fist_lit=" ";
fist_lit = Сред(СокрЛП(slova),1,1);
slova=ВРег(fist_lit)+Сред(СокрЛП(slova),2,nn-1);
return СокрЛП(slova);
КонецФункции
Функция aniq(numb,s1,s2,s4)
k_1 = СтрДлина(СокрЛП(numb));
if k_1=3 then
n_1=Сред(numb,1,1);
n_1_=Число(n_1);
if n_1_=0 then
n_1_=11;
endif;
n_2=Сред(numb,2,2);
n_2_=Число(n_2);
if n_2_>19 then
n_2=Сред(numb,2,1);
endif;
n_2_=Число(n_2);
if n_2_=0 then
n_2_=21;
endif;
n_3=Сред(numb,3,1);
n_3_=Число(n_3);
if n_3_=0 then
n_3_=21;
endif;
if СтрДлина(n_2) word=s4[n_1_]+" "+s2[n_2_]+" "+s1[n_3_];
else
word=s4[n_1_]+" "+s1[n_2_];
endif;
возврат word;
else
if k_1=2 then
n_2=Сред(numb,1,2);
n_2_=Число(n_2);
if n_2_>19 then
n_2=Сред(numb,1,1);
endif;
n_3=Сред(numb,2,1);
n_3_=Число(n_3);
n_2_=Число(n_2);
if n_2_=0 then
n_2_=11;
n2=11;
endif;
if n_3_=0 then
n_3_=21;
endif;
if СтрДлина(n_2) word=s2[n_2_]+" "+s1[n_3_];
else
word=s1[n_2_];
endif;
return word;
else
if k_1=1 then
n_3=Сред(numb,1,1);
n_3_=Число(n_3);
if n_3_=0 then
n_3_=11;
endif;
word=s1[n_3_];
return word;
endif;
endif;
КонецЕсли;
КонецФункции