Склонение по падежам

Робот ставит переданное значение в нужный падеж. Нужен там, где текст собирается из полей CRM: «Уважаемый Иванову Ивану» вместо «Уважаемый Иванов Иван».

Где найти робота

Приложение не добавляет своей страницы в портал. После установки робот появляется в конструкторе автоматизации CRM:

  1. Откройте CRM → Сделки (или Лиды) → Роботы.
  2. Выберите стадию, нажмите Добавить робота.
  3. В списке найдите «Склонение по падежам» — он в разделе приложений.

Настройки робота

ПолеЧто указать
Значение Текст для склонения. Обычно подставляется поле сделки — например {{Контакт: Имя}}. Обязательное поле.
Тип значения ФИО — фамилия, имя, отчество или их часть.
Географическое название — город, страна, область.
Существительное — должность, название товара, произвольное слово.
Число прописью (сколько?) — количественное числительное: «пятьсот шестьдесят семь».
Число прописью (который?) — порядковое числительное: «девятьсот шестьдесят первый».
Сумма прописью — денежная сумма: «одна тысяча двести тридцать четыре рубля пятьдесят копеек».
Падеж Один из шести. Чаще всего нужен родительный («для кого») или дательный («кому»).
Регистр букв Что сделать с регистром уже склонённого значения. По умолчанию «Как есть» — робот его не трогает.
Первая заглавная — заглавной становится первая буква строки, остальные приводятся к строчным: «генеральному директору» → «Генеральному директору». Вариант для начала предложения.
Строчные — всё значение строчными: когда результат встаёт в середину фразы.
Заглавные — всё значение заглавными: для шапок документов и заголовков.
Регистр меняется последним, уже после склонения, поэтому на его качество не влияет. Работает для любого типа значения, включая числа и суммы прописью.
«Как есть» означает, что регистр не меняет робот. Типы «ФИО» и «Географическое название» библиотека всё равно приводит к виду «Иванов», «Нижний Новгород» — для имён и названий это часть склонения. Должности и произвольные слова склоняйте типом «Существительное»: там регистр сохраняется.
Род или пол Для ФИО — пол: мужской, женский или автоопределение по имени (умолчание). Указывайте вручную, если имя редкое или иностранное и автоопределение ошибается.
Для чисел — грамматический род: мужской, женский или средний, в зависимости от того, к какому слову относится число. Средний род без автоопределения — по умолчанию используется мужской.
Для сумм поле не используется: род валюты библиотека знает сама.
Одушевлённость Только для типа «Существительное». Различие видно в винительном падеже: «вижу генерального директора», но «вижу новый холодильник». В остальных пяти падежах поле ни на что не влияет, поэтому по умолчанию стоит «Неодушевлённое». Автоматически это не определяется: по написанию слова одушевлённость не выводится.
Валюта Только для типа «Сумма прописью». По умолчанию «Определить из значения» — денежные поля Битрикса приходят в виде 1000|RUB, и код валюты робот берёт прямо оттуда, выбирать ничего не нужно. Если в поле передано число без кода валюты, робот считает сумму рублёвой и ничего об этом не сообщает. Выбирайте валюту вручную, когда сумма не в рублях, а кода в значении нет.
Формат суммы Только для типа «Сумма прописью». По умолчанию «Полностью словами». Всего пять вариантов: полностью словами, цифрами с расшифровкой, бухгалтерский, словами с дублированием и кратко — расшифровка каждого с примером есть прямо в списке выбора поля.

Что робот возвращает

РезультатЗначение
РезультатСклонённая строка. Подставляйте её в следующих шагах автоматизации — в письме, задаче, уведомлении.
УспешноY или N. При N в поле «Результат» лежит исходное значение без изменений, а причина записана в журнал бизнес-процесса.
Робот отвечает всегда, даже при ошибке. Бизнес-процесс не зависнет на этом шаге — он получит исходное значение и пойдёт дальше. Проверяйте поле «Успешно», если важно отличить склонённый текст от несклонённого.

Примеры

ЗначениеТипПадежРезультат
Иванов Иван ИвановичФИОДательный Иванову Ивану Ивановичу
Базанов Иосиф ВалерьяновичФИОРодительный Базанова Иосифа Валерьяновича
МоскваГеографическоеВинительныйМоскву
полеСуществительноеРодительныйполя
генеральный директорСуществительноеДательный генеральному директору
генеральный директорСуществительное, одушевлённое Винительныйгенерального директора
генеральный директорСуществительное, регистр «Первая заглавная» ДательныйГенеральному директору
Иванов ИванФИО, регистр «Заглавные» РодительныйИВАНОВА ИВАНА
567Число (сколько?)Родительныйпятисот шестидесяти семи
21Число (сколько?), женский родИменительныйдвадцать одна
961Число (который?)Именительныйдевятьсот шестьдесят первый
1234.50СуммаИменительный одна тысяча двести тридцать четыре рубля пятьдесят копеек

Числа и суммы

Валюта для суммы обычно определяется сама: денежные поля Битрикса приходят в виде 1000|RUB, и робот читает код валюты прямо из значения — тогда выбирать ничего не нужно. Если же в поле передано число без кода валюты, робот считает сумму рублёвой: сумма в долларах станет «рублями», и ошибки при этом не будет. Выбирайте валюту в настройках вручную, когда сумма не в рублях, а кода в значении нет.

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

Дробное число для типов «Число прописью (сколько?)» и «Число прописью (который?)» отклоняется с ошибкой: без этой проверки библиотека молча отбросила бы дробную часть, и «21,5 процента» превратилось бы в «двадцать один». Для дробных значений есть тип «Сумма прописью».

Порядковые числительные («который?») начинаются с единицы — нулевого порядкового номера не бывает. Отрицательные числа и суммы не поддерживаются ни в одном из типов.

Что робот умеет хуже

Склонение выполняет библиотека morphos. На ФИО и географических названиях она работает надёжно. На существительных возможны ошибки, особенно на заимствованных и несклоняемых словах: «кофе» она превращает в «кофю», «метро» в «метру», «радио» в «радиу». При этом «такси», «кино», «пальто» и «меню» возвращает правильно — без изменений.

Для типа «Существительное» проверяйте результат на своих данных, прежде чем ставить его в письма клиентам.

В значении из нескольких слов робот считает главным последнее слово и согласует с ним прилагательные перед ним: «генеральному директору», «нового холодильника», «белой ночи».

Не разбираются словосочетания, где главное слово стоит первым: «менеджер по продажам», «договор поставки», «система охлаждения». Здесь по-прежнему склоняется последнее слово, и результат получается неверным — «менеджер по продажаму». Для таких значений передавайте роботу одно слово, то, которое должно склоняться, а остальное дописывайте в шаблоне письма.

Существительное, набранное заглавными, склоняется наполовину: у «ГЕНЕРАЛЬНЫЙ ДИРЕКТОР» в родительном выходит «ГЕНЕРАЛЬНого директора» — основа остаётся в верхнем регистре, а окончание приходит из словаря в нижнем. Лечится полем «Регистр букв»: «Строчные» или «Первая заглавная» приводят строку к одному виду, само склонение при этом верное. ФИО и географические названия библиотека выравнивает сама, там этого не возникает.

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

Обойти это можно только перестройкой фразы под родительный падеж («на сумму одной тысячи… рублей»). Если по смыслу нужен именно винительный, выберите формат «цифрами с расшифровкой»: сумма там читается по цифрам, и неверная форма слова не так заметна, хотя и остаётся неверной.

Если что-то пошло не так

СимптомЧто проверить
Робота нет в списке Приложение устанавливает только администратор портала. Проверьте, что установка завершилась успешно, и переоткройте конструктор роботов.
Робот отработал, но значение не изменилось Посмотрите «Успешно». Если N — причина в журнале бизнес-процесса. Частая причина: пустое значение на входе или несклоняемое слово.
Каждое слово вернулось с заглавной буквы Выбран тип «ФИО» или «Географическое название» — для них библиотека приводит каждое слово к виду «Иванов», это часть склонения имени, а не работа поля «Регистр букв». Должности, товары и произвольные слова склоняйте типом «Существительное»: «Исполнительный директор» → «Исполнительного директора», а не «Исполнительного Директора».
Слово склонилось почти правильно, но с ошибкой в середине Там же: проверьте тип значения. «Старший менеджер» типом «ФИО» даёт «Старшого Менеджера» — библиотека разбирает первое слово как фамилию, а второе как имя. Типом «Существительное» получается «Старшего менеджера».
Сделка встала на стадии с роботом Обратитесь к администратору: нужно проверить журнал приложения на стороне сервера. Робот спроектирован так, чтобы всегда отвечать, поэтому зависание означает, что ответ не дошёл до портала. Причина записывается в журнал рядом с самим запросом — обычно это истёкший токен, превышенный лимит запросов или уже завершившийся шаг процесса.

На чём основано

Склонение, а также запись чисел и сумм прописью выполняет открытая библиотека morphos — морфологическая библиотека для русского языка на PHP. Приложение выбирает нужный её алгоритм по типу значения и возвращает результат в бизнес-процесс.

Автор библиотеки — Сергей Ванюшин (wapmorgan), лицензия MIT.

ЧтоГде
Исходный код github.com/wapmorgan/morphos
Пакет Composer wapmorgan/morphos
Сайт проекта morphos.io