Привет, всем.<br>Подскажите, пожалуйста, существует ли в 1С возможность склонения ФИО сотрудников. Наш отдел кадров не доволен, что в приказы попадпют сотрудники в именительном падеже. Для них это очень принципиально.
Привет, всем.<br>Подскажите, пожалуйста, существует ли в 1С возможность склонения ФИО сотрудников. Наш отдел кадров не доволен, что в приказы попадпют сотрудники в именительном падеже. Для них это очень принципиально.
Пользуюсь обработкой с ПроКлуба:<br>
Скачивание только для "Участников" ... Клуба !
Ну там же есть страница автора:<br>
На этой странице доступен только код дельфевый, а переписывать его не очень
"// Функция для склонения одного слова!!!<br>// z1 - само слово<br>// z2 - номер падежа<br>// z3 - пол<br>// z4 - 1-склонять как фамилию, 2-имя, 3-отчество<br>Функция ПадежС(z1,Знач z2=2,Знач z3="*",z4=0) Экспорт<br> z5=Найти(z1,"-");<br> z6=?(z5=0,"""","-"+ПадежС(Сред(z1,z5+1,СтрДлина(z1)-z5+1),z2,z3,z4));<br> z1=НРег(?(z5=0,z1,Лев(z1,z5-1)));<br> z7=Прав(z1,3);z8=Прав(z7,2);z9=Прав(z8,1);<br> z5=СтрДлина(z1);<br> za=Найти("ая ия ел ок яц ий па да ца ша ба та га ка",z8);<br> zb=Найти("аеёийоуэюяжнгхкчшщ",Лев(z7,1));<br> zc=Макс(z2,-z2);<br> zd=?(za=4,5,Найти("айяь",z9));<br> zd=?((zc=1)или(z9=".")или((z4=2)и(Найти("оиеу"+?(z3="ч","""","бвгджзклмнпрстфхцчшщъ"),z9)>0))или((z4=1)и(Найти("мия мяэ лия кия жая лея",z7)>0)),9,?((zd=4)и(z3="ч"),2,?(z4=1,?(Найти("оеиую",z9)+Найти("их ых аа еа ёа иа оа уа ыа эа юа яа",z8)>0,9,?(z3<>"ч",?(za=1,7,?(z9="а",?(za>18,1,6),9)),?(((Найти("ой ый",z8)>0)и(z5>4)и(Прав(z1,4)<>"опой"))или((zb>10)и(za=16)),8,zd))),zd)));<br> ze=Найти("лец вей бей дец пец мец нец рец вец аец иец ыец бер",z7);<br> zf=?((zd=8)и(zc<>5),?((zb>15)или(Найти("жий ний",z7)>0),"е","о"),?(z1="лев","ьв",?((Найти("аеёийоуэюя",Сред(z1,z5-3 ,1))=0)и((zb>11)или(zb=0))и(ze<>45),"""",?(za=7,"л",?(za=10,"к",?(za=13,"йц",?(ze=0,"""",?(ze<12,"ь"+?(ze=1,"ц",""""),?(ze<37,"ц",?(ze<49,"йц","р"))))))))));<br> zf=?((zd=9)или((z4=3)и(z3="ы")),z1,Лев(z1,z5-?((zd>6)или(zf<>""""),2,?(zd>0,1,0)))+zf+СокрП(Сред("а у а "+Сред("оыые",Найти("внч",z9)+1,1)+"ме "+?(Найти("гжкхш",Лев(z8,1))>0,"и","ы")+" е у ойе я ю я ем"+?(za=16,"и","е")+" и е ю ейе и и ь ьюи и и ю ейи ойойу ойойойойуюойойгомуго"+?((zf="е")или(za=16)или((zb>12)и(zb<16)),"и","ы")+"мм",10*zd+2*zc-3,2)));<br>Возврат ?(""""=z1,"""",?(z4>0,ВРег(Лев(zf,1))+?((z2<0)и(z4>1),".",Сред(zf,2)),zf)+z6);<br>КонецФункции<br>//______________________________________
Спасибо, попробую как работает.
"//Зачем так всё усложнять? У меня работает намного проще:<br>//Пишется после функции "ФИО()" в глобальном модуле бух-ии:<br>Функция Кому(Сотрудник) Экспорт<br> Фамилие=ФИО(Сотрудник,,"Ф");<br> Фамилие=СокрЛП(Фамилие); <br> Имя=ФИО(Сотрудник,,"И");<br> Отч=ФИО(Сотрудник,,"О");<br> Ф=Врег(Фамилие); <br> Им=Врег(Имя);<br> От=Врег(Отч); <br> Попытка<br> Пол=?(Сотрудник.Пол=Перечисление.Пол.Мужской,"М","Ж");<br>Исключение<br> Пол=?(Врег(Прав(СокрЛП(Сотрудник.Наименование),2))="НА","Ж","М");<br> КонецПопытки;<br> Группа=0; <br>Если Пол="М" Тогда //Мужские имена<br> Если (Прав(Им,1)="Й") или (Прав(Им,1)="Ь") Тогда<br> Имя=Лев(Имя,СтрДлина(Имя)-1)+"ю";<br> //Не склоняемые имена:<br> ИначеЕсли Прав(Им,1)="А" Тогда<br> ИначеЕсли Прав(Им,1)="Е" Тогда<br> ИначеЕсли Прав(Им,1)="Ё" Тогда <br> ИначеЕсли Прав(Им,1)="И" Тогда <br> ИначеЕсли Прав(Им,1)="У" Тогда <br> ИначеЕсли Прав(Им,1)="Я" Тогда <br> ИначеЕсли Прав(Им,1)="О" Тогда <br> ИначеЕсли Прав(Им,1)="Ы" Тогда <br> ИначеЕсли Прав(Им,1)="Ю" Тогда <br> Иначе<br> Имя=Имя+"у";<br> КонецЕсли;<br>Иначе //Женские Имена<br> Если (Прав(Им,1)="А") Или (Прав(Им,2)="ЬЯ") Тогда //Ирина, Яга, Софья...<br> Имя=Лев(Имя,СтрДлина(Им)-1)+"е";<br> ИначеЕсли Прав(Им,1)="Я" Тогда //Лидия, Аглая, София...<br> Имя=Лев(Имя,СтрДлина(Им)-1)+"и";<br> ИначеЕсли Прав(Им,1)="Ь" Тогда //Любовь, Руфь... <br> Имя=Лев(Имя,СтрДлина(Им)-1)+"и";<br> КонецЕсли;<br>КонецЕсли;<br><br> Если Прав(От,1)="Ч" Тогда <br> Отч=Отч+"у";<br> ИначеЕсли Прав(От,1)="А" Тогда<br> Отч=Лев(Отч,СтрДлина(От)-1)+"е";<br> КонецЕсли;<br> //Отчества:<br> <br> <br> //Фамилии:<br> Если (Прав(Ф,2)= "ЕВ") или (Прав(Ф,2)= "ЁВ") или (Прав(Ф,2)= "ИН") <br> или (Прав(Ф,2)= "ОВ")<br> Тогда<br> Возврат Фамилие+"у "+Имя+" "+Отч; <br>ИначеЕсли (Прав(Ф,3)= "ЕВА") или (Прав(Ф,3)= "ЁВА") или (Прав(Ф,3)= "ОВА") <br> или (Прав(Ф,3)= "ИНА")<br>Тогда<br> Возврат Лев(Фамилие,СтрДлина(Фамилие)-1)+"ой "+Имя+" "+Отч; <br>ИначеЕсли Прав(Ф,2)= "ИЙ" Тогда<br> Возврат Лев(Фамилие,СтрДлина(Фамилие)-2)+"ому "+Имя+" "+Отч;<br>ИначеЕсли Прав(Ф,2)= "АЯ" Тогда<br> Возврат Лев(Фамилие,СтрДлина(Фамилие)-2)+"ой "+Имя+" "+Отч;<br> <br>КонецЕсли; <br>Возврат Фамилие+" "+Имя+" "+Отч;//Фамилие не склоняется<br>КонецФункции<br>"