gifts2017

Склонение украинских ФИО, должностей и подразделений в семи падежах. 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 + Исходники 240
.zip 499,90Kb
11.05.10
240
.zip 499,90Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. vip (vip) 08.11.07 17:43
Падежей в русском и украинском вроде шесть.
А вот в венгерском 126.
Слабо расширение для венгерского сделать? :)
2. Tarasenkov (tarasenkov) 08.11.07 17:49
3. Аркадий Кучер (Abadonna) 08.11.07 17:59
(1) Андрей, а ты откуда мадьярский знаешь? ;)
4. vip (vip) 08.11.07 18:05
(3) Да я и китайским, как ты знаешь, в совершенстве владею :)))
5. Владимир Костецкий (astonvilla) 09.11.07 11:56
Минус за "Стоимость регистрации одного рабочего места: 500 грн.".
Как по мне - дороговато.
vasilykushnir; +1 Ответить 1
6. VasilyKushnir (vasilykushnir) 09.11.07 12:05
(5) Не многовато, а дохырища! Минусы не ставлю принципиально, хотя руки чешутся....
7. Владимир Костецкий (astonvilla) 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) 09.11.07 12:47
А 500 грн это скока на деревянные?
10. Владимир Костецкий (astonvilla) 09.11.07 13:09
11. Владимир Костецкий (astonvilla) 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) 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) 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) 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) 27.11.07 11:14
(18) Я мужика по фамилии Кличко как склонять на украинском?
Кличке, Кличком, Кличку? :)))))
20. Андрей (Cortes) 05.02.08 22:36
Идея хорошая. Но есть недостатки. Довольно весомые недостатки, из-за которых жалко тратить деньги на приобретение коммерческой версии.
21. Олег Пономаренко (O-Planet) 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) 20.11.09 15:54
30. Александр Тарасенков (tarasenkov) 18.02.10 00:22
Выложена полнофункциональная версия с исходными кодами, других исправлений и изменений нет.
31. krosaf4eg (krosaf4eg) 24.04.10 21:19
padeg_ua.dll из исходников отличается по размеру с той, что в примерах

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


аналогичная ситуация
33. vip (vip) 11.05.10 16:54
(32) Наверное потому, что давательного падежа нету.
Есть дательный. И извратительный.
34. krosaf4eg (krosaf4eg) 11.05.10 18:41
35. Александр Тарасенков (tarasenkov) 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) 10.08.10 20:39
> А есть ли библиотека с функциями склонения украинских фамилий, имен... без КОМ-сервера как это сделано в русской версии?

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

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

Нужно так:

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

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

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