|   |   | 
| 
 | Склонение ФИО на украинском языке | ☑ | ||
|---|---|---|---|---|
| 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) работает отлично!
  Спасибо огромное! | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |