Как реализовать универсальное склонение словосочетаний в 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке печатных форм, формировании приказов или автоматическом заполнении реквизитов часто возникает задача просклонять словосочетание. Это может быть ФИО сотрудника, наименование должности или название объекта недвижимости (например, «индивидуальный жилой дом» в родительном падеже). Русский язык богат на исключения, поэтому выбор правильного инструмента критически важен для корректной работы системы.

В данной статье мы подробно разберем все доступные способы решения этой задачи: от стандартных функций платформы 1С:Предприятие до использования продвинутых облачных сервисов и внешних библиотек.

Решение 1: Системная функция платформы ПолучитьСклоненияСтроки

Начиная с версии платформы 8.3.13, разработчикам стал доступен мощный встроенный механизм, который работает локально и не требует подключения к интернету. Проанализируем, как использовать функцию ПолучитьСклоненияСтроки().

Эта функция универсальна: она подходит для склонения имен собственных (ФИО), названий должностей, организаций и подразделений. Рассмотрим пример вызова этой функции для ФИО:


Результат = ПолучитьСклоненияСтроки("Иванов Иван Иванович", , "ПД=Родительный");
// Результат — это массив строк, содержащий варианты склонения
Если Результат.Количество() > 0 Тогда
    НужнаяСтрока = Результат[0];
КонецЕсли;

Разберем параметры подробнее. Первым аргументом мы передаем исходную строку. Вторым — описание типа (например, можно указать, что это именно имя, чтобы алгоритм работал точнее). Третьим аргументом выступает строка формата, где мы указываем падеж. Важно помнить, что платформа возвращает массив, так как в русском языке для одной и той же фразы может быть несколько грамматически верных вариантов склонения.

Решение 2: Механизмы Библиотеки стандартных подсистем (БСП)

Если ваша конфигурация построена на базе БСП, то наиболее правильным и архитектурно верным способом будет использование программного интерфейса подсистемы «Склонение представлений объектов». Рассмотрим, как это выглядит в коде:


// Представление — исходный текст
// Падеж — число (1 — Именительный, 2 — Родительный и т.д.)
// Объект — ссылка на объект (необязательно, помогает определить пол)
Результат = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Представление, Падеж, Объект);

В типовых решениях (УТ 11, ERP, БП 3.0) этот метод часто интегрирован с онлайн-сервисом Morpher.ru. Это позволяет добиться практически 100% точности даже на очень сложных фразах. Если в настройках системы включено использование веб-сервиса, БСП сама отправит запрос и вернет результат. Если интернет отсутствует, система попытается просклонять строку встроенными средствами.

Решение 3: Использование внешних компонент (Padeg.dll)

Для тех, кто работает на старых версиях платформы (например, 1С 7.7 или ранние 8.x) или кому нужна максимальная скорость работы без обращения к облакам, классическим решением является компонента Padeg.dll (автор Сергей Владимиров). Проанализируем ситуацию: эта компонента зарекомендовала себя годами, она учитывает огромное количество исключений и правил русского языка.

Подключение компоненты обычно выполняется через ЗагрузитьВнешнююКомпоненту. Основное преимущество здесь — автономность и высокая точность при склонении сложных должностей типа «рабочий по комплексному обслуживанию и ремонту зданий».

Решение 4: Внешние API и сервисы (Dadata и Morpher)

Если стандартные средства 1С не справляются (например, с иностранными именами или специфическими юридическими терминами), стоит рассмотреть специализированные лингвистические API.

  1. Morpher.ru: Специализируется именно на склонении. Понимает контекст и отлично справляется с должностями.
  2. Dadata.ru: Предлагает сервис «Стандартизация». Помимо склонения, он умеет определять пол, исправлять опечатки и приводить ФИО к единому формату.

Выясним причину, по которой стоит выбрать именно API: облачные сервисы постоянно обновляют свои словари. Если сегодня появилось новое популярное заимствованное слово, сервис научится его склонять быстрее, чем выйдет обновление платформы 1С.

Решение 5: Организационный подход (Метод «Поля в справочнике»)

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

Рассмотрим по шагам этот алгоритм:

  1. Добавляем в справочник «Сотрудники» или «Должности» реквизит НаименованиеВРодительномПадеже.
  2. При записи элемента или при изменении основного наименования программно вызываем любую «склонялку» (например, встроенную функцию платформы).
  3. Заполняем дополнительный реквизит полученным результатом.
  4. Предоставляем пользователю возможность проверить и поправить результат вручную.

Как показывает практика, это «золотой стандарт» разработки. Мы автоматизируем 95% рутины, но оставляем за человеком право последнего слова в спорных лингвистических моментах. Это гарантирует отсутствие ошибок в официальных приказах и договорах.

Специфика сложных имен и фамилий

Посмотрим на пример из практики. Имена типа «Хао Чжей» или «Джаваншир Наргиз Абдул Гамид кызы» часто ставят автоматические алгоритмы в тупик. Основная проблема здесь заключается в определении пола. Если пол определен неверно, всё склонение будет ошибочным.

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

Использование нейросетей (LLM) для сложных случаев

Современным трендом в автоматизации 1С становится использование API нейросетей (например, YandexGPT или GigaChat). Рассмотрим этот вариант для обработки нестандартных текстовых описаний. Нейросети гораздо лучше понимают структуру предложения и могут корректно просклонять длинные фразы, где нужно согласовать прилагательные с существительными, разделенными предлогами (как в примере «индивидуальный жилой дом»).

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

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

← На главную