Склонение украинских ФИО, должностей и подразделений в семи падежах. DLL с поддержкой OLE.

Опубликовал Александр Тарасенков (tarasenkov) в раздел Программирование - Практика программирования

Склонение осуществляется из именительного во все остальные падежи.
Пол сотрудника определяется по отчеству (если не указан явно).
Библиотека может использоваться из 1С 7.7, 8.x, C, Pascal, Visual Basic, MS Office, MS SQL, Oracle и др.
Update: Полная версия с исходниками на Turbo Delphi.

Библиотека (Padeg_ua.dll) предназначена для склонения фамилии, имени, отчетства (ФИО), должностей и подразделений по правилам украинского языка.

Полная версия с исходниками на Turbo Delphi.

Склонение осуществляется из именительного во все остальные падежи.
Пол сотрудника определяется по отчеству (если не указан явно).
Производится замена английских символов на украинские.

Библиотека может использоваться из 1С, C, Pascal, Visual Basic, MS Office, MS SQL, Oracle и др.

Интерфейс взаимодействия.
Для 1С рекомендуется использовать OLE. Пример использования:

  Склонение = СоздатьОбъект("Padeg_ua.Declension");
...
Сообщить(Склонение.GetFIOPadegFS( Сотрудник.Наименование, "", 2 ); 


Предварительно необходимо поместить библиотеку в общедоступную папку или папку программы и зарегистрировать её при помощи команды: regsvr32.exe <Путь>\Padeg_ua.dll

Доступ к функциям библиотеки осуществляется также как и к функциям библиотеки Padeg.dll.
Это библиотека склонения по правилам русского языка, её автора: С.Плахов и Г.Покаташкин.
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=412
Вся документация и примеры использования Padeg.dll также применимы к Padeg_ua.dll.

Отличия по сравнению с Padeg.dll:
- имя файла и имя OLE класса - Padeg_ua;
- отсутствует OLE класс Dictionary, добавлено свойство DictionaryFileName, и функция UpdateDictionary.
- не реализованы функции восстановления именительного падежа и определения падежа;
- отличается словарь исключений.

Правила склонения
Реализованы правила склонения существительных и прилагательных.
Правила склонения сформулированы по материалам электронного учебника:
http://linguist.univ.kiev.ua/WINS/pidruchn/index.htm

Для женских фамилий на -а, -я, а также для должностей программа пытается
определить часть речи по окончанию слова, в редких случаях неуспешно.

Исключения из правил (не рассмотренные в учебнике), а также
неудовлетворительные попытки программы определить часть речи
необходимо заносить в словарь исключений - файл "Padeg_ua.dic".
Файл создается при первом обращении к библиотеке.

Версия 1.0.0.3
Исправлено склонение в звательном падеже для существительных 2 группы,
согласно правил электронного учебника: http://www.mova.info/Pidruchn.aspx,
раздел "МОРФОЛОГІЯ, 8. Відмінювання іменників II відміни".

Версия 1.0.0.4
Полнофункциональная без ограничений с исходными кодами, других исправлений и изменений нет.

Скачать файлы

Наименование Файл Версия Размер
Библиотека + Примеры вызова из 1С и Delphi + Исходники
.zip 499,90Kb
11.05.10
266
.zip 499,90Kb 266 Бесплатно

См. также

Добавить вознаграждение
Комментарии
1. vip (vip) 08.11.07 17:43 Сейчас в теме
Падежей в русском и украинском вроде шесть.
А вот в венгерском 126.
Слабо расширение для венгерского сделать? :)
2. Tarasenkov (tarasenkov) 08.11.07 17:49 Сейчас в теме
3. Аркадий Кучер (Abadonna) 3653 08.11.07 17:59 Сейчас в теме
(1) Андрей, а ты откуда мадьярский знаешь? ;)
4. vip (vip) 08.11.07 18:05 Сейчас в теме
(3) Да я и китайским, как ты знаешь, в совершенстве владею :)))
5. Владимир Костецкий (astonvilla) 224 09.11.07 11:56 Сейчас в теме
Минус за "Стоимость регистрации одного рабочего места: 500 грн.".
Как по мне - дороговато.
vasilykushnir; +1 Ответить 1
6. VasilyKushnir (vasilykushnir) 09.11.07 12:05 Сейчас в теме
(5) Не многовато, а дохырища! Минусы не ставлю принципиально, хотя руки чешутся....
7. Владимир Костецкий (astonvilla) 224 09.11.07 12:19 Сейчас в теме
(6) А я не смог удержаться, хотя до этого тоже не ставил :(
"На 07.11.2007 стоимость исходных текстов под Turbo Delphi либо 1С 7.7 составляет 10'000 грн."
Имхо звучит как фраза из "Буря в стакане" - когда они торговализь за гравицапу :))
8. vip (vip) 09.11.07 12:32 Сейчас в теме
9. Евгений Мартыненков (JohnyDeath) 291 09.11.07 12:47 Сейчас в теме
А 500 грн это скока на деревянные?
10. Владимир Костецкий (astonvilla) 224 09.11.07 13:09 Сейчас в теме
11. Владимир Костецкий (astonvilla) 224 09.11.07 13:12 Сейчас в теме
(8) Тут пошутил, на проклабе, и еще в десятке мест где выложил?
Не, он вполне серъезно.
12. Tarasenkov (tarasenkov) 09.11.07 15:41 Сейчас в теме
Господа если вас не устраивает цена, вы можете приобрести исходнии Padeg.dll (русской библиотеки),
цены представлены здесь: http://www.delphikingdom.com/zip/pd_Docs.zip
и переделать под украинский язык.
В таком случае себестоимость исходных кодов может быть как ниже так и выше,
это зависит от себестоимости вашего времени на разработку и тестирование.

Продажу исходников я воспринимаю как выход с рынка, ведь что помешает
купившему исходники продавать программу от своего имени?

Объем рынка очень и очень скромный - небольшим фирмам такая штукенция ни к чему.
А организациям с численностью сотрудников от 600 и выше возможно будет интересна,
я считаю, для них эта цена не покажется высокой.

Спасибо за оказанный интерес,
напоминаю, вы можете зарегистрировать сабж бесплатно.

Он благополучно протестирован на списке в 1500 сотрудников.
13. V. L. (Vladal) 409 13.11.07 23:24 Сейчас в теме
14. Сергей Плахов (real_seer) 26.11.07 11:37 Сейчас в теме
Все таки нет предела наглости отдельных личностей...
Товарищ (не нам) Тарасенков занялся плагиатом... Исходники мы ему точно не продавили...

Как один из авторов библиотеки склонения на русском официально уведомляю, что есть версия библиотеки для украинского языка. С некоторыми недоработками (не было среди нас знающего украинский), но зато совершенно бесплатна.

Предлагаю (это самый действенный способ) хорошо знающему украинский язык исходники для портирования, с условием выпуска бесплатной сборки библиотеки для украинского языка. Прощу обращаться ко мне или Гене напрямую или через сайт "Королевства..." http://www.delphikingdom.com/asp/viewitem.asp?catalogid=412

Кстати. Исходники нашей версии были изначально открыты, пока не нашелся один, опять же "не нам" :-), товарищ? который опубликовал их от своего имени, с нашими же коментариями и ошибками...

И наконец... "Не нам" товарищ Тарасенков, случайно не думаете ли вы закупать сало для отправки в Россию и Белорусию на все суммы?
15. NDeclin (NDeclin) 80 26.11.07 15:41 Сейчас в теме
С позволения и по настоянию авторов padeg.dll опубликовал альтернативный вариант украинской сборки http://infostart.ru/profile/8349/projects/803/
Клон первой русской версии. Cыровата, конечно, да и функций маловато, но текущий расклад вынуждает...
real_seer; German; +2 Ответить
16. Tarasenkov (tarasenkov) 26.11.07 19:55 Сейчас в теме
Эх, где же вы были, господа, когда мне так нужна была украинская версия?
Ведь на форуме delphikingdom посвященному русской версии библиотеки не единожды встречался вопрос об украинской версии, и ответа на него я там так и не нашел.

В итоге, не найдя достойной библиотеки склонения пришлось написать свою, писал к тому же на 1с, но чтобы как-то окупить расходы и защитить свой труд портировал на Delphi в DLL. Библиотека склонения на русском стала достойным примером для подражания в части экспортируемых функций и OLE. И для того чтобы пользователям русской версии библиотеки было проще использовать мою, ну и конечно, чтобы не писать документацию, интерфейс функций экспорта был выполнен в соответствии с документацией русской версии.

Я считаю насчет наглости и плагиата вы немного погорячились, поскольку ни исходников русской библиотеки ни некой украинской библиотеки я не видел и не использовал, и требую извинений на этот счет.

Насчет бесплатной версии, напоминаю, временно осуществляется бесплатная регистрация.
17. NDeclin (NDeclin) 80 27.11.07 07:51 Сейчас в теме
(16) Ведь на форуме delphikingdom посвященному русской версии библиотеки не единожды встречался вопрос об украинской версии, и ответа на него я там так и не нашел.
В обсуждении вопрос за все время встречался ровно 2 раза: 21-11-2002 и 12-09-2007.
Зато была масса вопросов по русской сборке, вот в этом направлении ("где же вы были...") и работали.

В (14) предложен самый разумный вариант развития событий (ИМХО).
18. Сергей Плахов (real_seer) 27.11.07 10:17 Сейчас в теме
> Эх, где же вы были, господа, когда мне так нужна была украинская версия?

Не единожды отвечали лично (и я, и Гена), что не знаем мы украинского. Однажды у нас брали исходники с той же целью добавления украинского, но тот человек так и не довел работу до конца (это точно были не вы).

На форуме в "Королевстве...", если помните, были вопросы про *'nix версию. Так вот, к нам обратились с просьбой предоставить исходники, дали, в обмен на будущие. И сейчас активно переводят под Unix на С. И сейчас дадим исходники с условием сохранения условий лицензии как и для русского языка (вкратце: платное только коммерческое использование).

Готов принести свои изменения если библиотека действительно была портирована и унифицирован интерфейс.
Однако ваших исходников мы тоже не видели.
19. Аркадий Кучер (Abadonna) 3653 27.11.07 11:14 Сейчас в теме
(18) Я мужика по фамилии Кличко как склонять на украинском?
Кличке, Кличком, Кличку? :)))))
20. Андрей (Cortes) 05.02.08 22:36 Сейчас в теме
Идея хорошая. Но есть недостатки. Довольно весомые недостатки, из-за которых жалко тратить деньги на приобретение коммерческой версии.
21. Олег Пономаренко (O-Planet) 6647 06.02.08 01:53 Сейчас в теме
Хм... А чем украинские от русских отличаются? Я помнится такое писал средствами языка за час-полтора...
22. Tarasenkov (tarasenkov) 06.02.08 10:11 Сейчас в теме
(21) Не могу объективно судить об отличиях, так как для русского языка не писал.
23. Андрей (Cortes) 07.02.08 21:29 Сейчас в теме
Пардон. Я, кажется, не совсем туда написал свое мнение.
Отзыв (20) относился к предыдущей публикации на эту тему, ссылку почему-то найти не могу.
25. Евгений (Genius_SV) 03.07.08 17:48 Сейчас в теме
Подскажите пожалуйста как использовать это компоненту в 1С 8.1 ?
То что я пробовал :
1.
Код
   Попытка
      ЗагрузитьВнешнююКомпоненту("padeg_ua.dll");
      Падеж_УА = Новый ("padeg_ua.Declension");
   Исключение
      Сообщить("Не загружен ""padeg_ua.dll""!", СтатусСообщения.Важное);
   КонецПопытки;
Показать полностью
-> "Исключение"...
2.
Код
   Попытка
      ЗагрузитьВнешнююКомпоненту("ule.dll");
      Падеж_УА = Новый ("AddIn.ULE");
   Исключение
      Сообщить("Не загружен ""ule.dll""!", СтатусСообщения.Важное);
   КонецПопытки;
   
   Попытка
      Падеж_УА.TransmuteInto("padeg_ua.Declension");
   Исключение
      Сообщить("Не загружен ""padeg_ua.dll""!", СтатусСообщения.Важное);
   КонецПопытки;
Показать полностью
-> "Вываливается" 1С, хотя пару раз работало, что наталкивает на мысль "должно работать" ...

В случае успешной работы компоненты в 1С 8.1, рассматривается вариант покупки.
26. Tarasenkov (tarasenkov) 08.07.08 10:20 Сейчас в теме
1. Регистрируете COM объект: regsvr32.exe <Путь>\Padeg_ua.dll
2. Код подключения:
Код
 Скл = Новый COMОбъект("Padeg_ua.Declension");
 
 Падеж = 5; // Творительный
 
 выб = Справочники.Сотрудники.Выбрать();
 Пока выб.Следующий() Цикл
  Если выб.ЭтоГруппа тогда
   Продолжить;
  КонецЕсли;
  ФИО = ТРег(выб.ФамилияУкр) + " " + ТРег(выб.ИмяУкр) + " " + ТРег(выб.ОтчествоУкр);
  Должность = выб.Должность.Наименование;
  Отдел = выб.Отдел.Наименование;
  Результат = Скл.GetFIOPadegFS(ФИО, "", Падеж) + ", " + Скл.GetFullAppointmentPadeg(Должность, Отдел, Падеж);
  Сообщить(Результат);
 КонецЦикла;
Показать полностью
27. Антон Шапка (Mahone) 30.07.09 13:57 Сейчас в теме
Сколько будет стоить полная версия padeg_ua.dll под Delphi и как ее можно приобрести??? Спасибо
28. Dima (sokir) 20.11.09 11:55 Сейчас в теме
Неправильно склоняет:
GetFullAppointmentPadeg("Голова правління","",3) выдаёт "головій правлінні", а надо "голові правлиння".
Или это ограничение демоверсии?
Всё остальное по должностям вроде верно.
Spacer; tarasenkov; +2 Ответить
29. Доржи Цыденов (support) 4385 20.11.09 15:54 Сейчас в теме
30. Александр Тарасенков (tarasenkov) 213 18.02.10 00:22 Сейчас в теме
Выложена полнофункциональная версия с исходными кодами, других исправлений и изменений нет.
31. krosaf4eg (krosaf4eg) 44 24.04.10 21:19 Сейчас в теме
padeg_ua.dll из исходников отличается по размеру с той, что в примерах

почему-то не склоняет в родительном и давательном падежах, оставляет так как есть :cry:
с остальными падежами все нормально
32. Юрий (yuraer) 33 11.05.10 15:43 Сейчас в теме
почему-то не склоняет в родительном и давательном падежах, оставляет так как есть
с остальными падежами все нормально


аналогичная ситуация
33. vip (vip) 11.05.10 16:54 Сейчас в теме
(32) Наверное потому, что давательного падежа нету.
Есть дательный. И извратительный.
34. krosaf4eg (krosaf4eg) 44 11.05.10 18:41 Сейчас в теме
35. Александр Тарасенков (tarasenkov) 213 11.05.10 18:59 Сейчас в теме
Извиняйте, люди добрые, поправил, в дательном и родительном теперь склоняет
krosaf4eg; +1 Ответить
36. Сергей (palamars) 26.07.10 15:57 Сейчас в теме
Спасибо полезную штуковину, поставил "плюс".
Нужно доработать склонение фамилий - существительных с чередованием і - о: Чорновіл - Чорновола, Чорноволу
37. Константин Власов (BunnyBoy) 10.08.10 18:59 Сейчас в теме
Добрый день. А есть ли библиотека с функциями склонения украинских фамилий, имен... без КОМ-сервера как это сделано в русской версии?
38. Константин Власов (BunnyBoy) 10.08.10 19:04 Сейчас в теме
Ввиду отсутствия соответствующих прав невозможна регистрация библиотеки. Есть ли какое-нибудь решение?
39. Александр Тарасенков (tarasenkov) 213 10.08.10 20:39 Сейчас в теме
> А есть ли библиотека с функциями склонения украинских фамилий, имен... без КОМ-сервера как это сделано в русской версии?

Это она и есть =) работает и без КОМ-сервера, смотрите пример вызова из Дельфи
40. getikalex alex (getikalex) 24.10.10 17:47 Сейчас в теме
Специально зарегился, чтоб сказать большое спасибо. Очень помогло при склонении имен в рассылках из excel.
tarasenkov; +1 Ответить
41. Владимир Насыров (Spacer) 245 15.08.13 10:23 Сейчас в теме
(1) vip, в украинском на самом деле не 6 падежей, а 7.
Есть еще такой 7-й хитрый падеж - "кличний" называется.:)
42. Владимир Насыров (Spacer) 245 19.08.13 10:48 Сейчас в теме
Обнаружил неправильное склонение фамилии "Палій".
Сейчас склоняет так:

1 Палій Олексій Іванович
2 Палього Олексія Івановича
3 Пальому Олексію Івановичу
4 Палого Олексія Івановича
5 Палім Олексієм Івановичем
6 Пальому Олексієві Івановичеві
7 Палій Олексію Івановиче

Нужно так:

Називний Палій Олексій Іванович
Родовий Палія Олексія Івановича
Давальний Палію Олексію Івановичу
Знахідний Палія Олексія Івановича
Орудний Палієм Олексієм Івановичем
Місцевий Палії Олексії Івановичі
Кличний Палію Олексію Івановиче

Можно ли это как-то исправить?
43. Shrek Shrek (Shrek2015) 19.08.13 14:38 Сейчас в теме
бедные венгры :) как они так живут?
44. Александр Тарасенков (tarasenkov) 213 20.08.13 11:17 Сейчас в теме
(42) Spacer, можете внести в словарь исключений - файл "Padeg_ua.dic"
45. Владимир Насыров (Spacer) 245 20.08.13 13:12 Сейчас в теме
(44) tarasenkov, А как это сделать? Я смотрел описание словаря на сайте компоненты padeg.dll.
Там написано что в файле словаря должно быть 16 секций.
Перепробовал разные варианты, но ничего не помогло.
46. Сергей Галюк (dj_serega) 205 20.04.16 13:40 Сейчас в теме
Спасибо. Пока работает как нужно.

Немного инфы о поключении:
1. Регистрируем компоненту
2. Создаем COM
3. Добавляем dll в созданный COM.
4. Предоставляем доступ пользователю к COM
5. Пользуемся.
47. Сергей Галюк (dj_serega) 205 21.04.16 16:55 Сейчас в теме
не получилось обработать файл исключений :(
Получилось. Нужно вызвать функцию:
UpdateDictionary.
ОбъектСклонения = Новый COMОбъект("Padeg_ua.Declension");
ОбъектСклонения.UpdateDictionary();
48. gupdn (gupdn) 30.09.16 13:19 Сейчас в теме
При склонении фамилий на -ок не происходит выпадения гласной (Костючок— Костючока вместо Костючка). Список исключений вроде не решает
49. V Z (UserPro) 4 14.01.17 03:51 Сейчас в теме