|
05.09.2006, 16:18 | #1 |
Участник
|
HRM,склонение ФИО и все все все
Честной народ, кто встречался с отчётностью в которой склоняются ФИО, авось кто видел подобные вещи и концептуальное решение подобных задач, поделись
буду благодарен. Ну а если серьёзно, интересуют подходы любой из систем (не только Dynamics) ... Спасибо заранее. |
|
05.09.2006, 16:25 | #2 |
Участник
|
Для Навижина обсуждалось здесь: Склонение ФИО по падежам
|
|
05.09.2006, 16:25 | #3 |
Участник
|
если кто совсем не понял, имеется ввиду. К примеру в базе Иванов Иван, а в 1 отчёте надо Иванова Ивана, во втором Ивановым Иваном и т.п.
|
|
05.09.2006, 16:29 | #4 |
злыдень
|
Цитата:
Сообщение от OmenSore
Честной народ, кто встречался с отчётностью в которой склоняются ФИО, авось кто видел подобные вещи и концептуальное решение подобных задач, поделись
буду благодарен. Ну а если серьёзно, интересуют подходы любой из систем (не только Dynamics) ... Спасибо заранее. Цитата:
Сегодня наткнулась на смешную ошибку.
В справке для получения ссуды в сбербанке при склонении имени "ЛЕВ" ИП выдает текст: "...Выдана Демину Леву Николаевичу...". Цитата:
ЧАЙКА ВЕРА ИВАНОВНА-фамилия интересно склоняется -туда же
Точного правила сейчас сказать не могу, но женские фамилии подобного вида не склоняются. Цитата:
-А фамилия ЗОЗО тоже склоняется?Это нет три тысячи тридцатый )
-Хм... Ты еще ИТОГО просклоняй! Цитата:
А если его зовут Атал Вихари Ваджпаи ? ))
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
05.09.2006, 16:43 | #5 |
злыдень
|
Библиотека, автор по моему - Пукин А.:
Код: ФУНКЦИЯ ТИП_СТРОКА: Склонение ( ПЕРЕМ ТИП_СТРОКА : Фамилия,Имя,Отчество,Пол,Падеж) Склонение=Фамилия+" "+Имя+" "+Отчество п=Пол имя=ЗАГЛ(Имя) 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)+"Е"; КОНЕЦ_ЕСЛИ; ЕСЛИ Падеж="Р" ТО Склонение=Родительный+" "+РодительныйИмя+" "+РодительныйОтчество КОНЕЦ_ЕСЛИ ЕСЛИ Падеж="Д" ТО Склонение=Дательный+" "+ДательныйИмя+" "+ДательныйОтчество КОНЕЦ_ЕСЛИ КОНЕЦ_ФУНКЦИИ
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
05.09.2006, 16:42 | #6 |
Участник
|
Да все просто:
1. Пишешь простецкую экспертную систему. 2. Некоторое время обучаешь ее (вводишь правила и исключения). 3. Остаток жизни проводишь в ожидании возникновения неучтенного при обучении прецедента. С уважением, itfs. |
|
05.09.2006, 16:46 | #7 |
Участник
|
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
|
|
05.09.2006, 18:27 | #8 |
злыдень
|
Цитата:
Сообщение от OmenSore
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
05.09.2006, 18:44 | #9 |
Шаман форума
|
Цитата:
Сообщение от OmenSore
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
__________________
All information in this post is strictly confidential. If you have read it in error, please forget it immediately. |
|
05.09.2006, 16:49 | #10 |
Участник
|
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
|
|
05.09.2006, 16:51 | #11 |
Участник
|
Цитата:
Сообщение от Alex_K
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
|
|
09.02.2009, 16:14 | #12 |
Участник
|
|
|
05.09.2006, 16:53 | #13 |
Участник
|
Передо мной такая задача ни разу не стояла, но я бы её именно так и решил - с минимальными затратами энергии. Если, конечно, это не тема для курсовой работы
|
|
05.09.2006, 17:14 | #14 |
Moderator
|
Поиском в Сети ваще будем пользоваться или нет?!
Первая же ссылка, возвращаемая Google по строке "Склонение ФИО": Склонение ФИО по падежам. Два маленьких файла на Паскале. Только я все равно бы прислушался к совету Alex_K Цитата:
Сообщение от Alex_K
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
А вот для облегчения предварительного формирования этих списков использовал бы алгоритмы из ссылки. Последний раз редактировалось Gustav; 05.09.2006 в 17:19. |
|
05.09.2006, 18:59 | #15 |
Участник
|
Или Ха Су Не (реальное имя бухгалтера)
|
|
08.02.2009, 00:59 | #16 |
Участник
|
А вот как склоняется Ха Су Не.
|
|
|
За это сообщение автора поблагодарили: coolibin (1). |
09.02.2009, 16:44 | #17 |
Участник
|
Цитата:
Сообщение от morpher
А вот как склоняется Ха Су Не.
|
|
09.02.2009, 16:51 | #18 |
Участник
|
Неужели? А как насчет Айс? ;)
|
|
09.02.2009, 17:00 | #19 |
Участник
|
Цитата:
Сообщение от morpher
Неужели? А как насчет Айс?
Последний раз редактировалось ice; 09.02.2009 в 17:04. |
|
09.02.2009, 10:13 | #20 |
Участник
|
Например, можно использовать приведенные автоматические алгоритмы + ручная коррекция по требованию. Все коррекции хранить в таблице исключений. Видел такое два раза, вполне работающий механизм.
Сам всегда старался от этого отказаться. По крайней мере, при внедрении кадрового учета и ЗП - получалось.
__________________
Ivanhoe as is.. |
|
Теги |
hrm, падежи, расчеты с персоналом, склонение, управление персоналом, фио |
|
|