Как в 1с склонять фамилии. Исходный код модулей
При работе в 1С пользователь сталкивается с вопросом склонения фамилии или должности сотрудника в печатных формах документов, то есть с ситуацией, когда надо выполнить склонение фамилий по падежам.
Для склонения ФИО в программах 1С предусмотрена внешняя компонента – NameDecl.dll, в которой содержится функция склонения. Ее можно взять на диске ИТС и, скопировав в папку с установленной платформой 1С – bin, зарегистрировать ее в операционной системе. Выполняется данная процедура при помощи команды resvr32 NameDecl.dll (под учетной записью администратора). Для этого необходимо вызвать команду «Выполнить» через кнопку «Пуск», воспользовавшись поиском или сочетание клавиш Windows + R.
Рис.1 Окно поиска. Поиск команды «Выполнить»
В появившемся окне вводим команду resvr32.exe и указываем путь к подключаемой библиотеке, используя кнопку «Обзор».
Рис.2 Окно команды «Выполнить»
После нажатия «Ок» появится сообщение о том, что библиотека успешно зарегистрирована.
Рис.3 Окно сообщения
Описание метода склонения в 1С
Просклонять (ФИО, Падеж, Пол) по параметрам:
- ФИО (обязательный), тип – строка
- Падеж (обязательный), тип – число
Падеж, в который необходимо поставить ФИО, задается числом от 1 до 6.
Таблица падежей: вопросы, предлоги и их значения в программном коде
Случается, возникает неоднозначная ситуация, когда программе необходимо определить принадлежность фамилии к полу, например, Сигида, Чепко, Сушко, Оганезян и т.д.
В этом случае используют дополнительный параметр:
- Пол (необязательный), тип – число
Он показывает, склонять или не склонять фамилию. В других случаях этот параметр опускают или используют значение 0 («авто»), т.к. неправильное указание пола может повлиять на правильность склонения. Здесь возможные значения: 0 – авто, 1 – мужской, 2 – женский.
Сервис «Склонение по падежам»
В программах 1С 8.3 уже включен сервис для склонения данных сотрудников или контрагентов в соответствии с применяемыми в документе падежами.
Фрагмент 1
#Область ПрограммныйИнтерфейс // Склоняет ФИО // Только яля работы на ОС Windows. // // Параметры: // ФИО - Строка - Строка, в которой содержится ФИО для склонения. // Падеж - Число - падеж, в который необходимо просклонять представление объекта. // 1 - Именительный. // 2 - Родительный. // 3 - Дательный. // 4 - Винительный. // 5 - Творительный. // 6 - Предложный. // Объект - СбъехтСклонения - Ссылка на объект, реквизит которого склоняется // Пол - Число - Число - пол физического лида, // 1 - мужской, // 2 - женский. // // Возвращаемое значение: // Строка - Результат склонения ФИО в падеже. // Функция ПросклонятьФИО(ФИО, Падеж, Объект = Неопределемо, Пол = Неопределено) Экспорт // Склоняет представление объекта. Функция ПросклонятьПредставлекие(Представление, Падеж, Объект = Неопределено) Экспорт // Выполняет с формой действия, необходимые для подключения подсистемы Склонения.Рис.4 Окно конфигуратора
Фрагмент 2
// Склоняет представление объекта. Функция ПросклонятьПредставление(Представление, Падеж, Объект = Неопределено) Экспорт Возврат Просклонять(Представление, Падеж, Объект); Конецфункции // Выполняет с формой действия, не обходимые для подключения подсистемы Склонения Процедура ПриСозданииНаСервере(Форма, Представление, ИмяОсновногоРеквизитаФормы = "Объект") Экспорт // Обработчик события ПриЗаписиНаСервере управляемой формы объекта для склонения Процедура ПриЗаписиНаСервере(Форма, Представление, Объект, ЭтоФИО = Ложь, Пол = Неопределено) Экспорт // Устанавливает признак доступности сервиса склонения Процедура УстановитьДоступнсстьСервисаСклонения(Доступность) Экспорт УстановитьПривилегированныйРежим (Истина); ТекущиеПараметры = Новый Соответствие(ПараметрыСеанса.ПараметрыКлиентаНаСервере); ТекущиеПараметры.Вставить("ДоступенСервисСклонения", Доступность); ПараметрыСеанса.ПараметрыКлиентаНаСервере = Новый ФиксированноеСсответствие(ТекущиеПараметры); УстановитьПривилегированныйРежим(Ложь); КонецПроцедурыРис.5 Использование функции «Просклонять»
Используя в документе реквизиты, которые выбираются из справочника, в котором они представлены в именительном падеже, в печатную форму документа они будут выведены с нужным склонением.
Рассмотрим функцию склонения на примере договора в «1С:Бухгалтерия» 3.0. (1С:Предприятие 8.3). Здесь предусмотрено склонение ФИО и должности.
Рис.6 Окно формы договора. Настройка склонения фамилии и должности
В печатную форму программа автоматом поставит правильный вариант.
Рис.7 Окно программы – «Склонение по падежам»
Пример склонения по падежам можно видеть в «Приказе о приеме на работу». В карточке сотрудника его ФИО указано в Именительном падеже, а в печатной форме – в Родительном.
Рис.8 Пример склонения ФИО в печатной форме «Приказ о приеме на работу»
Программа 1С, учитывая требования законодательства и стандартов, позволяет соответствовать утвержденному порядку оформления документации и формирования печатных форм.
Склонение по падежам обусловлено и стандартами делового оборота, которые предусматривают, что любой документ должен быть оформлен не только грамотно, но и эстетически грамотно, что отражает статус организации.
Помимо этого использование таких функций в программе, как автосклонение, значительно снижает вероятность ошибок в составлении документов.
Склонение ФИО в 1С 8.3
В ходе эксплуатации комплекса программного обеспечения 1С у пользователей часто возникают вопросы относительно склонения ФИО 1С 8.3. 1С функция склонения ФИО осуществляется специальной компонентой, которая именуется как "NameDecl.dll". Для старта использования компоненту необходимо скопировать с диска информационно-технического сопровождения в папку, где расположена основная платформа bin, а также зарегистрировать ее в операционке. Осуществляется копирование через команду «resvr32 NameDecl.dll». С этой целью открываем «Пуск» вызываем директиву «Выполнить», как это показано на рисунке.
Открываем окно и прописываем «resvr32.exe», указывая путь к нужной библиотеке. Библиотека выбирается через кнопку «Обзор». Далее нужно выбрать «ОК» и подтвердить регистрацию библиотеки.
1с склонение ФИО выполняется по 2 параметрам:
- Падеж, тип - число. Это обязательный параметр.
- ФИО, тип - строка. Также является обязательным параметром.
Так как в русском языке имеется шесть падежей, падежу присваивается число от 1 до 6 в соответствии с таблицей, представленной ниже:
Также выделяют третий, необязательный параметр компоненты склонения ФИО 1С - пол (тип - число). Здесь есть 3 варианта: 0 - авто, 1 - муж, 2 - жен.
Сервис 1С 8 склонение ФИО
Программы версии 1С 8.3 имеют специальный сервис для склонения ФИО по падежам 1С 8.3, который работает через конфигуратор. Поэтому, чтобы просклонять ФИО, открываем окно конфигуратора и используем функцию «Просклонять», как это показано ниже:
Реквизиты вводим из справочника, где они отображены в именительном падеже. На печать документы выводятся и отображаются в формах уже в желаемом склонении. В качестве примера, вот это выглядит в форме договора:
В качестве примера ниже представлении приказ о найме на работу, где в карточки специалиста его фамилия, имя и отчество прописаны в И.П., а вот в печатной форме они отображаются в Р.П.
1С автоматически дает возможность составлять печатные формы и документацию с учетом действующих требований законодательства. Необходимость склонения по падежам, родам и числам продиктована стандартами делового документооборота, согласно которым любой документ составляется эстетично, грамотно и соответствует статусу компании.
Применение функции автосклонения минимизирует вероятность ошибок при формировании документов, что защищает от негативных последствий в будущем. Особенно актуально это для тех случаев, когда формируется сразу большое количество документов. Автосклонение рационализирует работу с документацией и экономит время, что положительно сказывается на результативности.
Мы разобрали 2 способа склонения фамилии, имя отчества по падежам, числам и родам - с помощью специальной компоненты склонения ФИО 1С 8.3 и через сервис конфигуратора. Попробуйте оба и определите, какой больше подходит для вас.
Предлагаемая разработка предоставляет программистам 1С функцию склонения по падежам слов и словосочетаний на русском и украинском языках, а также функцию формирования прописи чисел в заданном падеже. Программа умеет склонять фамилии, имена и отчества, а также должности, названия отделов и юридических лиц (на украинском пока только ФИО). Указание пола не требуется. Наоборот, программа автоматически определяет и выдает грамматический род словосочетания, по которому определяется пол лица. Алгоритм демонстрирует высокое качество склонения, а для случаев, когда программа все же ошибается, предусмотрен сервис оперативного исправления ошибок. Программа реализована в виде веб-сервиса, доступного бесплатно всем желающим (до 1000 запросов в сутки). Для вызова функции склонения из 1С 8.2 достаточно 3 строчек кода, при этом не нужно включать в конфигурацию никаких дополнительных DLL. Пример обработки на языке 1С прилагается.
Реализуемые функции
Веб-сервис «Морфер» предназначен для склонения по падежам слов и словосочетаний на русском и украинском языках. Входное словосочетание может быть в единственном или множественном числе, но обязательно в именительном падеже. На выходе генерируется единственное и множественное число во всех падежах и автоматически определяется род.
Например, на входе:
На выходе:
И. | ведущий инженер-программист III категории | ведущие инженеры-программисты III категории |
Р. | ||
Д. | ведущему инженеру-программисту III категории | ведущим инженерам-программистам III категории |
В. | ведущего инженера-программиста III категории | ведущих инженеров-программистов III категории |
Т. | ведущим инженером-программистом III категории | ведущими инженерами-программистами III категории |
П. | о ведущем инженере-программисте III категории | о ведущих инженерах-программистах III категории |
Род: мужской |
Число поддерживаемых типов слово сочетаний не ограничено фамилиями и должностями. Программа умеет склонять также названия подразделений, юридических лиц, географические названия и многое другое. Высокое качество склонения обеспечивается использованием словарей, в частности, «Словаря имен собственных» Ф.Л. Агеенко на 38 000 единиц. За 9 лет работы над «Морфером» было составлено более 27 000 примеров склонения для русского и более 11 000 для украинского языка. База примеров постоянно пополняется и используется для контроля качества продукта.
Веб-сервис также реализует функцию прописи чисел и денежных сумм в произвольном падеже, позволяющую формировать такие фразы как: «в течение 7 (Семи) календарных дней» («21 календарного дня»), «в размере 1000 (Одной тысячи) рублей» («десяти тысяч рублей») и т.п. Склонение единицы измерения также осуществляется автоматически. Нет необходимости указывать заранее все падежные формы ("рубль", "рубля", "рублей").
Быстрый старт: склонение должности
Программа для склонения должности будет выглядеть так:
Морфер = Обработки.Морфер.Создать(); Результат = Морфер.СклонятьРусский("Генеральный директор"); Сообщить("Родительный (кого?): " + Результат.Р); Сообщить("Дательный (кому?): " + Результат.Д); Сообщить("Винительный (кого?): " + Результат.В); Сообщить("Творительный (кем?): " + Результат.Т);
Чтобы проверить, как работает этот код, скачайте и установите внешнюю сборку из.epf файла (Обработки, правый клик, вставить внешнюю обработку), скопируйте пример в Конфигуратор (Конфигурация, правый клик, «Открыть модуль обычного приложения», Вставить) и вставьте, например, в процедуру ПриНачалеРаботыСистемы. После запуска программы (F5) в окне сообщений появится директор во всех падежах:
Родительный (кого?): Генерального директора Дательный (кому?): Генеральному директору Винительный (кого?): Генерального директора Творительный (кем?): Генеральным директором Предложный (о ком?): о Генеральном директоре
Для украинского языка функция склонения называется СклонятьУкраинский:
Результат = Морфер.СклонятьУкраинский("Лук"янченко Леонід Аркадійович"); Сообщить("Родовий (кого?): " + результат.Р); Сообщить("Давальний (кому?): " + результат.Д); Сообщить("Знахідний (кого?): " + результат.З); Сообщить("Орудний (ким?): " + результат.О); Сообщить("Місцевий (на кому?): " + результат.М); Сообщить("Кличний: " + результат.К);
Результат:
Родовий (кого?): Лук"янченка Леоніда Аркадійовича Давальний (кому?): Лук"янченку Леоніду Аркадійовичу Знахідний (кого?): Лук"янченка Леоніда Аркадійовича Орудний (ким?): Лук"янченком Леонідом Аркадійовичем Місцевий (на кому?): Лук"янченку Леоніді Аркадійовичі Кличний: Лук"янченко Леоніде Аркадійовичу
Украинская версия пока лучше всего справляется с фамилиями, именами и отчествами. Работа над другими типами словосочетаний ведется.
Для улучшения качества склонения можно передавать признаки.
Признаки = Новый Массив(); Признаки.Добавить("name"); Признаки.Добавить("feminine"); результат = Морфер.СклонятьРусский("Щукина Ольга Александровна", Признаки);
На данный момент доступны след. признаки: name, feminine, masculine, neuter, animate, inanimate, common, plural.
Функция построения прописи числа в любом падеже
Функция ПрописьРусский (ПрописьУкраинский) решает две родственные задачи: получение прописи числа (тысяча сто двадцать пять) и согласование единицы измерения с предшествующим числом (1 попугай, 2 попугая, 5 попугаев). Пример:
// Пример написания денежной суммы прописью в родительном падеже: пропись = Морфер.ПрописьРусский(235, "рубль"); Сообщить(пропись.n.И + " " + пропись.unit.И); Сообщить("в размере " + пропись.n.Р + " " + пропись.unit.Р);
Результат:
Двести тридцать пять рублей в размере двухсот тридцати пяти рублей
Функция принимает два аргумента:
n – целое положительное число.
unit – единица измерения – слово или словосочетание в именительном падеже единственного числа: «рубль», «доллар США», «календарный день», «новое письмо» и т.п. Если слово употребляется только во множественном числе, то указывается форма именительного падежа множественного числа: «сутки», «брюки», «ножницы».
Результат, возвращаемый функцией Прописьрусский, содержит два набора падежных форм: один для числа (n), другой для единицы измерения (unit). Комбинируя соответствующие падежные формы n и unit, можно получить вывод «суммы прописью» на любой вкус:
235 рублей Двести тридцать пять рублей 235 (двести тридцать пять) рублей и т.п.
Комбинировать имеет смысл только соответствующие падежные формы n и unit – именительный с именительным, родительный с родительным и т.д. Например, для получения фразы "в размере N рублей (долларов, евро...)", берем родительный падеж (Р): в размере + двухсот тридцати пяти + рублей.
Склонение прилагательных по родам
Функция СклонятьПрилагательноеПоРодам склоняет данное ей прилагательное, преобразуя его из мужского рода в женский, средний и во множественное число:
Результат = Морфер.СклонятьПрилагательноеПоРодам("уважаемый"); Сообщить("Женский: " + результат.feminine); Сообщить("Средний: " + результат.neuter); Сообщить("Множ. число: " + результат.plural);
Женский: уважаемая
Средний: уважаемое
Множ.число: уважаемые
Авторизация
Для получения доступа к тегам род, откуда, куда, где, а так же снять ограничение на кол-во запросов в сутки, нужно купить подписку на сайте http://morpher.ru/ws3/ И передать токен следующим образом:
Обработка ошибок
Ошибка инициализации модуля: МодульУправляемогоПриложения по причине: {Обработка.Морфер.МодульОбъекта(138)}: Ошибка: Не найдено русских слов. ВызватьИсключение("Ошибка: " + Данные.message);
В данном случае ошибка возникла из-за того, что склоняемая строка не содержит ни одного русского слова. Другой возможный случай – когда склоняемая строка содержит количественное числительное («тридцать три коровы»). Такие словосочетания программа не обрабатывает, выдается ошибка.
Совместимость и устранение неполадок
Модуль выпускается в двух вариантах для 8.3.16 и 8.2.?. Версии отличаются только тем, что версия 8.3.16 использует встроенный десериализатор JSON.
Оперативное исправление ошибок склонения
Склонение как языковой феномен изобилует неоднозначностями, особенно в области имен собственных. В городе Москва или в городе Москве? В республике Корея или в республике Корее? В Тушино или в Тушине? Обладатели «диковинных» фамилий часто не любят, чтобы их склоняли. Скажем, если у человека фамилия Груздь, он будет требовать, чтобы его фамилию не склоняли, часто вопреки правилам русского языка и всеобщему мнению. Но если он ваш начальник, то неизвестно еще, кто останется Груздём, если вы позволите себе просклонять его в договоре.
Не секрет, что алгоритм автоматического склонения тоже может ошибаться – не знать какого-либо слова или запутаться в сложной синтаксической структуре. Что делать, если машина склоняет не так, как надо, а документ должен быть на столе у начальника через 10 минут? Хорошо, если система позволяет вручную исправлять документ после его выдачи. Но исправлять фамилию начальника в каждом приказе тоже не дело. Традиционное решение этой проблемы (если руки дойдут до его реализации) – хранение падежных форм в таблице-справочнике, которая заполняется вручную.
Веб-сервис склонения предоставляет как раз такое «табличное» решение проблемы ошибок в склонении – только вам для этого ничего не нужно делать, все уже реализовано за вас – и база данных, и интерфейс для ее редактирования для двух языков, и проверка введенных вами данных профессиональным лингвистом. Достаточно зайти на страничку исправления ошибок и ввести нужные вам падежные формы (или исправить результат автоматического склонения). После этого веб-сервис сразу же будет склонять так, как вы указали – но только для вас. После проверки введенного вами примера администратором он станет доступен остальным пользователям веб-сервиса. Введеные исправления также используются для совершенствования алгортима склонения. Таким образом качество склонения улучшается самими пользователями.
Установка веб-сервиса в вашей локальной сети
Многие пользователи веб-сервиса высказывали желание иметь «такой же сервис, только у себя», т.е. иметь возможность развернуть веб-сервис в своей локальной сети. Это решило бы проблему с использованием веб-сервиса на рабочих местах, где нет доступа к Интернету, а также проблему с законом «О защите персональных данных», требующим обеспечения конфиденциальности таких данных.
В ответ на эти пожелания был создан вариант веб-сервиса, допускающий установку на сервере в локальной сети предприятия или непосредственно на машине пользователя, если пользователь один. Новый продукт получил название «Морфер.Сервер». Он реализует те же функции, что и общедоступный веб-сервис, включая функцию поддержания пользовательского словаря, и работает в сотни раз быстрее из-за того, что локальная сеть быстрее Интернета.
Для переключения с «глобального» на «локальный» сервис достаточно изменить код следующим образом:
Морфер = Обработки.Морфер.Создать(); Морфер.СменитьСервер("comp001", false);Здесь comp001 – это сетевое имя компьютера, где установлен веб-сервис. Во второй строчке изменять ничего не нужно.
Как приобрести и установить у себя локальный веб-сервис, описано на странице продукта: «Морфер.Сервер» .
Исходный код модулей.
Исходный код модулей полностью открыт и доступен. https://github.com/morpher-ru/1C.WebService.Client
Альтернативы
Автор «Морфера» занимается вопросом автоматического склонения профессионально с 2003 года и постоянно следит за аналогичными разработками. Одним из заметных аналогов является веб-сервис Яндекс.Склонятор, но он склоняет только «имена, фамилии и ники». Вот список еще нескольких решений, разработанных для платформы 1С:
Дата публикации | Название | Автор | Тип | Язык | +/- |
---|---|---|---|---|---|
2002 | Падеж. Версия "Крохотулька" Юрия Железнякова | SuperJur | 1С | рус | |
01.10.2008 | e.kogan | 1С | рус | +142/-0 | |
27.02.2007 | NDeclin | ВК | рус | +59/-0 | |
21.11.2010 | director04 | ВК + 1С | рус | +53/-0 | |
06.02.2012 | fixin | 1С | рус | +16/-0 | |
16.06.2009 | (Ivon) Ivon | 1С | укр | +16/-0 | |
08.11.2007 | tarasenkov | ВК | укр | +15/-3 |
* Количество плюсов и минусов дано на момент публикации.
В «Морфере» учтены многие пожелания к системам подобного рода, а именно:
- Возможность бесплатного использования функций склонения – имеется, до 1000 запросов в сутки. Этого количества более чем достаточно для частных лиц и малого бизнеса. Для более крупных клиентов имеется платный доступ.
- Простота развертывания. Не нужно включать в конфигурацию никаких дополнительных библиотек, регистрировать их в реестре и поставлять пользователям. Не нужны права администратора на пользовательских машинах.
- Возможность оперативного исправления ошибок. Многие пользователи отмечали как недостаток DLL невозможность оперативного исправления ошибок склонения. Даже в случае с «открытым кодом» на языке 1С, чтобы исправить одну фамилию, разбираться в этом коде (сразу вспоминается «Крохотулька») не у всех программистов найдется время и желание. Веб-сервис решает эту проблему, предоставляя пользователям веб-страницу для оперативного изменения склонения отдельных словосочетаний. Для этого не требуется вмешательства программиста – исправить ошибку сможет любой грамотный пользователь компьютера.
- Изменение по числам (). Реализовано.
Кроме того, отличительными особенностями «Морфера» являются:
- Простой API: склонение всех типов словосочетаний производится одной функцией. Нет необходимости указывать тип словосочетания (ФИО, должность, подразделение...)
- Не требуется указание пола. Наоборот, программа автоматически определяет и выдает грамматический род словосочетания, по которому однозначно определяется пол лица.
- Высокое качество склонения, достигаемое использованием комбинированного подхода – алгоритмы для кодирования правил и словари для учета исключений. «Морфер» вобрал в себя несколько многотысячных словарей, годы кропотливой работы, учета замечаний и пожеланий пользователей.
Жду новых ваших пожеланий и замечаний. Именно они мотивируют меня развивать продукт дальше.