|
|
Ядро (padeg.dll)
...Лень, как всегда, двигала прогресс и в тот самый вечер, когда сотрудник отдела кадров обратился к нам, ИТ-специалистам со слезной просьбой - для составления списков необходимо срочно просклонять три с половиной тысячи фамилий, имен и отчеств сотрудников предприятия в дательный падеж. Исходные данные - таблица Excel. "Может, в Word'е функция есть?" - не терял надежды кадровик... Обещали помочь, на всякий случай попросили срок "до завтра", а там, мол скажем, можем или нет. Начали искать... Оказалось, что подходящих инструментов для этого, не так уж и много, если не сказать, что совсем мало. Но кое-что все же нашли: процедуры made by SuperJur для 1С. Табличку быстренько загрузили в справочник 1С-базы, смастерили простенький запрос и отдали результат кадровику на проверку. Тот, сначала было воодушевленный, кинулся просматривать и, через пару сотен строк списка, пришел к нам с кислой миной - много ошибок, все равно всю ночь работать. Истопили чайник и продолжили поиски... Когда кадровик дошел до первой тысячи, рабочий день уже давным-давно закончился, а на сайте, посвященном программированию в Delphi, обнаружилась недавно выложенная для тестирования библиотека "Склонение ФИО 2.0". Самое главное - в комплекте с библиотекой находились VBA-скрипты для MS Office. Установили библиотеку со скриптами в отдел кадров, пожелали спокойной ночи с удачей и ушли по домам... На следующий день восхищенный кадровик всем рассказывал в 10-й раз, как он "тремя щелчками просклонял три тыщи человек без единой ошибки", правда, признался потом, что проверил только первые 500 - дальше решил "полностью довериться машине" и завалился спать :)
Библиотека динамической компоновки "Склонение ФИО, должностей и подразделений" несет на борту набор функций для преобразования фамилии, имени и отчества (ФИО), наименования должности или подразделения, заданных в именительном падеже в форму любого другого падежа, а также для восстановления именительного падежа для ФИО, записанного в произвольном падеже. Склонение ФИО выполняется по правилам склонения имен обственных, принятых в русском языке. ФИО для склонения может быть задано одной или тремя строками при склонении и одной строкой - при восстановлении именительного падежа. Наименование должности или подразделения задается одной строкой. Имеется ряд сервисных функций, которые позволяют определять род и (частично) падеж для ФИО в любом падеже. Программно поддерживается работа со словарем исключений, формат которого похож на обычный ini-файл. Словарь исключений можно настроить более тонко в системном реестре Windows. Поддержка технологии COM в текущей версии библиотеки позволяет применять функции склонения в большинстве сред программирования. ProgID объекта "Padeg.Declension".
Список доступных в режиме OLEAutomation-сервера (т.е. доступных 1С) функций преобразования приведен в таблице:
GetFIOPadeg |
Возвращает строку - результат склонения фамилии, имени и отчества заданного рода в заданный падеж |
GetFIOPadegFS |
Возвращает результат склонения фамилии, имени и отчества, заданных одной строкой, заданного рода в заданный падеж |
GetIFPadeg |
Возвращает результат склонения имени и фамилии заданного рода в заданный падеж |
GetIFPadegFS |
Возвращает результат склонения имени и фамилии, записанных одной строкой, заданного рода в заданный падеж |
GetNominativePadeg |
Функция выполняет восстановление именительного падежа для ФИО, заданного в произвольном падеже в формате ""Фамилия Имя Отчество"" |
GetAppointmentPadeg |
Возвращает результат склонения наименования должности в заданный падеж |
GetFullAppointmentPadeg |
Возвращает результат склонения объединения наименований должности и подразделения в заданный падеж |
GetOfficePadeg |
Возвращает результат склонения наименования подразделения, записанного одной строкой, в заданный падеж |
GetSex |
Возвращает число - род ФИО |
GetPadegID |
Возвращает число, номер падежа ФИО, записанного в произвольном падеже одной строкой |
Более детальная информация, подробнейшая документация и последние версии библиотеки находятся здесь. Там же вы найдете и файл справки для Синтакс-помощника Конфигуратора.
Шлюз (ndeclin.dll)
Прошло около года... К тому времени у нас накопилась довольно большая база данных сотрудников, "самописно" реализованная на 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 (для склонения должностей и подразделений, определения рода и падежа и др.)
- расширено множество входных параметров (женский род {"ж","f"}, мужской род {"м","m"}, падежи {1..6,"и".."т","i".."t"})
- параметры, обозначающие род и падеж можно передавать числами или целыми фразами, будет учитываться начальный символ (например: "female", "Дательный")
- корректно обрабатываются параметры типа "Справочник" (на вход функции библиотеки передается значение наименования)
- словарем исключений теперь можно управлять как интерактивно, со страницы свойств компоненты, так и программно, специальными методами.
- компонента ищет библиотеку "Склонение ФИО" в порядке, аналогичном тому, как 1С ищет файл внешней компоненты при выполнении метода "ЗагрузитьВнешнююКомпоненту()": сначала в каталоге информационной базы, затем - в каталоге с исполняемыми файлами 1С, в системных каталогах операционной системы. Это даёт, например, возможность не регистрировать COM-сервер padeg.dll на каждой рабочей станции, а просто положить весь "джентельменский набор" (ndeclin.dll, padeg.dll, except.dic) в каталог ИБ на сервере.
Список методов и свойств компоненты приведен ниже:
ПолучитьСклонениеФИО
GetFIOPadeg(AS) |
Возвращает результат склонения фамилии, имени и отчества заданного рода в заданный падеж. Возможно автоматическое определение рода по отчеству. |
ПолучитьСклонениеФИОизСтроки
GetFIOPadegFS(AS) |
Возвращает результат склонения фамилии, имени и отчества, заданных одной строкой, заданного рода в заданный падеж. Возможно автоматическое определение рода по отчеству. |
ПолучитьСклонениеИФ
GetIFPadeg |
Возвращает результат склонения имени и фамилии заданного рода в заданный падеж |
ПолучитьСклонениеИФизСтроки
GetIFPadegFS |
Возвращает результат склонения имени и фамилии, записанных одной строкой, заданного рода в заданный падеж |
ВосстановитьИменительный
GetNominativePadeg |
Функция выполняет восстановление именительного падежа для ФИО, заданного в произвольном падеже одной строкой |
ПолучитьСклонениеДолжности
Get(Full)AppointmentPadeg |
Возвращает результат склонения наименования должности в заданный падеж |
ПолучитьСклонениеПодразделения
GetOfficePadeg |
Возвращает результат склонения наименования подразделения, записанного одной строкой, в заданный падеж |
ПолучитьРод
GetSex |
Возвращает число - род ФИО, определенный по отчеству |
ПолучитьПадеж
GetPadegID |
Возвращает число, номер падежа ФИО, записанного в произвольном падеже одной строкой |
РазделитьФИО
SeparateFIO |
Процедура разделяет ФИО, записанные одной строкой на составляющие: фамилию, имя, отчество. |
ОбновитьСловарьИсключений
UpdateExceptions |
Процедура обновляет текущий словарь исключений |
ПолучитьСловарьИсключений
GetExceptions |
Возвращает имя файлв текущего словаря исключений |
УстановитьСловарьИсключений
SetExceptions |
Устанавливает текущий словарь исключений |
РежимРода
SexMode |
Свойство (только для чтения). Метод интрепретации числовых значений рода |
КаталогСловаряИсключений
ExceptionDicDir |
Свойство (только для чтения). Каталог автозагрузки словаря исключений (значение из реестра) |
СимволУдарения
AccentSymbol |
Свойство (только для чтения). Символ ударной гласной (значение из реестра) |
ПозицияСимволаУдарения
AccentPosition |
Свойство (только для чтения). Позиция символа ударной гласной (значение из реестра) |
ПолучитьВерсию
GetVersion |
Возвращает версию компоненты или библиотеки - строку вида "1.2.0.16" |
Подробное описание методов и свойств компоненты находится в файле справки для Синтакс-помощника Конфигуратора.
|
|
|