sklonenie_fio_ukr

Функция ФамВРП(стр)
    Бук = ВРег(Прав(стр,1));
    кол = 2;
    Если (Бук="А")
        Тогда кол = 3;
    КонецЕсли; 
    Ок = Прав(стр, кол);
   //окончание фамилии (ов,ин,ова,ева)
 
    _ОК = ВРег(Ок);
    Доб = "";
    Убрать = 0;
   //кол символов которые нужно вырезать в конце
 
    Если Найти("ОВ",_ОК)>0 ИЛИ Найти("ЕВ",_ОК)>0 ИЛИ Найти("ЄВ",_ОК)>0 ИЛИ Найти("ИН",_ОК)>0 ИЛИ Найти("ІН",_ОК)>0 ИЛИ Найти("ЇН",_ОК)>0 Тогда 
        Доб = "а"; 
    ИначеЕсли Найти("ОВА",_ОК)>0 ИЛИ Найти("НА",Прав(_ОК,2))>0 ИЛИ Найти("ЕВА",_ОК)>0 ИЛИ Найти("ЄВА",_ОК)>0 ИЛИ Найти("ИНА",_ОК)>0 ИЛИ Найти("ІНА",_ОК)>0 ИЛИ Найти("ЇНА",_ОК)>0 Тогда
        Доб = "ої";
        Убрать = 1;
    ИначеЕсли Найти("ИЙ",_ОК)>0 Тогда
        Доб = "ого";
        Убрать = 2;
    ИначеЕсли Найти("Я",Прав(_ОК,1))>0 Тогда
        Доб = "ю";
        Убрать = 1;
    ИначеЕсли Найти("А",Прав(_ОК,1))>0 Тогда
        Доб = "ої";
        Убрать = 1;
    КонецЕсли;
    дл = СтрДлина(стр)-Убрать;
    фам = Лев(стр,дл)+Доб;
    Возврат фам;
КонецФункции
 //-------------------
 
Функция ФамВДП(стр)
    Бук = ВРег(Прав(стр,1));
    кол = 2;
    Если (Бук="А")
        Тогда кол = 3;
    КонецЕсли; 
    Ок = Прав(стр, кол);
   //окончание фамилии (ов,ин,ова,ева)
 
    _ОК = ВРег(Ок);
    Доб = "";
    Убрать = 0;
   //кол символов которые нужно вырезать в конце
 
    Если Найти("ОВ",_ОК)>0 ИЛИ Найти("ЕВ",_ОК)>0 ИЛИ Найти("ЄВ",_ОК)>0 ИЛИ Найти("ИН",_ОК)>0 ИЛИ Найти("ІН",_ОК)>0 ИЛИ Найти("ЇН",_ОК)>0 Тогда 
        Доб = "у"; 
    ИначеЕсли Найти("ОВА",_ОК)>0 ИЛИ Найти("НА",Прав(_ОК,2))>0 ИЛИ Найти("ЬКА",_ОК)>0 ИЛИ Найти("ЕВА",_ОК)>0 ИЛИ Найти("ЄВА",_ОК)>0 ИЛИ Найти("ИНА",_ОК)>0 ИЛИ Найти("ІНА",_ОК)>0 ИЛИ Найти("ЇНА",_ОК)>0 Тогда
        Доб = "ій";
        Убрать = 1;
    ИначеЕсли Найти("ИЙ",_ОК)>0 Тогда
        Доб = "ому";
        Убрать = 2;
    ИначеЕсли Найти("КА",Прав(_ОК,2))>0 Тогда
        Доб = "ці";
        Убрать = 2;
    ИначеЕсли Найти("АЯ",_ОК)>0 Тогда
        Доб = "ій";
        Убрать = 2;
    ИначеЕсли Найти("Я",Прав(_ОК,1))>0 ИЛИ Найти("А",Прав(_ОК,1))>0 Тогда
        Доб = "і";
        Убрать = 1;
    КонецЕсли;
    дл = СтрДлина(стр)-Убрать;
    фам = Лев(стр,дл)+Доб;
    Возврат фам;
КонецФункции
 //-------------------
 
Функция ИмяВРП(стр)
    Если Найти(стр,".")>0 Тогда
        возврат стр;
    КонецЕсли;
    Бук = ВРег(Прав(стр,1));
    кол = 1;
    Если Найти("А",Бук)>0 ИЛИ Найти("Л",Бук)>0 ИЛИ Найти("Ь",Бук)>0 Тогда
        кол = 2;
    КонецЕсли;
    Ок = Прав(стр, кол);
   //окончание фамилии (ов,ин,ова,ева) 
 
    _ОК = ВРег(Ок);
    Доб = "";
    Убрать = 0;
   //кол символов которые нужно вырезать в конце
 
    Если Найти("Я",_ОК)>0 Тогда
        Доб = "ю";
        Убрать = 1;
    ИначеЕсли "Р" = _ОК Тогда
        Доб = "а";
    ИначеЕсли "О" = _ОК Тогда
        Доб = "а";
        Убрать = 1;
    ИначеЕсли "В" = _ОК Тогда
    ИначеЕсли Найти("Й",_ОК)>0 ИЛИ Найти("Ь",Прав(_ОК,1))>0 Тогда
        Доб = "я";
        Убрать = 1;
    ИначеЕсли ВРег(Прав(стр,1))="А" Тогда
       // для женских имен 
 
        Доб = "у";
        Убрать = 1;
    Иначе
        доб = "а";
    КонецЕсли;
    дл = СтрДлина(стр)-Убрать;
    фам = Лев(стр,дл)+Доб;
    Возврат фам;
КонецФункции 
 //-------------------
 
Функция ИмяВДП(стр)
    Если Найти(стр,".")>0 Тогда
        возврат стр;
    КонецЕсли;
    Бук = ВРег(Прав(стр,1));
    кол = 1;
    Если Найти("А",Бук)>0 ИЛИ Найти("Я",Бук)>0 ИЛИ Найти("Л",Бук)>0 ИЛИ Найти("Ь",Бук)>0 Тогда
        кол = 2;
    КонецЕсли;
    Ок = Прав(стр, кол);
   //окончание фамилии (ов,ин,ова,ева) 
 
    _ОК = ВРег(Ок);
    Доб = "";
    Убрать = 0;
   //кол символов которые нужно вырезать в конце
 
    Если Найти("ІЯ",_ОК)>0 Тогда
        Доб = "ї";
        Убрать = 1;
    ИначеЕсли Найти("Я",Прав(_ОК,1))>0 Тогда
        Доб = "і";
        Убрать = 1;
    ИначеЕсли Найти("В",Прав(_ОК,1))>0 Тогда
        Доб = "і";
    ИначеЕсли "О" = _ОК Тогда
        Доб = "у";
        Убрать = 1;
    ИначеЕсли "Р" = _ОК Тогда
        Доб = "у";
    ИначеЕсли Найти("Й",_ОК)>0 ИЛИ Найти("Ь",Прав(_ОК,1))>0 Тогда
        Доб = "ю";
        Убрать = 1;
    ИначеЕсли Найти("ГА",_ОК)>0 Тогда
        Доб = "зі";
        Убрать = 2;
    ИначеЕсли ВРег(Прав(стр,1))="А" Тогда
       // для женских имен 
 
        Доб = "і";
        Убрать = 1;
    Иначе
        доб = "у";
    КонецЕсли;
    дл = СтрДлина(стр)-Убрать;
    фам = Лев(стр,дл)+Доб;
    Возврат фам;
КонецФункции 
 //-------------------
 
Функция ОтчВРП(стр)
    Если Найти(стр,".")>0 Тогда
        возврат стр;
    КонецЕсли;
    кол = 1;
    Ок = Прав(стр, кол);
   //окончание фамилии (ов,ин,ова,ева) 
 
    _ОК = ВРег(Ок);
    Доб = "";
    Убрать = 0;
   //кол символов которые нужно вырезать в конце
 
    Если Найти("Ч",_ОК)>0 Тогда
        Доб = "а";
    ИначеЕсли Найти("А",_ОК)>0 Тогда
        Доб = "у";
        Убрать = 1;
    КонецЕсли;
    дл = СтрДлина(стр)-Убрать;
    фам = Лев(стр,дл)+Доб;
    Возврат фам;
КонецФункции 
 //-------------------
 
Функция ОтчВДП(стр)
    Если Найти(стр,".")>0 Тогда
        возврат стр;
    КонецЕсли;
    кол = 1;
    Ок = Прав(стр, кол);
   //окончание фамилии (ов,ин,ова,ева) 
 
    _ОК = ВРег(Ок);
    Доб = "";
    Убрать = 0;
   //кол символов которые нужно вырезать в конце
 
    Если Найти("Ч",_ОК)>0 Тогда
        Доб = "у";
    ИначеЕсли Найти("А",_ОК)>0 Тогда
        Доб = "і";
        Убрать = 1;
    КонецЕсли;
    дл = СтрДлина(стр)-Убрать;
    фам = Лев(стр,дл)+Доб;
    Возврат фам;
КонецФункции 
 //-------------------
 
Функция ФИОВРодПадеж(_строка) 
    сп = РазобратьСтроку(_строка, " ");
   //РодПадеж = ИмПадеж;
 
    для н=0 по сп.Количество()-1 Цикл
        стр = СокрЛП(сп[н].Значение);
        тмп = стр;
        Если СтрДлина(тмп)=0 Тогда
            Продолжить;
        КонецЕсли; 
        Если н=0 тогда 
            Фам = ФамВРП(стр);
        ИначеЕсли н=1 Тогда
            Им = ИмяВРП(стр);
        ИначеЕсли н=2 Тогда
            Отч = ОтчВРП(стр);
        КонецЕсли;
    КонецЦикла;
    Возврат Фам + " " + Им + " " + Отч;
КонецФункции   
 //-------------------
 
Функция ФИОВДатПадеж(_строка) 
    сп = РазобратьСтроку(_строка, " ");
   //ДатПадеж = ИмПадеж;
 
    для н=0 по сп.Количество()-1 Цикл
        стр = СокрЛП(сп[н].Значение);
        тмп = стр;
        Если СтрДлина(тмп)=0 Тогда
            Продолжить;
        КонецЕсли; 
        Если н=0 тогда 
            Фам = ФамВДП(стр);
        ИначеЕсли н=1 Тогда
            Им = ИмяВДП(стр);
        ИначеЕсли н=2 Тогда
            Отч = ОтчВДП(стр);
        КонецЕсли;
    КонецЦикла;
    Возврат Фам + " " + Им + " " + Отч;
КонецФункции   


Функция РазобратьСтроку(_Строка, _Разделитель, _УдалятьПустые = Истина)
    Результат = Новый СписокЗначений;
    _т = СтрЗаменить(_Строка, _Разделитель, Символы.ПС);
    Для Строк = 1 по СтрЧислоСтрок(_т) Цикл
        Если СтрДлина(СтрПолучитьСтроку(_т, Строк)) = 0 Тогда
            Если не _УдалятьПустые Тогда
                Результат.Добавить(СтрПолучитьСтроку(_т, Строк));
            КонецЕсли;
        Иначе
            Результат.Добавить(СтрПолучитьСтроку(_т, Строк));
        КонецЕсли;
    КонецЦикла;
    
    Возврат Результат;
КонецФункции
  • /sites/data/pages/sklonenie_fio_ukr.txt
  • Последнее изменение: 2021/04/27 06:31
  • tro