Функция ФамВРП(стр)
Бук = ВРег(Прав(стр,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 Тогда
Если не _УдалятьПустые Тогда
Результат.Добавить(СтрПолучитьСтроку(_т, Строк));
КонецЕсли;
Иначе
Результат.Добавить(СтрПолучитьСтроку(_т, Строк));
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции