Как сделать склонение по падежам в 1с

Обновлено: 08.07.2024

В системе 1С есть возможность подключать внешние компоненты. Компонент "Склонение ФИО" предназначен для склонения фамилии, имени и отчества на русском языке. Данный компонент может склонять только строки из трёх слов. Многие типовые конфигурации содержат данный компонент в общих макетах и функции в общих модулях для работы с ним. Если в конфигурации присутствует данный механизм, то при создании внешних отчетов или обработок можно воспользоваться готовыми функциями склонения ФИО.

Например в типовой конфигурации "Зарплата и кадры бюджетного учреждения 1.0", компонента склонения хранится в общем макете "КомпонентаСклоненияФИО". Функция Просклонять() расположена в общем модуле "УниверсальныеМеханизмы".

Компонента поставляется на дисках ИТС в папке 1CITSEXEAPPEXTCOMP. Если ИТС-диска нет, то свежую версию компоненты склонения ФИО можно скачать с сайта ИТС скачать appextcomp.zip .

Компонента Склонение ФИО

Объект компоненты содержит метод Просклонять (Decline). Данная функция на вход принимает три параметра: ФИО, Падеж, Пол. Возвращает строку содержащую результат склонения ФИО.

Параметр ФИО
Обязательный параметр, тип Строка. Содержит фамилию имя отчество в именительном падеже единственного числа. Фамилия имя отчество должны быть разделены пробелами.

Параметр Падеж
Обязательный параметр, тип Число. Номер падежа в котором необходимо просклонять ФИО.

  • 1 - Именительный
  • 2 - Родительный
  • 3 - Дательный
  • 4 - Винительный
  • 5 - Творительный
  • 6 - Предложный
  • 0 - авто
  • 1 - мужской
  • 2 - женский

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

Комментарии (2)

1. kassbar 05.02.2017 17:38
не работает
: Поле объекта недоступно для записи (ФИО)
Возврат Объект.Просклонять(ФИО, Падеж);
2. Admin 08.02.2017 12:25
Написал в примечании почему может возникать такая ошибка.
В типовых конфигурациях свойство "Режим использования синхронных вызовов расширений и внешних компонент" по умолчанию включено.


Функция предназначена для склонения выражений, которые часто требуется при формировании печатных форм договоров и прочих печатных форм. Функция склоняет по падежам ФИО, должности, числительные, валюты, единицы измерения, предметы. Также функция склоняет глаголы и прилагательные по числам и родам и существительные по числам. Имеется режим определения рода переданного выражения. Поддержка форматной строки для вывода результата. Функция не использует внешние библиотеки и веб-сервисы, написана на чистом языке 1С, и поэтому легко встраивается в любую конфигурацию или внешнюю обработку. Правила склонения оформлены в виде таблицы и могут быть легко изменены при необходимости.

На данный момент существует минимум 10 подобных функций для склонения ФИО, не считая стандартной, которые можно вызывать из кода 1С. Зачем написана еще одна, и чем она лучше остальных? Была протестирована каждая из найденных функций, но ни одна из них не подошла - либо большое количество ошибок при склонении, либо неудобство использования, либо и то и другое.

Многие функции для своей работы используют внешние библиотеки - перед началом использования требуется зарегистрировать библиотеку под администраторскими правами на каждом компьютере, откуда будет выполняться запуск функции, а это не всегда возможно из-за политики безопасности предприятия. Похожие проблемы возникают при использовании внешних веб-сервисов, к тому же не везде в наличии стабильный и надежный интернет. Данный алгоритм написан на чистом языке 1С и весь код для всех режимов работы содержится в пределах одной функции, поэтому ее легко можно добавить в общий модуль конфигурации или, например, в модуль внешней печатной формы или отчета.

Таблица правил склонения

Для вывода результата можно использовать форматную строку в максимально понятном формате, вида "Фамилия Имя Отчество" или "И.О. Фамилия". При отутствии форматной строки, функция старается максимально сохранить формат исходной строки. При нестандартном порядке следования частей ФИО, порядок можно указать в параметре вызова функции, например "ФИО", "ИОФ", "ИФ". Род выражения не всегда известен заранее, поэтому есть возможность автоматического определения рода. Определение происходит сначала по Отчеству, при неудаче - по Фамилии, затем по Имени.

Функция также склоняет должности, причем из-за меньшей вариативности склонений, чем для ФИО, склонение должностей происходит практически без ошибок, что было подтверждено множеством различных тестов.

Имеется возможность склонения по падежам и по родам числительных, причем в виде прописи ("два") либо числового значения (2). Вместе с числительным в функцию может быть передано исчислимое в начальной форме (именительный падеж, единственное число), например "8 доска" -> "Т - восемью досками", "15 рубль" -> "Р - пятнадцати рублей". Добавлена особая форма винительного падежа для склонения одушевленных существительных: "В - про сорок один мешок", "О - про сорок одного маляра".

Также склоняются по падежам, родам и числам прилагательные, существительные и их сочетания из начальной формы: "Генеральная доверенность" -> "Р - Генеральных доверенностей". Глаголы можно склонять по родам и числам: "Утвердило ответственное лицо" -> "Н - Утвердили ответственные лица". Более подробные примеры использования - в комментариях в листинге функции.


Предлагаемая разработка предоставляет программистам 1С функцию склонения по падежам слов и словосочетаний на русском и украинском языках, а также функцию формирования прописи чисел в заданном падеже. Программа умеет склонять фамилии, имена и отчества, а также должности, названия отделов и юридических лиц (на украинском пока только ФИО). Указание пола не требуется. Наоборот, программа автоматически определяет и выдает грамматический род словосочетания, по которому определяется пол лица. Алгоритм демонстрирует высокое качество склонения, а для случаев, когда программа все же ошибается, предусмотрен сервис оперативного исправления ошибок. Программа реализована в виде веб-сервиса, доступного бесплатно всем желающим (до 1000 запросов в сутки). Для вызова функции склонения из 1С 8.2 достаточно 3 строчек кода, при этом не нужно включать в конфигурацию никаких дополнительных DLL. Пример обработки на языке 1С прилагается.

Реализуемые функции

Например, на входе:

ведущий инженер-программист III категории

И. ведущий инженер-программист III категории ведущие инженеры-программисты III категории
Р. ведущего инженера-программиста III категории ведущих инженеров-программистов III категории
Д. ведущему инженеру-программисту III категории ведущим инженерам-программистам III категории
В. ведущего инженера-программиста III категории ведущих инженеров-программистов III категории
Т. ведущим инженером-программистом III категории ведущими инженерами-программистами III категории
П. о ведущем инженере-программисте III категории о ведущих инженерах-программистах III категории
Род: мужской

Быстрый старт: склонение должности

Программа для склонения должности будет выглядеть так:

Для украинского языка функция склонения называется СклонятьУкраинский:

Украинская версия пока лучше всего справляется с фамилиями, именами и отчествами. Работа над другими типами словосочетаний ведется.

Для улучшения качества склонения можно передавать признаки.

На данный момент доступны след. признаки: name, feminine, masculine, neuter, animate, inanimate, common, plural.

Функция построения прописи числа в любом падеже

Функция ПрописьРусский (ПрописьУкраинский) решает две родственные задачи: получение прописи числа (тысяча сто двадцать пять) и согласование единицы измерения с предшествующим числом (1 попугай, 2 попугая, 5 попугаев). Пример:

Функция принимает два аргумента:

n – целое положительное число.

Комбинировать имеет смысл только соответствующие падежные формы n и unit – именительный с именительным, родительный с родительным и т.д. Например, для получения фразы "в размере N рублей (долларов, евро. )", берем родительный падеж (Р): в размере + двухсот тридцати пяти + рублей.

Склонение прилагательных по родам

Функция СклонятьПрилагательноеПоРодам склоняет данное ей прилагательное, преобразуя его из мужского рода в женский, средний и во множественное число:

Авторизация

Для получения доступа к тегам род, откуда, куда, где, а так же снять ограничение на кол-во запросов в сутки, нужно купить подписку на сайте Морфер.Авторизация("ваш токен");

Обработка ошибок

Совместимость и устранение неполадок

Модуль выпускается в двух вариантах для 8.3.16 и 8.2. Версии отличаются только тем, что версия 8.3.16 использует встроенный десериализатор JSON.

Оперативное исправление ошибок склонения

Не секрет, что алгоритм автоматического склонения тоже может ошибаться – не знать какого-либо слова или запутаться в сложной синтаксической структуре. Что делать, если машина склоняет не так, как надо, а документ должен быть на столе у начальника через 10 минут? Хорошо, если система позволяет вручную исправлять документ после его выдачи. Но исправлять фамилию начальника в каждом приказе тоже не дело. Традиционное решение этой проблемы (если руки дойдут до его реализации) – хранение падежных форм в таблице-справочнике, которая заполняется вручную.

Установка веб-сервиса в вашей локальной сети

Здесь comp001 – это сетевое имя компьютера, где установлен веб-сервис. Во второй строчке изменять ничего не нужно.

* Количество плюсов и минусов дано на момент публикации.

Жду новых ваших пожеланий и замечаний. Именно они мотивируют меня развивать продукт дальше.

Основы русского языка закладывали наши далекие предки: поэты и крестьяне, купцы и воины, ремесленники, дворяне и прочая интеллигенция. Одна беда – программистов среди них было маловато, представителей, так сказать, информационного фронта.

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

Сравните два фрагмента печатных форм расходных кассовых ордеров на картинках ниже.

На первой деньги выдаются юридическому лицу.


А на второй – физическому лицу:


Но как-то не по-русски достались эти деньги нашему физическому лицу. Вот если бы в документе было написано «Выдать Ковалькову Николаю Федоровичу&ra quo;, то и Пушкин с Горьким ничего против такого документа не имели бы.


Вот и стонут тысячи не очерствевших душою бухгалтеров, оформляя документы кассовые, да и прочие договора с доверенностями. Звонят в особо сложных случаях (Ойра-Ойра Роман Петрович) по коллегам, да знакомым филологам. Спорят, ссорятся, поминая Ожегова.

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

Попробуем ее использовать.

А что для этого надо?

Во-вторых, заставить программу ее использовать в нужный нам момент.


Нажмем ее – открывается форма автоматического склонения нашего ФИО по падежам.


Мы приходили сюда – просто, чтобы в этом убедиться.

Вчитавшись в описание функций в самом общем модуле – легко понять, как именно к ним обращаться.


Ну и в качестве примера использования подсистемы – давайте все же решим задачу, с которой начиналась наша статья.

Сам процесс решения подробно демонстрируется в следующем ролике:

Ложная ученость хуже невежества. Невежество - голое поле, которое можно возделать и засеять; ложная ученость -это поле, поросшее пыреем, который выполоть почти невозможно.

Читайте также: