|
|
#1 |
|
Участник
|
HRM,склонение ФИО и все все все
Честной народ, кто встречался с отчётностью в которой склоняются ФИО, авось кто видел подобные вещи и концептуальное решение подобных задач, поделись
буду благодарен. Ну а если серьёзно, интересуют подходы любой из систем (не только Dynamics) ... Спасибо заранее. |
|
|
|
|
#2 |
|
Участник
|
Для Навижина обсуждалось здесь: Склонение ФИО по падежам
|
|
|
|
|
#3 |
|
Участник
|
если кто совсем не понял, имеется ввиду. К примеру в базе Иванов Иван, а в 1 отчёте надо Иванова Ивана, во втором Ивановым Иваном и т.п.
|
|
|
|
|
#4 |
|
злыдень
|
Цитата:
Сообщение от OmenSore
Честной народ, кто встречался с отчётностью в которой склоняются ФИО, авось кто видел подобные вещи и концептуальное решение подобных задач, поделись
буду благодарен. Ну а если серьёзно, интересуют подходы любой из систем (не только Dynamics) ... Спасибо заранее. Цитата:
Сегодня наткнулась на смешную ошибку.
В справке для получения ссуды в сбербанке при склонении имени "ЛЕВ" ИП выдает текст: "...Выдана Демину Леву Николаевичу...". Цитата:
ЧАЙКА ВЕРА ИВАНОВНА-фамилия интересно склоняется -туда же
Точного правила сейчас сказать не могу, но женские фамилии подобного вида не склоняются. Цитата:
-А фамилия ЗОЗО тоже склоняется?Это нет три тысячи тридцатый
)-Хм... Ты еще ИТОГО просклоняй!
Цитата:
А если его зовут Атал Вихари Ваджпаи ?
))
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
|
|
|
#5 |
|
Участник
|
Да все просто:
1. Пишешь простецкую экспертную систему. 2. Некоторое время обучаешь ее (вводишь правила и исключения). 3. Остаток жизни проводишь в ожидании возникновения неучтенного при обучении прецедента. С уважением, itfs. |
|
|
|
|
#6 |
|
злыдень
|
Библиотека, автор по моему - Пукин А.:
Код: ФУНКЦИЯ ТИП_СТРОКА: Склонение ( ПЕРЕМ ТИП_СТРОКА : Фамилия,Имя,Отчество,Пол,Падеж)
Склонение=Фамилия+" "+Имя+" "+Отчество
п=Пол
имя=ЗАГЛ(Имя)
L[1]="Б";
L[2]="В";
L[3]="Г";
L[4]="Д";
L[5]="Ж";
L[6]="З";
L[7]="К";
L[8]="Л";
L[9]="М";
L[10]="Н";
L[11]="П";
L[12]="Р";
L[13]="С";
L[14]="Т";
L[15]="Ф";
L[16]="Х";
L[17]="Ц";
L[18]="Ч";
L[19]="Ш";
L[20]="Щ";
//Гласные
L[21]="А";
L[22]="Е";
L[23]="И";
L[24]="Й";
L[25]="О";
L[26]="У";
L[27]="Ы";
L[28]="Э";
L[29]="Ю";
L[30]="Я";
L[31]="Ь";
L[32]="Ъ";
/////////////
Фамилия=ЗАГЛ(Фамилия)
Последняя=ПОДСТР(Фамилия,ДЛИНА(Фамилия),1)
ДвеПоследних=ПОДСТР(Фамилия,ДЛИНА(Фамилия)-1,2)
ТриПоследних=ПОДСТР(Фамилия,ДЛИНА(Фамилия)-2,3)
Флаг=0;
ЦИКЛ ДЛЯ(и=1,32)
ЕСЛИ L[и]=Последняя ТО
СТОП
КОНЕЦ_ЕСЛИ;
КОНЕЦ_ЦИКЛА
ЕСЛИ и<=20 ТО
ТипБуквы=1;//согласная
ИНАЧЕ
ТипБуквы=2;//гласная
КОНЕЦ_ЕСЛИ
//////////////// Исключения ////////////////////
ЕСЛИ ДЛИНА(Фамилия)<=2 ТО
Родительный=Фамилия;//фамилии типа Ге, Че
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (ДвеПоследних="ИХ") ИЛИ (ДвеПоследних="ЫХ") ТО
Родительный=Фамилия;//сибирские фамилии
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
ЕСЛИ Последняя="О" ИЛИ Последняя="Ц" ТО
Родительный=Фамилия;//украинские фамилии Чубарец
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
ЕСЛИ ДвеПоследних="УА" ТО
Родительный=Фамилия;//фамилии типа Стуруа
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
ЕСЛИ ДвеПоследних="ИА" ТО
Родительный=Фамилия;//фамилии типа Туташхиа
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (ДвеПоследних="ЖА") И (п="Ж") ТО
Родительный=Фамилия;// женские фамилии типа Ганжа
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
ЕСЛИ ТриПоследних="ДЗЕ" ТО
Родительный=Фамилия;//грузинские фамилии типа Гогадзе
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
ЕСЛИ ТриПоследних="ИЛИ" ТО
Родительный=Фамилия;//грузинские фамилии типа Габошвили
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (ДвеПоследних="ОЙ") И (п="М") И (ДЛИНА(Фамилия)=3) ТО
Родительный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"Я";//фам. типа Цой
Дательный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"Ю";
КОНЕЦ_ЕСЛИ;
ЕСЛИ (ДвеПоследних="ОЙ") И (п="Ж") И (ДЛИНА(Фамилия)=3) ТО
Родительный=Фамилия; //фам. типа Цой
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
///////////////////////////////////////////////////////////////////////
ЕСЛИ (п="М") И (ТипБуквы=1) И (Последняя<>"Ц") ТО //мужскую склоняем Чубарец
Родительный=Фамилия+"А";
Дательный=Фамилия+"У";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="М") И (ДвеПоследних="ДЬ") ТО //В память о красноярском губернаторе
Родительный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"Я";//Лебедя
Дательный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"Ю";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="Ж") И (ТипБуквы=1) ТО //женскую не склоняем
Родительный=Фамилия;
Дательный=Фамилия;
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="Ж") И (Последняя="А") ТО
Родительный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"У";
Дательный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"ОЙ";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="М") И (Последняя="А") ТО //фам. типа Соткилава
Родительный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"У";
Дательный= ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"Е";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (ДвеПоследних="ОЙ") И (п="М") И (ДЛИНА(Фамилия)>3) ТО
Родительный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"ГО";
Дательный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-1)+"МУ";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (ДвеПоследних="АЯ") И (п="Ж") И (ДЛИНА(Фамилия)>3) ТО
Родительный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-2)+"УЮ";
Дательный=ПОДСТР(Фамилия,1,ДЛИНА(Фамилия)-2)+"ОЙ";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ Флаг=0 ТО //если не сработало ни одно условие
Родительный=Фамилия;
Дательный=Фамилия;
КОНЕЦ_ЕСЛИ;
//////////////
// Склонение имени
Последняя=ПОДСТР(имя,ДЛИНА(имя),1);
ДвеПоследних=ПОДСТР(имя,ДЛИНА(имя)-1,2);
Флаг=0;
ЦИКЛ ДЛЯ(и=1,32)
ЕСЛИ L[и]=Последняя ТО
СТОП
КОНЕЦ_ЕСЛИ;
КОНЕЦ_ЦИКЛА;
ЕСЛИ и<=20 ТО
ТипБуквы=1;//согласная
ИНАЧЕ;
ТипБуквы=2;//гласная
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="М") И (ТипБуквы=1) ТО ///Иван, Петр и т.д.
РодительныйИмя=имя+"А";
ДательныйИмя =имя+"У";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="М") И (Последняя="Й") ТО ///Сергей, Дмитрий и т.д.
РодительныйИмя=ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Я";
ДательныйИмя =ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Ю";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="М") И (Последняя="А") ТО ///Фома
РодительныйИмя=ПОДСТР(имя,1,ДЛИНА(имя)-1)+"У";
ДательныйИмя =ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Е";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="М") И (Последняя="Я") ТО ///Илья
РодительныйИмя=ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Ю";
ДательныйИмя =ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Е";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="М") И (Последняя="Ь") ТО ///Игорь
РодительныйИмя=ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Я";
ДательныйИмя =ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Ю";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="Ж") И (Последняя="А") ТО ///Татьяна, Людмила и т.д.
РодительныйИмя=ПОДСТР(имя,1,ДЛИНА(имя)-1)+"У";
ДательныйИмя =ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Е";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="Ж") И (Последняя="Я") ТО ///Зоя, Наталья и т.д.
РодительныйИмя=ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Ю";
ДательныйИмя =ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Е";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="Ж") И (ДвеПоследних="ИЯ") ТО ///Наталия,Виктория и т.д.
РодительныйИмя=ПОДСТР(имя,1,ДЛИНА(имя)-1)+"Ю";
ДательныйИмя =ПОДСТР(имя,1,ДЛИНА(имя)-1)+"И";
Флаг=1;
КОНЕЦ_ЕСЛИ;
ЕСЛИ Флаг=0 ТО
РодительныйИмя=имя;
ДательныйИмя =имя;
КОНЕЦ_ЕСЛИ;
/////////склонение отчества///////
отчество=ЗАГЛ(Отчество)
ЕСЛИ (п="М") ТО
РодительныйОтчество=отчество+"А";
ДательныйОтчество =отчество+"У";
КОНЕЦ_ЕСЛИ;
ЕСЛИ (п="Ж") ТО
РодительныйОтчество=ПОДСТР(отчество,1,ДЛИНА(отчество)-1)+"У";
ДательныйОтчество =ПОДСТР(отчество,1,ДЛИНА(отчество)-1)+"Е";
КОНЕЦ_ЕСЛИ;
ЕСЛИ Падеж="Р" ТО Склонение=Родительный+" "+РодительныйИмя+" "+РодительныйОтчество КОНЕЦ_ЕСЛИ
ЕСЛИ Падеж="Д" ТО Склонение=Дательный+" "+ДательныйИмя+" "+ДательныйОтчество КОНЕЦ_ЕСЛИ
КОНЕЦ_ФУНКЦИИ
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
|
|
|
#7 |
|
Участник
|
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
|
|
|
|
|
#8 |
|
Участник
|
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
|
|
|
|
|
#9 |
|
Участник
|
Цитата:
Сообщение от Alex_K
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
|
|
|
|
|
#10 |
|
Участник
|
Передо мной такая задача ни разу не стояла, но я бы её именно так и решил - с минимальными затратами энергии. Если, конечно, это не тема для курсовой работы
|
|
|
|
|
#11 |
|
Moderator
|
Поиском в Сети ваще будем пользоваться или нет?!
Первая же ссылка, возвращаемая Google по строке "Склонение ФИО": Склонение ФИО по падежам. Два маленьких файла на Паскале. Только я все равно бы прислушался к совету Alex_K Цитата:
Сообщение от Alex_K
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
А вот для облегчения предварительного формирования этих списков использовал бы алгоритмы из ссылки. Последний раз редактировалось Gustav; 05.09.2006 в 17:19. |
|
|
|
|
#12 |
|
злыдень
|
Цитата:
Сообщение от OmenSore
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
|
|
|
#13 |
|
Шаман форума
|
Цитата:
Сообщение от OmenSore
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
__________________
All information in this post is strictly confidential. If you have read it in error, please forget it immediately. |
|
|
|
|
#14 |
|
Участник
|
Или Ха Су Не (реальное имя бухгалтера)
|
|
|
|
|
#15 |
|
Участник
|
А вот как склоняется Ха Су Не.
|
|
|
|
| За это сообщение автора поблагодарили: coolibin (1). | |
|
|
#16 |
|
Участник
|
Например, можно использовать приведенные автоматические алгоритмы + ручная коррекция по требованию. Все коррекции хранить в таблице исключений. Видел такое два раза, вполне работающий механизм.
Сам всегда старался от этого отказаться. По крайней мере, при внедрении кадрового учета и ЗП - получалось.
__________________
Ivanhoe as is.. |
|
|
|
|
#17 |
|
Участник
|
Цитата:
Сообщение от Ivanhoe
Например, можно использовать приведенные автоматические алгоритмы + ручная коррекция по требованию. Все коррекции хранить в таблице исключений. Видел такое два раза, вполне работающий механизм.
Сам всегда старался от этого отказаться. По крайней мере, при внедрении кадрового учета и ЗП - получалось. В двух разных системах видел работающий вариант с хранением всех склонений в отдельной таблице. |
|
|
|
|
#18 |
|
Участник
|
Потому что с точки законодательства нет необходимости вести кадровые документы с учетом склонения. А писать такой алгоритм (я только их видел, сам "код" в руках не держал) с нуля + переделывать стандартные формы только из-за желания пользователей смысла не вижу, особенно когда есть доработки по-важнее, а проект не резиновый.
Те алгоритмы, которые видел, использовались для подготовки большого количества документов, в основном связанных с договорами, доверенностями и т.п. По сути Аксапта была превращена в систему документооборота. Но там речь не шла о внедрении стандарта.
__________________
Ivanhoe as is.. |
|
|
|
|
#19 |
|
Участник
|
|
|
|
|
|
#20 |
|
Участник
|
Цитата:
Сообщение от morpher
А вот как склоняется Ха Су Не.
|
|
|
| Теги |
| hrm, падежи, расчеты с персоналом, склонение, управление персоналом, фио |
|
|
|