Функция перевода ФИО в дательный падеж
Пользовательская функция (UDF) для перевода ФИО (фамилии, имя, отчества) в дательный падеж.
Новые версии функций (изменения от 2019 года) доступны в надстройке FIO + Propis
Эту функцию можно использовать как в коде программы, так и как формулу в ячейках листа Excel
(см. пример в прикреплённом файле)
PS: Функцию написал не я — нашел на просторах интернета несколько примеров кода, и переработал код для уменьшения количества ошибок при склонении.
Тестировал склонение на списке разнообразных ФИО (см. первый столбец в прикреплённом файле), и заведомо корректных результатах склонения (третий столбец)
Конечно, код не идеальный, — всегда можно найти ФИО, которые будут склоняться неверно.
Но, в целом, удалось добиться весьма неплохого результата (по сравнению с прежней версией кода, и другими аналогичными функциями)
Если вы используете функции склонения для формирования документов,
обратите внимание на специализированную надстройку FillDocuments,
которая позволит вам одним нажатием кнопки создать документы Word и Excel по шаблонам, а также выполнить рассылку писем.
В указанную надстройку включены самые последние версии функций склонения.
Sub ПереводФИОвДательныйПадеж() ' если фамилия, имя и отчество - в одной переменной (или ячейке) FIO$ = "Сидоров Иван Скотиныч" ДательныйПадеж$ = DativeCase(FIO$) Debug.Print ДательныйПадеж$ ' результат: Сидорову Ивану Скотинычу ' если фамилия, имя и отчество - в разных переменных (или ячейках) Кому$ = DativeCase("Андреева", "Ольга", "Федоровна") Debug.Print Кому$ ' результат: Андреевой Ольге Федоровне End Sub
Код функции DativeCase (новая версия, от 29 января 2013 года):
Option Compare Text ' эта строка нужна обязательно! (сравнение без учёта регистра) Function DativeCase(sSurname$, Optional sName$, Optional sPatronymic$) As String ' Функция формирует дательный падеж из ФИО ' Параметры: sSurname - фамилия, sName - имя, sPatronymic - отчество ' © 2013 EducatedFool Application.Volatile True ' автопересчёт формулы на листе sSurname$ = Replace(sSurname$, " - ", "-"): sSurname$ = Replace(Replace(sSurname$, " -", "-"), "- ", "-") On Error Resume Next If sName$ = "" And sPatronymic$ = "" Then arr = Split(Application.Trim(sSurname$)) sSurname$ = arr(0): sName$ = arr(1): sPatronymic$ = Replace(arr(2), ".", "") End If ' пол теперь определяется иначе: что заканчивается на "вна" или "кызы" - то женщины, остальные - мужчины. Dim bMaleSex As Boolean: ' bMaleSex = (Right(sPatronymic, 1) = "ч" Or Right(sPatronymic, 4) = "оглы") bMaleSex = Not (Right(sPatronymic, 2) = "на" Or Right(sPatronymic, 4) = "кызы") If Len(sSurname) > 0 Then ' Фамилия arrSurname = Split(sSurname, "-") For i = LBound(arrSurname) To UBound(arrSurname) ' перебираем все части фамилий, содержащих дефис sRes = "": sSurnamePart = arrSurname(i) If bMaleSex Then ' мужские фамилии Select Case Right(sSurnamePart, 1) Case "о", "и", "ы", "у", "э", "е", "ю": sRes = sSurnamePart Case "ь", "й": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ю" Case "я", "а": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "е" If UBound(arrSurname) > 0 And i = 0 Then sRes = sSurnamePart Case Else: sRes = sSurnamePart & "у" End Select Select Case Right(sSurnamePart, 2) ' добавлено, для редких фамилий Case "ец": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "цу" If LCase(sSurnamePart) Like "*[уеыаоэяиюё]ец" Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "цу" If LCase(sSurnamePart) Like "*[!уеыаоэяиюё][!уеыаоэяиюё]ец" Then sRes = sSurnamePart & "у" Case "зе", "их", "ых": sRes = sSurnamePart Case "ый": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ому" Case "ий", "ой": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ому" If Len(sSurnamePart) Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ю" If Right(sSurnamePart, 3) = "чий" Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ему" Case "уй": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ую" End Select Else ' женские фамилии Select Case Right(sSurnamePart, 1) Case "о", "е", "э", "и", "ы", "у", "ю", "б", "в", "г", "д", "ж", "з", "к", "л", "м", "н", "п", _ "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ", "ь", "й": sRes = sSurnamePart Case "я": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ой" Case Else: sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ой" End Select Select Case Right(sSurnamePart, 2) ' добавлено, для редких фамилий Case "ха", "ла", "ее": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "е" End Select End If ' не склоняются мужские и женские фамилии, оканчивающиеся на -о, -е, -э, -и, -ы, -у, -ю, ' а также на -а с предшествующей гласной If LCase(sSurnamePart) Like "*[уеыаоэяиюё]а" Then sRes = sSurnamePart arrSurname(i) = sRes Next DativeCase = Join(arrSurname, "-") & " " ' соединяем части склоняемой фамилии обратно в одну строку End If If Len(sName) > 0 Then ' Имя NameException$ = GetDativeException(sName) If Len(NameException$) Then ' для имен-исключений DativeCase = DativeCase & NameException$ Else ' имя не найдено в списке исключений If bMaleSex Then Select Case Right(sName, 1) Case "й", "ь": DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "ю" Case "я", "а": DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "е" Case "о": DativeCase = DativeCase & sName Case Else: DativeCase = DativeCase & sName & "у" End Select Else Select Case Right(sName, 1) Case "а", "я" If Mid(sName, Len(sName) - 1, 1) = "и" Then DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "и" Else DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "е" End If Case "ь": DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "и" Case Else: DativeCase = DativeCase & sName End Select End If End If DativeCase = DativeCase & " " End If If Len(sPatronymic) > 0 Then ' Отчество If Right(sPatronymic, 4) = "оглы" Or Right(sPatronymic, 4) = "кызы" Then DativeCase = DativeCase & sPatronymic Else If bMaleSex Then DativeCase = DativeCase & sPatronymic & "у" Else DativeCase = DativeCase & Mid(sPatronymic, 1, Len(sPatronymic) - 1) & "е" End If End If End If DativeCase = Replace(DativeCase, "-", "- ") DativeCase = StrConv(DativeCase, vbProperCase) DativeCase = Replace(DativeCase, "- ", "-") End Function
Function GetDativeException(ByVal txt$) As String ' склонение имён-исключений Select Case txt$ Case "Павел": GetDativeException = "Павлу" Case "Лев": GetDativeException = "Льву" Case "Пётр": GetDativeException = "Петру" ' без изменения (не склоняются) - перечисляем через запятую Case "Али", "Бали": GetDativeException = txt$ End Select End Function
| Dative_and_Genitive_Case.zip — склонение в родительный и дательный падеж на VBA | 72.28 КБ |
| Dative_and_Genitive_Case.xls — версия от 30 октября 2014 года (с поддержкой разных алфавитов в ФИО) | 259.5 КБ |
Как просклонять фио в excel
Фриланс маркетплейс
Пользователей онлайн: 1143
Последний заказ: 23 сек. назад
Логотип и брендинг
Презентации и инфографика
Арт и иллюстрации
Веб и мобильный дизайн
Маркетплейсы и соцсети
Интерьер и экстерьер
Обработка и редактирование
Полиграфия
Промышленный дизайн
Наружная реклама
Доработка и настройка сайта
Создание сайтов
Десктоп программирование
Скрипты и боты
Мобильные приложения
Сервера и хостинг
Юзабилити, тесты и помощь
Тексты и наполнение сайта
Набор текста
Продающие и бизнес тексты
Резюме и вакансии
Статистика и аналитика
Соцсети и SMM
Контекстная реклама
Базы данных и клиентов
E-mail рассылки
Маркетплейсы и доски объявлений
Реклама и PR
Аудиозапись и озвучка
Музыка и песни
Редактирование аудио
Интро и анимация логотипа
Видеоролики
Персональный помощник
Бухгалтерия и налоги
Обзвоны и продажи
Юридическая помощь
Продажа сайтов
Подбор персонала
Презентация
Обучение и консалтинг
Стройка и ремонт
Логотип и брендинг
Презентации и инфографика
Арт и иллюстрации
Веб и мобильный дизайн
Маркетплейсы и соцсети
Интерьер и экстерьер
Обработка и редактирование
Полиграфия
Промышленный дизайн
Наружная реклама
Доработка и настройка сайта
Создание сайтов
Десктоп программирование
Скрипты и боты
Мобильные приложения
Сервера и хостинг
Юзабилити, тесты и помощь
Тексты и наполнение сайта
Набор текста
Продающие и бизнес тексты
Резюме и вакансии
Статистика и аналитика
Соцсети и SMM
Контекстная реклама
Базы данных и клиентов
E-mail рассылки
Маркетплейсы и доски объявлений
Реклама и PR
Аудиозапись и озвучка
Музыка и песни
Редактирование аудио
Интро и анимация логотипа
Как просклонять фио в excel
А с цифрами всё намного проще — есть готовые надстройки, позволяющие переводить числа в слова в разных падежах.
Осталось только поискать.
Впрочем, возможно, что в некоторых из этих надстроек есть функции и для обработки фамилий.
У меня таких надстроек нет, но они мне очень часто попадались на форумах по Excel.
(добавлено позже)
На базе функции, предложенной diment, сделал чуть более универсальную UDF для перевода ФИО в дательный падеж:
http://excelvba.ru/code/DativeCase
————- новые версии функций склонения, от 29 января 2013 г. ———————
Функции склонения, для использования в макросах,
или в качестве пользовательской функции на листе Excel:

__ Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов
Последний раз редактировалось EducatedFool; 29.01.2013 в 02:05 .
| EducatedFool |
| Посмотреть профиль |
| Найти ещё сообщения от EducatedFool |
Форумчанин
Регистрация: 24.06.2008
Сообщений: 516
Натолкнулся на реализацию библиотеки склонения фамилий. Есть возможность использовать в VBA.
Кому интересно вот ссылка
http://www.delphikingdom.com/asp/vie. _1647532249334
Можно сделать все! Было бы время, да деньги.
Пользователь
Регистрация: 16.06.2009
Сообщений: 20
готовая ф-я перевода ФИО в родительный падеж, стоит только вставить в модуль. по многим переметрам работает надежней представленных в топике
Function GenitiveCaseInCell1(s As String) Dim s1 As String, s2 As String, s3 As String s1 = ChooseWord(s, 1) s2 = ChooseWord(s, 2) s3 = ChooseWord(s, 3) If Len(s1) = 0 Or Len(s2) = 0 Or Len(s3) = 0 Then Exit Function GenitiveCaseInCell1 = GenitiveCase(s1, s2, s3) End Function Private Function GenitiveCase(sSurname As String, sName As String, sPatronymic As String) As String Dim bMaleSex As Boolean bMaleSex = (Right(sPatronymic, 1) = "ч") ' Фамилия If Len(sSurname) > 0 Then If bMaleSex Then Select Case Right(sSurname, 1) Case "о", "и", "я", "а" GenitiveCase = sSurname Case "й" GenitiveCase = Mid(sSurname, 1, Len(sSurname) - 2) + "ого" Case Else GenitiveCase = sSurname + "а" End Select Else Select Case Right(sSurname, 1) Case "о", "и", "б", "в", "г", "д", "ж", "з", "к", "л", "м", "н", "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ", "ь" GenitiveCase = sSurname Case "я" GenitiveCase = Mid(sSurname, 1, Len(sSurname) - 2) & "ой" Case Else GenitiveCase = Mid(sSurname, 1, Len(sSurname) - 1) & "ой" End Select End If GenitiveCase = GenitiveCase & " " End If ' Имя If Len(sName) > 0 Then If bMaleSex Then Select Case Right(sName, 1) Case "й", "ь" GenitiveCase = GenitiveCase & Mid(sName, 1, Len(sName) - 1) & "я" Case Else GenitiveCase = GenitiveCase & sName & "а" End Select Else Select Case Right(sName, 1) Case "а" Select Case Mid(sName, Len(sName) - 1, 1) Case "и", "г" GenitiveCase = GenitiveCase & Mid(sName, 1, Len(sName) - 1) & "и" Case Else GenitiveCase = GenitiveCase & Mid(sName, 1, Len(sName) - 1) & "ы" End Select Case "я" If Mid(sName, Len(sName) - 1, 1) = "и" Then GenitiveCase = GenitiveCase & Mid(sName, 1, Len(sName) - 1) & "и" Else GenitiveCase = GenitiveCase & Mid(sName, 1, Len(sName) - 1) & "и" End If Case "ь" GenitiveCase = GenitiveCase & Mid(sName, 1, Len(sName) - 1) & "и" Case Else GenitiveCase = GenitiveCase & sName End Select End If GenitiveCase = GenitiveCase & " " End If ' Отчество If Len(sPatronymic) > 0 Then If bMaleSex Then GenitiveCase = GenitiveCase & sPatronymic & "а" Else GenitiveCase = GenitiveCase & Mid(sPatronymic, 1, Len(sPatronymic) - 1) & "ы" End If End If End Function ' ChooseWord - выделение i-го слова из строки ' Параметры: sString - строка ' iNum - номер слова (1, 2. ) ' Результат: i-е слово или пустая строка, если такого слова нет Private Function ChooseWord(sString As String, iNum As Integer) Dim sTemp As String Dim i As Integer, iPos As Integer sTemp = Trim(sString) For i = 1 To iNum - 1 iPos = InStr(sTemp, " ") If iPos = 0 Then iPos = Len(sTemp) sTemp = Trim(Right(sTemp, Len(sTemp) - iPos)) Next i iPos = InStr(sTemp, " ") If iPos = 0 Then iPos = Len(sTemp) ChooseWord = Trim(Left(sTemp, iPos)) End Function
в наличии есть так же для перевода в творительный падеж, если будет интересно сброшу
Форумчанин
Регистрация: 02.02.2009
Сообщений: 839
Сообщение от diment
готовая ф-я перевода ФИО в родительный падеж, стоит только вставить в модуль. по многим переметрам работает надежней представленных в топике
Function GenitiveCaseInCell1(s As String) End Function
Вот спасибо!
Сообщение от diment
в наличии есть так же для перевода в творительный падеж, если будет интересно сброшу
Если не сложно, был бы очень признателен.
С уважением, Алексей.
Пользователь
Регистрация: 16.06.2009
Сообщений: 20
слегка напутал. переводит в дательный падеж.
правда сей код работает несколько по другому — не как ф-я, а как процедура
Выделяешь ячейку с ФИО — запускаешь процедуру — получаешь результат.
для перевода в форму «родительного падежа» придется немного ручками поработать
' DativeCaseInCell - дательный падеж от ФИО, записанных ' в текущей ячейке MS Excel ' ' Текущая ячейка должна содержать следующую информацию: ' фамилия, имя и отчество (именно в таком порядке) Public Sub DativeCaseInCell() Dim s1 As String, s2 As String, s3 As String s1 = ChooseWord(ActiveCell, 1) s2 = ChooseWord(ActiveCell, 2) s3 = ChooseWord(ActiveCell, 3) If Len(s1) = 0 Or Len(s2) = 0 Or Len(s3) = 0 Then Exit Sub Cells(ActiveCell.Row, ActiveCell.Column) = DativeCase(s1, s2, s3) End Sub ' DativeCase - формирование дательного падежа от ФИО ' ' Параметры: sSurname - фамилия ' sName - имя ' sPatronymic - отчество ' ' Результат: ФИО в дательном падеже Private Function DativeCase(sSurname As String, sName As String, sPatronymic As String) As String Dim bMaleSex As Boolean bMaleSex = (Right(sPatronymic, 1) = "ч") ' Фамилия If Len(sSurname) > 0 Then If bMaleSex Then Select Case Right(sSurname, 1) Case "о", "и", "я", "а" DativeCase = sSurname Case "й" DativeCase = Mid(sSurname, 1, Len(sSurname) - 2) + "ому" Case Else DativeCase = sSurname + "у" End Select Else Select Case Right(sSurname, 1) Case "о", "и", "б", "в", "г", "д", "ж", "з", "к", "л", "м", "н", "п", "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ", "ь" DativeCase = sSurname Case "я" DativeCase = Mid(sSurname, 1, Len(sSurname) - 2) & "ой" Case Else DativeCase = Mid(sSurname, 1, Len(sSurname) - 1) & "ой" End Select End If DativeCase = DativeCase & " " End If ' Имя If Len(sName) > 0 Then If bMaleSex Then Select Case Right(sName, 1) Case "й", "ь" DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "ю" Case Else DativeCase = DativeCase & sName & "у" End Select Else Select Case Right(sName, 1) Case "а", "я" If Mid(sName, Len(sName) - 1, 1) = "и" Then DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "и" Else DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "е" End If Case "ь" DativeCase = DativeCase & Mid(sName, 1, Len(sName) - 1) & "и" Case Else DativeCase = DativeCase & sName End Select End If DativeCase = DativeCase & " " End If ' Отчество If Len(sPatronymic) > 0 Then If bMaleSex Then DativeCase = DativeCase & sPatronymic & "у" Else DativeCase = DativeCase & Mid(sPatronymic, 1, Len(sPatronymic) - 1) & "е" End If End If End Function ' ChooseWord - выделение i-го слова из строки ' ' Параметры: sString - строка ' iNum - номер слова (1, 2. ) ' ' Результат: i-е слово или пустая строка, если такого слова нет Private Function ChooseWord(sString As String, iNum As Integer) Dim sTemp As String Dim i As Integer, iPos As Integer sTemp = Trim(sString) For i = 1 To iNum - 1 iPos = InStr(sTemp, " ") If iPos = 0 Then iPos = Len(sTemp) sTemp = Trim(Right(sTemp, Len(sTemp) - iPos)) Next i iPos = InStr(sTemp, " ") If iPos = 0 Then iPos = Len(sTemp) ChooseWord = Trim(Left(sTemp, iPos)) End Function
Последний раз редактировалось diment; 30.07.2009 в 09:19 .
Регистрация: 28.05.2010
Сообщений: 4
Всем привет. Если кому не лень помогите разобраться со склонением. Попытался написать функцию для склонения в винительный падеж ФИО на основе приведенного выше родительного и. ничего не получилось. Помогите позалуйсиа
P. S. С библиотекой склонений вообще беда, так что лучше отдельно функцию или код подкинте если кто может.
Регистрация: 15.11.2010
Сообщений: 3
Есть платный add-in, называется Morpher.XLL. Работает очень хорошо – склоняет ФИО, должности, подразделения и все, что угодно:
Форумчанин
Регистрация: 02.02.2009
Сообщений: 839
Сообщение от morpher
Есть платный add-in, называется Morpher.XLL. Работает очень хорошо – склоняет ФИО, должности, подразделения и все, что угодно:
http://morpher.ru/Products/XLL
Есть правило, что проектах расчитанных на продолжительное время с запасам на модернизацию ни в коем случае НЕЛЬЗЯ использовать платные внешние модули (да и вообще внешних чужих модулей). Это на корню убивает все плюсы самостоятельной разработки, так как практически уничтожает возможность модернизации и ставит весь проект в зависимость от одной мелочи.
Так же не понятно как искать крайних. Предположим в результате малозначимой ошибки (которая столь мала, что раньше ни разу себя не проявила) в вашем модуле организация (человек) понес серъездные убытки (список причин может быть огромен). К кому вопросы: почему так произошло и кто будет возмещать убытки? К программистам? Так они скажует — не наш косяк, мол ошибка в чужом модуле, идите туда. То есть к тебе. :)) Модуль же платный.
И т.п. и т.д.
Так что купить его у тебя может либо дурак, либо лентяй. Хотя и тех и других в нашей стране хватает.
С уважением, Алексей.
Как просклонять фио в excel
. Лень, как всегда, двигала прогресс и в тот самый вечер, когда сотрудник отдела кадров обратился к нам, ИТ-специалистам со слезной просьбой — для составления списков необходимо срочно просклонять три с половиной тысячи фамилий, имен и отчеств сотрудников предприятия в дательный падеж. Исходные данные — таблица Excel. «Может, в Word’е функция есть?» — не терял надежды кадровик. Обещали помочь, на всякий случай попросили срок «до завтра», а там, мол скажем, можем или нет. Начали искать. Оказалось, что подходящих инструментов для этого, не так уж и много, если не сказать, что совсем мало. Но кое-что все же нашли: процедуры made by SuperJur для 1С. Табличку быстренько загрузили в справочник 1С-базы, смастерили простенький запрос и отдали результат кадровику на проверку. Тот, сначала было воодушевленный, кинулся просматривать и, через пару сотен строк списка, пришел к нам с кислой миной — много ошибок, все равно всю ночь работать. Истопили чайник и продолжили поиски. Когда кадровик дошел до первой тысячи, рабочий день уже давным-давно закончился, а на сайте, посвященном программированию в Delphi, обнаружилась недавно выложенная для тестирования библиотека «Склонение ФИО 2.0». Самое главное — в комплекте с библиотекой находились VBA-скрипты для MS Office. Установили библиотеку со скриптами в отдел кадров, пожелали спокойной ночи с удачей и ушли по домам. На следующий день восхищенный кадровик всем рассказывал в 10-й раз, как он «тремя щелчками просклонял три тыщи человек без единой ошибки», правда, признался потом, что проверил только первые 500 — дальше решил «полностью довериться машине» и завалился спать 🙂
Библиотека динамической компоновки «Склонение ФИО, должностей и подразделений» несет на борту набор функций для преобразования фамилии, имени и отчества (ФИО), наименования должности или подразделения, заданных в именительном падеже в форму любого другого падежа, а также для восстановления именительного падежа для ФИО, записанного в произвольном падеже. Склонение ФИО выполняется по правилам склонения имен обственных, принятых в русском языке. ФИО для склонения может быть задано одной или тремя строками при склонении и одной строкой — при восстановлении именительного падежа. Наименование должности или подразделения задается одной строкой. Имеется ряд сервисных функций, которые позволяют определять род и (частично) падеж для ФИО в любом падеже. Программно поддерживается работа со словарем исключений, формат которого похож на обычный ini-файл. Словарь исключений можно настроить более тонко в системном реестре Windows. Поддержка технологии COM в текущей версии библиотеки позволяет применять функции склонения в большинстве сред программирования. ProgID объекта «Padeg.Declension».
Список доступных в режиме OLEAutomation-сервера (т.е. доступных 1С) функций преобразования приведен в таблице:
Возвращает строку — результат склонения фамилии, имени и отчества заданного рода в заданный падеж
Возвращает результат склонения фамилии, имени и отчества, заданных одной строкой, заданного рода в заданный падеж
Возвращает результат склонения имени и фамилии заданного рода в заданный падеж
Возвращает результат склонения имени и фамилии, записанных одной строкой, заданного рода в заданный падеж
Функция выполняет восстановление именительного падежа для ФИО, заданного в произвольном падеже в формате «»Фамилия Имя Отчество»»
Возвращает результат склонения наименования должности в заданный падеж
Возвращает результат склонения объединения наименований должности и подразделения в заданный падеж
Возвращает результат склонения наименования подразделения, записанного одной строкой, в заданный падеж
Возвращает число — род ФИО
Возвращает число, номер падежа ФИО, записанного в произвольном падеже одной строкой
Более детальная информация, подробнейшая документация и последние версии библиотеки находятся здесь. Там же вы найдете и файл справки для Синтакс-помощника Конфигуратора.
Прошло около года. К тому времени у нас накопилась довольно большая база данных сотрудников, «самописно» реализованная на 1С и используемая для формирования различных справок. Кадровики вспомнили про библиотеку: «А нельзя ли прямо из 1С склонять фамилии? Вот в Excel’е ведь можно!» Да, неплохо было бы прикрутить к 1С такую замечательную штуку. Но библиотека доступна программно только через секцию Export, а движок 1С не предоставляет функционала для использования библиотек динамической загрузки таким способом. И тогда вспомнили про внешние компоненты. Так родился COM-сервер «Сервис поддержки склонений для 1С» — программная прослойка между 1С:Предприятием и библиотекой «Склонение ФИО».
Первая версия компоненты позволяла использовать в среде 1С все функции, экспортируемые библиотекой «Склонение ФИО 2.0 «, в том числе, обращаясь к ним по русскоязычным синонимам. Некоторые параметры перед передачей экспортируемым функциям анализировались компонентой, и, в зависимости от ситуации, осуществлялся вызов той или иной функции библиотеки. По сути, получился шлюз, позволяющий программно склонять ФИО в среде 1С. Пожалуй, главным недостатком этого механизма было отсутствие поддержки склонения наименований должностей и подразделений. Это было учтено создателями библиотеки при разработке следующей версии, что, в свою очередь, привело и к усовершенствованию компоненты.
Внешняя компонента 1С «Сервис поддержки склонений ФИО для V7» (V7 Name Declension Support, NDS). COM-объект компоненты осуществляет динамические вызовы функций, экспортируемых библиотекой padeg.dll. Реализация NDS полностью соответствует «технологии создания внешних компонент» 1С (AddIn 2.0 Type Library), это дает возможность написания кода с использованием русскоязычных синонимов методов объекта. Ndeclin корректно обрабатывает параметры со значениями типа «Справочник». Текущая версия компоненты имеет страницу свойств на своей закладке диалога Параметры, на которой имеются органы управления словарём исключений. ProgID объекта «AddIn.NameDeclination»
Обновленная (третья) версия библиотеки Padeg.dll реализует собственный объект сервера автоматизации, и это дает возможность использования функций склонения в составе конфигурации 1С без применения каких-либо вспомогательных средств, но некоторые обстоятельства делают подключение библиотеки «через шлюз» более привлекательным. Это особенно актуально при использовании библиотеки «Склонение ФИО. » в составе сетевых ИБ.
Полный список изменений в текущей версии компоненты таков:
- устранена «регистрозависимость» названий методов
- добавлена поддержка новых функций, появившихся в padeg.dll (для склонения должностей и подразделений, определения рода и падежа и др.)
- расширено множество входных параметров (женский род , мужской род , падежи )
- параметры, обозначающие род и падеж можно передавать числами или целыми фразами, будет учитываться начальный символ (например: «female», «Дательный»)
- корректно обрабатываются параметры типа «Справочник» (на вход функции библиотеки передается значение наименования)
- словарем исключений теперь можно управлять как интерактивно, со страницы свойств компоненты, так и программно, специальными методами.
- компонента ищет библиотеку «Склонение ФИО» в порядке, аналогичном тому, как 1С ищет файл внешней компоненты при выполнении метода «ЗагрузитьВнешнююКомпоненту()»: сначала в каталоге информационной базы, затем — в каталоге с исполняемыми файлами 1С, в системных каталогах операционной системы. Это даёт, например, возможность не регистрировать COM-сервер padeg.dll на каждой рабочей станции, а просто положить весь «джентельменский набор» (ndeclin.dll, padeg.dll, except.dic) в каталог ИБ на сервере.
Список методов и свойств компоненты приведен ниже:
Возвращает результат склонения фамилии, имени и отчества заданного рода в заданный падеж. Возможно автоматическое определение рода по отчеству.
Возвращает результат склонения фамилии, имени и отчества, заданных одной строкой, заданного рода в заданный падеж. Возможно автоматическое определение рода по отчеству.
Возвращает результат склонения имени и фамилии заданного рода в заданный падеж
Возвращает результат склонения имени и фамилии, записанных одной строкой, заданного рода в заданный падеж
Функция выполняет восстановление именительного падежа для ФИО, заданного в произвольном падеже одной строкой
Возвращает результат склонения наименования должности в заданный падеж
Возвращает результат склонения наименования подразделения, записанного одной строкой, в заданный падеж
Возвращает число — род ФИО, определенный по отчеству
Возвращает число, номер падежа ФИО, записанного в произвольном падеже одной строкой
Процедура разделяет ФИО, записанные одной строкой на составляющие: фамилию, имя, отчество.
Процедура обновляет текущий словарь исключений
Возвращает имя файлв текущего словаря исключений
Устанавливает текущий словарь исключений
Свойство (только для чтения). Метод интрепретации числовых значений рода
Свойство (только для чтения). Каталог автозагрузки словаря исключений (значение из реестра)
Свойство (только для чтения). Символ ударной гласной (значение из реестра)
Свойство (только для чтения). Позиция символа ударной гласной (значение из реестра)
Возвращает версию компоненты или библиотеки — строку вида «1.2.0.16»
Подробное описание методов и свойств компоненты находится в файле справки для Синтакс-помощника Конфигуратора.