morpher.ru 8 (499) 647 86 54
nowhere@morpher.ru
 
 
Мой морфер

Компонента склонения по падежам фамилий и должностей в 1С

Внешняя компонента Morpher.dll предназначена для склонения по падежам фамилий, имен и отчеств, а также произвольных словосочетаний на русском и украинском языках. Для установки компоненты не требуется регистрировать ее в системном реестре и не нужны права администратора. Компонента работает под управлением Windows в любом звене 1С: на сервере, в тонком и толстом клиентах. Для работы компоненты не требуется подключение к Интернет.

В настоящий момент реализованы функции:

ФункцияРусскийУкраинский
Склонение фамилий, имен и отчествДаДа
Склонение произвольных словосочетанийДаПока нет
Определение рода (пола)ДаДа
Пропись чисел и денежных сумм в любом падежеДаПока нет

«Произвольные словосочетания» включают в себя должности, названия отделов, предприятий и организаций, например: директор по маркетингу, инженер-программист, отдел продаж.

Инструкция по установке и использованию

Внешняя компонента состоит из одного файла с названием Morpher.dll. Для установки достаточно поместить этот файл в папку bin 1С:Предприятия (в ту же папку, где находится файл 1cv8.exe).

Для проверки работоспособности компоненты откройте вашу конфигурацию в режиме Конфигуратора, кликните правой кнопкой на узле «Конфигурация» и выберите в появившемся меню пункт «Открыть модуль обычного приложения».

Добавьте в модуль следующий код:

Процедура ПриНачалеРаботыСистемы()

    Если ПодключитьВнешнююКомпоненту(
        "Morpher.dll", 
        "Морфер", 
        ТипВнешнейКомпоненты.Native) 
    Тогда
        морфер = Новый ("AddIn.Морфер.Русский");    
        Сообщить (морфер.Дательный ("Привет Приветыч"));
    Иначе
        Сообщить ("Не удалось ПодключитьВнешнююКомпоненту Morpher.dll.");
    КонецЕсли;

КонецПроцедуры    

Функции склонения

Названия функций соответствуют падежам русского языка:

Функция Вопрос Описание
Родительный кого? чего? Строит форму родительного падежа.
Дательный кому? чему? Строит форму дательного падежа.
Винительный кого? что? Строит форму винительного падежа.
Творительный кем? чем? Строит форму творительного падежа.
Предложный о ком? о чем? Предложный падеж без предлога. *
ПредложныйО о ком? о чем? Предложный падеж с предлогом О/ОБ/ОБО. *
ПредложныйВ где? Предложный падеж с предлогом В/НА. *

* См. Рекомендации по выбору варианта предложного падежа

Для украинского языка нужно создать объект "AddIn.Морфер.Українська", а список функций выглядит так:

Функція Питання Опис
Родовий кого? чого? Утворює форму родового відмінку
Давальний кому? чому? Утворює форму давального відмінку
Знахiдний кого? що? Утворює форму знахiдного відмінку
Орудний ким? чим? Утворює форму орудного відмінку
Мiсцевий на кому? на чому? Утворює форму мiсцевого відмінку без прийменника
Кличний Шановний... Утворює форму кличного відмінку

Каждая из вышеперечисленных функций принимает строковый параметр – словосочетание в именительном падеже и возвращает также строку – исходное словосочетание в форме заданного падежа.

Функция определения рода (пола)

Данная функция определяет грамматический род входного словосочетания. Роду однозначно соответствует пол, если словосочетание называет человека.

Для русского языка функция называется Род и может возвращать одно из следующих строковых значений:

Функция Возвращаемые значения Означает
Род Муж Мужской род или пол
Жен Женский род или пол
Сред Средний род
Множ Множественное число

Для украинского языка соответствующая функция называется Рід:

Функція Повертає значення Означає
Рід Чол Чоловічий рід або стать
Жін Жіночий рід або стать
Сер Середній рід
Множ Множина

В случае если входное словосочетание не содержит русских (или украинских) слов, функции склонения и определения рода возвращают встроенное значение Неопределено.

Функция прописи чисел и денежных сумм

Функция Пропись формирует пропись числа или денежной суммы в любом падеже. Функция принимает три параметра:

  1. Числовой параметр "сумма или количество". Может быть положительным, нулем или отрицательным. До 30 десятичных знаков до и после запятой. Для денежных сумм обычно допускается до 2 знаков после запятой, подробнее ниже.
  2. Строковый параметр "единица измерения". Произвольное именное словосочетание на русском языке: "российский рубль", "доллар", "процент", "календарный день".
  3. Строковый параметр "падеж" — первая буква названия падежа: И, Р, Д, В, Т, П. Параметр необязательный. По умолчанию используется именительный падеж.

Построение прописи денежных сумм ("Сумма прописью")

Вызов Результат
морфер.Пропись(123.45, "рубль") Сто двадцать три рубля 45 копеек
морфер.Пропись(123.45, "доллар США") Сто двадцать три доллара США 45 центов
морфер.Пропись(123.45, "евро") Сто двадцать три евро 45 центов

При желании можно использовать сокращенные названия денежных единиц, с точкой или без:

Вызов Результат
морфер.Пропись(123.45, "руб.") Сто двадцать три руб. 45 коп.
морфер.Пропись(123.45, "долл. США") Сто двадцать три долл. США 45 центов
морфер.Пропись(123.45, "грн.") Сто двадцать три грн. 45 коп.

В качестве денежной единицы допускается также использование трехбуквенных кодов валют международного стандарта ISO 4217, таких как RUB, USD, EUR и др. При этом в название денежной единицы автоматически включается название страны:

Вызов Результат
морфер.Пропись(123.45, "RUB") Сто двадцать три российских рубля 45 копеек
морфер.Пропись(123.45, "UAH") Сто двадцать три украинских гривны 45 копеек
морфер.Пропись(123.45, "KZT") Сто двадцать три казахских тенге 45 тиынов

См. также Полный список обозначений валют.

Пропись чисел с произвольной единицей измерения

Кроме денежных единиц, возможно построить пропись числа в сочетании с произвольной единицей измерения, например:

Вызов Результат
морфер.Пропись(10, "рабочий день") 10 (Десять) рабочих дней
морфер.Пропись(-2, "пункт") -2 (Минус два) пункта
морфер.Пропись(5.3, "процент") 5.3 (Пять целых три десятых) процента

Чтобы поставить результат в нужный падеж, укажите третьим параметром первую букву названия падежа (И, Р, Д, В, Т, П):

Вызов Результат
морфер.Пропись(2, "рабочий день", "Р") 2 (Двух) рабочих дней
морфер.Пропись(2, "рабочий день", "Д") 2 (Двум) рабочим дням
морфер.Пропись(2, "рабочий день", "П") 2 (Двух) рабочих днях

Например, чтобы сформировать фразу "В течение 30 (Тридцати) календарных дней", используйте код:

Сообщить("В течение " + Пропись(30, "календарный день", "Р"));

В редких случаях возникает необходимость изменить формулировку, выдаваемую функцией Пропись. Например, если вам нужно обозначить проценты знаком %, на не словом "процент". В таком случае можно разбить строку, возвращаемую функцией Пропись, на составляющие, ориентируясь на скобки, а затем склеить их так, как вам нужно. Например, выбросить слово "процент" и добавить знак %.

Обработка ошибок в функции Пропись

При некоторых входных данных функция Пропись может генерировать исключение. Конкретная причина ошибки отображается в окне Служебные сообщения. Функция ИнформацияОбОшибке() при этом возвращает только имя метода: "Ошибка при вызове метода контекста (Пропись)".

Чтобы предупредить аварийное завершение вашей программы по исключению, необходимо проверить параметры на допустимость перед вызовом функции Пропись. Особенно это актуально для программ, выполняющихся &НаСервере.

Ниже перечислены возможные ошибки и способы их предупреждения:

Слишком большое число. В целой части допустимо не более 30 значащих цифр.

морфер.Пропись(1000000000000000000000000000000, "единица")

Вы передали в функцию слишком большое число.

На практике числа, большие чем 1030, обычно означают ошибку в вычислениях. Если вам действительно нужна поддержка таких чисел, напишите автору программы и укажите необходимый диапазон.

Примечание: Указать "слишком маленькое" число невозможно. Числа от 10 – 17 и меньше автоматически округляются до 0.

Третий аргумент (падеж) должен быть одной из букв: И, Р, Д, В, Т, П.

морфер.Пропись(1, "единица", "А")

Вы передали в функцию неправильный идентификатор падежа.

Вставьте проверку на допустимость параметра. Значения параметра должны быть заглавными русскими буквами и строго соответствовать списку.

Единица измерения нерусская или не имеет нужной падежной формы.

морфер.Пропись(5, "edinitsa")

морфер.Пропись(5, "теля")

морфер.Пропись(5, "")

Второй параметр либо пустой, либо не является русским словом, либо представляет собой слово, у которого нет нужной падежной формы.

Укажите правильную единицу измерения. Если единица измерения неизвестна на момент составления программы (вводится пользователем, читается из файла...), то оберните вызов функции Пропись в блок Попытка ... Исключение.

Слишком много цифр после запятой. Для большинства валют допустимо не более 2 цифр; для белорусских рублей число должно быть целым.

морфер.Пропись(1.234, "рубль")

морфер.Пропись(123.4, "белорусский рубль")

Указанная денежная сумма содержит слишком много цифр после запятой.

Округлите сумму до нужного количества цифр. Почему функция Пропись не делает округление автоматически? Потому что это могло бы привести к ошибкам округления. Например, если 1 рубль поделить на троих и автоматически округлить результат до 0,33, то одна копейка потеряется: 0,33 * 3 = 0,99.

Что лучше – компонента или веб-сервис?

Если сравнивать компоненту 1C Morpher.dll с сервисом «Морфер.Сервер», то преимущества компоненты следующие:

  1. Работает быстрее.
  2. Не требует веб-сервера.

Преимущества локального веб-сервиса перед компонентой:

  1. Поддерживает функцию коррекции склонения при помощи пользовательского словаря.
  2. Позволяет интегрироваться с другими системами, кроме 1С.

Полезные ссылки

История изменений

Дата Версия  
05.07.2011 1.0.0.1 Первая версия
19.09.2011 1.0.0.1 Добавлен украинский язык (номер версии не изменился).
26.07.2012 1.0.1.0 Пополнение словарной базы, исправлена функция Рід.
10.11.2013 1.0.4.0 Добавлена функция прописи чисел и денежных сумм.
11.11.2013 1.0.5.0 При указании более двух цифр после запятой в денежной сумме теперь выдается ошибка.
10.12.2013 1.0.6.0 В украинский алгоритм добавлен учет «апострофов» вида Дерев”яна и Дерев"яна.
11.12.2013 1.0.7.0 Небольшое пополнение словаря (русского и украинского).
18.12.2013 1.0.8.0 Пополнение словаря.
26.08.2014 1.0.9.0 Пополнение словаря.
17.10.2014 1.0.9.0 Добавлен 64-битный вариант компоненты. Номер версии не изменился.
07.12.2014 1.0.10.0 Исправлена ошибка в функции Пропись. Ошибка проявлялась только для валюты "белорусский рубль". Сообщение об ошибке: "Русский : Ошибка в Morpher.dll: Исключительная ситуация при вызове функции Spell."
17.02.2015 1.0.11.0 Исправлена ошибка в функции Пропись. Ошибка проявлялась для сумм с числом копеек 0x. В результате выдавалось x0 копеек вместо 0x.
25.01.2016 1.0.13.0 В функции Пропись учтены слова-исключения "человек" и "год". Пополнен словарь программы.
17.01.2017 1.0.14.0 В функции Пропись исправлена ошибка «ноль годов». Добавлены копейки к белорусскому рублю в связи с его деноминацией. Старый (до июня 2016 г.) белорусский рубль имеет обозначение BYR, новый — BYN. Пропись BYR не содержит копеек, а BYN содержит.

Купить Morpher.dll

  «Бейсик» «Профи» «Бизнес» «Франчайзи»
Функция склонения
Поддержка
Функция определения рода
Функция прописи чисел
64-битная версия
Возможность распространения
Цена 9000 руб. 11000 руб. 29000 руб. 49000 руб.
  Купить Купить Купить или
Заключить договор
Купить или
Заключить договор

Цены включают в себя все налоги. При заключении договора к этим ценам прибавляется административный сбор 2500р.

Лицензия «Франчайзи» предназначена для фирм, специализирующихся на разработке конфигураций на заказ и предусматривает возможность распространения компоненты в составе продаваемых конфигураций. Остальные лицензии предназначены для использования в пределах одного предприятия или организации. Ни одна из приведенных выше лицензий не предназначена для приобретения фирмой 1С. Если вы представитель фирмы 1С и заинтересованы в приобретении компоненты, свяжитесь с нами.

Поддержка включает в себя консультации по настройке и использованию компоненты, а также устранение дефектов, таких как несоответствие документации, медленная работа или зависания. Исправление ошибок склонения не входит в поддержку, хотя обычно они исправляются довольно быстро: сообщить об ошибке в склонении.

Скачать компоненту Morpher.dll вы сможете сразу после оплаты на сайте. Процедура оплаты следующая. После нажатия на кнопку Купить вы попадете на сайт платежной системы OnPay.ru, где вам будет предложено множество способов оплаты, в том числе WebMoney, Яндекс.Деньги и банковские карты. Процесс оплаты займет несколько минут. По завершению нажмите «Вернуться на сайт продавца» и вы сразу же сможете скачать компоненту. Вам таже будет выслано письмо со ссылкой для скачивания.



 

Библиотеки

Заметили опечатку? Выделите слово мышкой и нажмите Ctrl-Enter. Система Orphus

© Сергей Слепов, 2003 - 2017. Перепечатка материалов сайта только с разрешения автора.