AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.09.2006, 16:18   #1  
OmenSore is offline
OmenSore
Участник
 
32 / 10 (1) +
Регистрация: 13.06.2006
HRM,склонение ФИО и все все все
Честной народ, кто встречался с отчётностью в которой склоняются ФИО, авось кто видел подобные вещи и концептуальное решение подобных задач, поделись
буду благодарен.
Ну а если серьёзно, интересуют подходы любой из систем (не только Dynamics) ...
Спасибо заранее.
Старый 05.09.2006, 16:25   #2  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Для Навижина обсуждалось здесь: Склонение ФИО по падежам
Старый 05.09.2006, 16:25   #3  
OmenSore is offline
OmenSore
Участник
 
32 / 10 (1) +
Регистрация: 13.06.2006
если кто совсем не понял, имеется ввиду. К примеру в базе Иванов Иван, а в 1 отчёте надо Иванова Ивана, во втором Ивановым Иваном и т.п.
Старый 05.09.2006, 16:29   #4  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от OmenSore
Честной народ, кто встречался с отчётностью в которой склоняются ФИО, авось кто видел подобные вещи и концептуальное решение подобных задач, поделись
буду благодарен.
Ну а если серьёзно, интересуют подходы любой из систем (не только Dynamics) ...
Спасибо заранее.
В инфо-предприятии со склонением ФИО борьба идет с переменным успехом не один год, пара примеров:
Цитата:
Сегодня наткнулась на смешную ошибку.
В справке для получения ссуды в сбербанке при склонении имени "ЛЕВ" ИП выдает текст: "...Выдана Демину Леву Николаевичу...".
Цитата:
ЧАЙКА ВЕРА ИВАНОВНА-фамилия интересно склоняется -туда же
Точного правила сейчас сказать не могу, но женские фамилии подобного вида не склоняются.
Цитата:
-А фамилия ЗОЗО тоже склоняется?Это нет три тысячи тридцатый )
-Хм... Ты еще ИТОГО просклоняй!
Цитата:
А если его зовут Атал Вихари Ваджпаи ? ))
ИМХО: лучше не париться
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 05.09.2006, 16:42   #5  
itfs is offline
itfs
Участник
 
277 / 43 (2) +++
Регистрация: 18.07.2005
Адрес: Moscow
Да все просто:
1. Пишешь простецкую экспертную систему.
2. Некоторое время обучаешь ее (вводишь правила и исключения).
3. Остаток жизни проводишь в ожидании возникновения неучтенного при обучении прецедента.

С уважением, itfs.
Старый 05.09.2006, 16:43   #6  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Библиотека, автор по моему - Пукин А.:
Код:
ФУНКЦИЯ  ТИП_СТРОКА: Склонение ( ПЕРЕМ ТИП_СТРОКА : Фамилия,Имя,Отчество,Пол,Падеж) 
Склонение=Фамилия+" "+Имя+" "+Отчество
       п=Пол
       имя=ЗАГЛ(Имя)                                                 
        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:46   #7  
OmenSore is offline
OmenSore
Участник
 
32 / 10 (1) +
Регистрация: 13.06.2006
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
Старый 05.09.2006, 16:49   #8  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
Старый 05.09.2006, 16:51   #9  
OmenSore is offline
OmenSore
Участник
 
32 / 10 (1) +
Регистрация: 13.06.2006
Цитата:
Сообщение от Alex_K
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
А сами как решили если не секрет? Так и решили? или признаваться больно ?
Старый 05.09.2006, 16:53   #10  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Передо мной такая задача ни разу не стояла, но я бы её именно так и решил - с минимальными затратами энергии. Если, конечно, это не тема для курсовой работы
Старый 05.09.2006, 17:14   #11  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Поиском в Сети ваще будем пользоваться или нет?!

Первая же ссылка, возвращаемая Google по строке "Склонение ФИО": Склонение ФИО по падежам.
Два маленьких файла на Паскале.

Только я все равно бы прислушался к совету Alex_K
Цитата:
Сообщение от Alex_K
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
Я бы тоже так поступил. Так надежнее всего. Особенно, если контора небольшая, так вообще всё нетрудоемко и вполне может быть подготовлено вручную в Ёкселе.

А вот для облегчения предварительного формирования этих списков использовал бы алгоритмы из ссылки.

Последний раз редактировалось Gustav; 05.09.2006 в 17:19.
Старый 05.09.2006, 18:27   #12  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от OmenSore
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
А чего я распинался то примеры приводил??? Забейте. Всегда найдется человек по фамилии Лев, и хорошо если он не директор
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 05.09.2006, 18:44   #13  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
Цитата:
Сообщение от OmenSore
неужели всё так плохо, ну в к примеру , если необходимо хотя бы на 90 процентов
Это смотря насколько у Вас многонациональный колектив. А то придет кто-нибудь по имени Те Ранги Хироа (реально имя одного писателя).....
__________________
All information in this post is strictly confidential. If you have read it in error, please forget it immediately.
Старый 05.09.2006, 18:59   #14  
Alex_K is offline
Alex_K
Участник
 
531 / 36 (3) +++
Регистрация: 07.02.2003
Или Ха Су Не (реальное имя бухгалтера)
Старый 08.02.2009, 00:59   #15  
morpher is offline
morpher
Участник
 
4 / 11 (1) +
Регистрация: 07.02.2009
А вот как склоняется Ха Су Не.
За это сообщение автора поблагодарили: coolibin (1).
Старый 09.02.2009, 10:13   #16  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Например, можно использовать приведенные автоматические алгоритмы + ручная коррекция по требованию. Все коррекции хранить в таблице исключений. Видел такое два раза, вполне работающий механизм.

Сам всегда старался от этого отказаться. По крайней мере, при внедрении кадрового учета и ЗП - получалось.
__________________
Ivanhoe as is..
Старый 09.02.2009, 10:44   #17  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Например, можно использовать приведенные автоматические алгоритмы + ручная коррекция по требованию. Все коррекции хранить в таблице исключений. Видел такое два раза, вполне работающий механизм.
Сам всегда старался от этого отказаться. По крайней мере, при внедрении кадрового учета и ЗП - получалось.
А по каким причинам старались отказаться? Ведь лучшего-то варианта не было, я думаю. Скорее всего, имели опыт, когда клиент не хотел возиться заполнять, а в отчеты надо было выводить в склонениях? Так это просто нужно не забывать учитывать сразу же при формировании требований к системе.
В двух разных системах видел работающий вариант с хранением всех склонений в отдельной таблице.
Старый 09.02.2009, 10:56   #18  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от coolibin Посмотреть сообщение
А по каким причинам старались отказаться?
Потому что с точки законодательства нет необходимости вести кадровые документы с учетом склонения. А писать такой алгоритм (я только их видел, сам "код" в руках не держал) с нуля + переделывать стандартные формы только из-за желания пользователей смысла не вижу, особенно когда есть доработки по-важнее, а проект не резиновый.

Те алгоритмы, которые видел, использовались для подготовки большого количества документов, в основном связанных с договорами, доверенностями и т.п. По сути Аксапта была превращена в систему документооборота. Но там речь не шла о внедрении стандарта.
__________________
Ivanhoe as is..
Старый 09.02.2009, 16:14   #19  
Ark is offline
Ark
Участник
 
66 / 26 (1) +++
Регистрация: 02.01.2007
Адрес: Казань
Мы так и сделали:
Цитата:
Сообщение от Alex_K Посмотреть сообщение
А не проще добавить в карточку сотрудника поля ФИО в падежах, необходимых для этих отчетов и не греть голову?
Старый 09.02.2009, 16:44   #20  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от morpher Посмотреть сообщение
А вот как склоняется Ха Су Не.
там если стово не оканчивается на "а" или "я", то не склоняется
Теги
hrm, падежи, расчеты с персоналом, склонение, управление персоналом, фио

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
как программно поюзать все формы Daido DAX: Программирование 3 02.08.2007 13:39
Крякозябры в Аксапте! Все уже перепробовал((( StoneRoller DAX: Администрирование 28 22.09.2003 16:30
Первое знакомство. Демо версия. Как посмотреть все документы в одном журнале? AleAndrea DAX: Функционал 5 01.09.2003 14:03
Как же все-таки организованиы Query и QueryRun? VIS DAX: Программирование 4 03.07.2003 15:22
И все же снова о репликации Избранный DAX: Администрирование 3 11.06.2003 10:34
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:13.