Склонение ФИО, должностей и подразделений в 1С? Это просто!    
   
Главная | Словоблудие | Изучаем | Подключаем | Склоняем | Файлы и ссылки
   

 

 


Ядро (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"

Подробное описание методов и свойств компоненты находится в файле справки для Синтакс-помощника Конфигуратора.

 

   
   
(C) 2007 NDeclin
   
Hosted by uCoz