|
Склонение ФИО на украинском языке | ☑ | ||
---|---|---|---|---|
0
Anonimka
16.01.12
✎
18:19
|
Подскажите, существует ли аналог NameDecl.dll для украинского языка, и если да - где можно найти?
|
|||
1
V_V_V
16.01.12
✎
18:20
|
Что-то сегодня всех посклонять потянуло...
|
|||
2
Grusswelle
16.01.12
✎
18:21
|
да чё там склонять-то
|
|||
3
vmv
16.01.12
✎
18:22
|
склоню дешева
|
|||
4
Neg
16.01.12
✎
18:24
|
(0) Там все на "о" заканчиваются.
|
|||
5
КапЛей
16.01.12
✎
18:24
|
существует
|
|||
6
Anonimka
16.01.12
✎
18:26
|
(4) Только женские фамилии. Мужские - увы, нет. С именами и отчествами вообще песня отдельная.
(5) Подскажите название, пожалуйста. |
|||
7
Neg
16.01.12
✎
18:28
|
может это
http://infostart.ru/public/14656/ |
|||
8
КапЛей
16.01.12
✎
18:30
|
(6) не поверите NameDecluKR.dll есть на ИТС
|
|||
9
aka MIK
16.01.12
✎
18:33
|
(8) нету
... или в последнем? |
|||
10
Anonimka
16.01.12
✎
18:44
|
(8) Я искала в декабрьском. Нет там такого. За январь пока диска не было.
(7) В описании что-то не нашла, как заставить компоненту на украинском склонять, но надо еще поковыряться, спасибо. |
|||
11
Grobik
16.01.12
✎
18:49
|
если нужно быстро сделать на от***си то использую такое:
Функция ФамВРП(стр) Бук = ВРег(Прав(стр,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 Тогда Если не _УдалятьПустые Тогда Результат.Добавить(СтрПолучитьСтроку(_т, Строк)); КонецЕсли; Иначе Результат.Добавить(СтрПолучитьСтроку(_т, Строк)); КонецЕсли; КонецЦикла; Возврат Результат; КонецФункции чье оно не знаю просто копирую и использую ОбластьМакета.Параметры.СтрокаДАТ = ФИОВДатПадеж(РаботникДля) + " відпустку по догляду за дитиною,"; РаботникДляРод = ФИОВРодПадеж(РаботникДля); ФИО = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СокрЛП(Строка(РаботникДляРод))," "); КоличествоПодстрок = ФИО.Количество(); Фамилия = ?(КоличествоПодстрок > 0,ФИО[0],""); Имя = ?(КоличествоПодстрок > 1,ФИО[1],""); Отчество= ?(КоличествоПодстрок > 2,ФИО[2],""); ОбластьМакета.Параметры.РаботникФИО = ?(НЕ ПустаяСтрока(Фамилия), Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." + ?(НЕ ПустаяСтрока(Отчество)," " + Лев(Отчество,1)+".", ""), ""), ""); |
|||
12
vyaz
16.01.12
✎
19:06
|
(11)
> відпустку по догляду за дитиною это отпуск по уходу за ребенком чтоль? да уж)))) |
|||
13
Anonimka
16.01.12
✎
19:11
|
(7) Работает, но мужские фамилии на -ко склоняет неправильно(((
|
|||
14
Anonimka
16.01.12
✎
19:12
|
Grobik, спасибо, чувствую, к Вашему варианту и приду в конце концов :)
|
|||
15
Anonimka
16.01.12
✎
19:21
|
Виновата, не ту библиотеку зарегистрировала. (7) работает отлично!
Спасибо огромное! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |