Показать страницуИстория страницыСсылки сюдаODT преобразованиеНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. <code> Функция ФамВРП(стр) Бук = ВРег(Прав(стр,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 Тогда Если не _УдалятьПустые Тогда Результат.Добавить(СтрПолучитьСтроку(_т, Строк)); КонецЕсли; Иначе Результат.Добавить(СтрПолучитьСтроку(_т, Строк)); КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции </code> /sites/data/pages/sklonenie_fio_ukr.txt Последнее изменение: 2021/04/27 06:31 — tro