Разработка и Конфигурация · 10 мин
Как склонять слова в 1С: практическое руководство
Как склонять слова в 1С: встроенные механизмы склонения ФИО и произвольных фраз, функция ПолучитьСклоненияСтроки, типовые решения, ошибки и альтернативы.
Склонение слов в 1С нужно всякий раз, когда программа формирует печатные документы, письма или отчёты с обращениями: «выдано Иванову Ивану Ивановичу», «в лице директора Петровой Анны Сергеевны», «приказ о назначении Сидорова А. П.». Писать такие фразы вручную нельзя — данные берутся из справочников, и падеж должен подставляться автоматически.
В платформе «1С:Предприятие 8.3» есть встроенный механизм склонения: глобальный метод ПолучитьСклоненияСтроки и его вариант для ФИО ПолучитьСклоненияСтрокиПоНомеруПадежа. Они работают локально (на Windows — через компоненту NameDecl.dll, на Linux — через внешнюю компоненту склонения) и не требуют интернета. В типовых конфигурациях поверх них построены функции БСП, например ФизическиеЛицаКлиентСервер.ПросклонятьФИО и СклонениеПредставленийОбъектов.
Ниже разобрано, какие инструменты выбрать, как их вызвать из кода, как проверить результат и что делать, если склонение недоступно или работает с ошибками.
Какие инструменты склонения есть в 1С
Платформа предоставляет два глобальных метода. ПолучитьСклоненияСтроки(Строка, Падеж, Пол) склоняет произвольную фразу (должность, подразделение, наименование) и возвращает массив склонений по словам. ПолучитьСклоненияСтрокиПоНомеруПадежа(НомерПадежа, Строка, Пол, ФорматнаяСтрока) склоняет ФИО целиком в указанный падеж и возвращает готовую строку. Падежи нумеруются от 1 (именительный) до 6 (предложный).
Параметр «Пол» задаётся числом: 1 — мужской, 2 — женский, 0 или не указан — пол определяется автоматически по окончанию фамилии и имени. Автоопределение работает не всегда корректно (например, для фамилий типа «Седых», «Дурново»), поэтому для ФИО пол лучше передавать явно из данных справочника «Физические лица».
В типовых конфигурациях (ЗУП, ERP, УТ, БП) поверх платформенных методов надстроены функции Библиотеки стандартных подсистем. Они дополнительно кэшируют результаты и умеют склонять представления объектов через механизм «Склонение представлений объектов».
Как просклонять ФИО: пошаговый пример
Типовая задача — подставить в приказ фразу «назначить Иванова Ивана Ивановича» (винительный падеж). Код на встроенном языке выглядит так:
Результат = ПолучитьСклоненияСтрокиПоНомеруПадежа(4, "Иванов Иван Иванович", 1);
// Результат: "Иванова Ивана Ивановича"
Если конфигурация построена на БСП, надёжнее использовать её обёртку — она сама обрабатывает ошибки и недоступность компоненты:
РезультатСклонения = Неопределено;
Если ФизическиеЛицаКлиентСервер.ПросклонятьФИО("Петрова Анна Сергеевна", 3, РезультатСклонения, 2) Тогда
// РезультатСклонения = "Петровой Анне Сергеевне" (дательный падеж)
КонецЕсли;
- 1Определите, что склоняете: ФИО физлица или произвольную фразу (должность, подразделение)
- 2Для ФИО получите пол из справочника «Физические лица» (перечисление ПолФизическогоЛица) и приведите его к числу 1 или 2
- 3Вызовите ПолучитьСклоненияСтрокиПоНомеруПадежа с нужным номером падежа или функцию БСП ПросклонятьФИО
- 4Проверьте результат на тестовом наборе: мужская фамилия, женская, несклоняемая (Коваленко, Шевченко)
- 5Подставьте результат в шаблон печатной формы или текста письма
Обратите внимание: функция БСП возвращает булево «успех/неуспех», а саму строку помещает в параметр-переменную. Если склонение не выполнилось (нет компоненты, пустая строка), нужно использовать исходное ФИО без изменений — иначе в документ попадёт пустое место.
Как склонять должности и произвольные фразы
Для фраз вроде «генеральный директор», «начальник отдела продаж» используется ПолучитьСклоненияСтроки. Метод возвращает массив, где каждый элемент — массив склонений одного слова фразы. Собрать нужный падеж приходится вручную:
Фраза = "Генеральный директор";
Склонения = ПолучитьСклоненияСтроки(Фраза, , 1);
Результат = "";
Для Каждого Слово Из Склонения Цикл
Результат = Результат + " " + Слово[4]; // творительный падеж (индекс с 0)
КонецЦикла;
// " генеральным директором"
В БСП для должностей и подразделений есть готовый механизм «Склонение представлений объектов»: в регистре хранятся просклонённые представления, а функция СклонениеПредставленийОбъектов.ПросклонятьПредставление возвращает нужную форму. Это удобно, когда одна и та же должность склоняется во многих документах — результат вычисляется один раз и кэшируется.
Ограничения и типичные проблемы
Компонента склонения — отдельная внешняя библиотека. На сервере Linux она должна быть установлена вместе с сервером 1С, иначе вызов методов завершится ошибкой «Ошибка вызова метода внешней компоненты». На клиенте (тонкий/веб-клиент) склонение обычно недоступно — выполняйте его на сервере.
Автоопределение пола ошибается на несклоняемых фамилиях (Коваленко, Савченко, Дюма) и иностранных именах. Всегда передавайте пол явно, если он известен. Ещё одна ловушка — инициалы: строку «Иванов И. И.» механизм склоняет хуже, чем полное ФИО, поэтому сначала склоняйте полную форму, а инициалы сокращайте уже после склонения имени и отчества.
Альтернативы, когда встроенное склонение недоступно
Если компонента не установлена и установить её нельзя (например, ограничения хостинга), есть три рабочих варианта. Первый — внешние веб-сервисы склонения (morpher.ru и аналоги): точность высокая, но нужен интернет, есть лимиты запросов и передача персональных данных третьей стороне, что требует оценки по 152-ФЗ.
Второй вариант — хранить падежные формы прямо в данных: добавить справочнику «Должности» или «Физические лица» дополнительные реквизиты «в родительном падеже», «в дательном падеже» и заполнять их вручную или при записи. Это надёжно и быстро, но требует дисциплины при вводе данных.
Третий вариант — собственные правила-исключения для самых частых слов. Такой подход оправдан только для узкого словаря (список должностей компании) и не масштабируется на произвольные ФИО.
Сравнение вариантов
Быстро, офлайн, бесплатно. Ограничение: требует установленной компоненты на сервере, ошибается на редких фамилиях
Высокое качество, работает везде. Ограничение: интернет, лимиты, передача персональных данных вовне
Полный контроль и предсказуемость. Ограничение: ручное заполнение и поддержка актуальности
Как проверить результат склонения
Минимальный тестовый набор: мужская склоняемая фамилия (Иванов), женская (Иванова), несклоняемая мужская и женская (Шевченко), фамилия на -ых/-ово (Дурново), двойное имя или отчество. Для каждого случая проверьте все шесть падежей и сравните с ожидаемым результатом, сверенным вручную.
Признак корректной работы: несклоняемые фамилии остаются неизменными во всех падежах, а женские фамилии на -ова/-ина склоняются по женской модели («Ивановой», а не «Ивановым»). Если женская фамилия склоняется как мужская — почти наверняка не передан или неверно определён пол.
Как проверить результат
Ивановой
Иванову — пол определён как мужской, передайте пол = 2 явно
Шевченко (без изменений)
Шевченки — компонента ошиблась, добавьте исключение
генеральным директором
склонено только первое слово — не собраны все элементы массива
Строка склоняется без исключений
Ошибка внешней компоненты — компонента склонения не установлена
FAQ
Работает ли склонение в тонком и веб-клиенте?
Как правило, нет — компонента склонения доступна на сервере и в толстом клиенте. Правильный подход: вызывать склонение в серверной процедуре и возвращать на клиент готовую строку.
Как просклонять ФИО с инициалами, например «Иванов И. И.»?
Сначала получите полное ФИО из данных физлица, просклоняйте его целиком, а затем сократите имя и отчество до инициалов в уже просклонённой строке. Склонять строку с инициалами напрямую не стоит — результат непредсказуем.
Почему ПолучитьСклоненияСтрокиПоНомеруПадежа выдаёт ошибку на сервере Linux?
Метод использует внешнюю компоненту склонения, которая устанавливается отдельно вместе с сервером 1С. Проверьте, что компонента установлена для нужной разрядности сервера, и что у процесса сервера есть права на её загрузку.
Можно ли склонять названия организаций и контрагентов?
Технически — да, тем же ПолучитьСклоненияСтроки, но качество ниже, чем для ФИО: аббревиатуры, кавычки и цифры в названиях обрабатываются плохо. Для юрлиц надёжнее хранить падежные формы в дополнительных реквизитах.
Как ускорить склонение в отчёте по сотням сотрудников?
Кэшируйте результаты: складывайте пары «исходная строка + падеж → результат» в соответствие и проверяйте его перед каждым вызовом. В конфигурациях на БСП используйте регистр склонений представлений — он делает то же самое на уровне подсистемы.
Что делать, если фамилия склоняется неправильно и пол передан верно?
Компонента платформы не знает всех исключений. Для таких случаев заведите таблицу переопределений (соответствие или регистр сведений «исходная строка → правильные падежные формы») и проверяйте её до вызова встроенного механизма.
Что важно запомнить
Используйте ПолучитьСклоненияСтрокиПоНомеруПадежа для ФИО и ПолучитьСклоненияСтроки для произвольных фраз, вызывайте их на сервере, передавайте пол явно, кэшируйте результаты и обрабатывайте неуспех функции. Для недоступной компоненты держите запасной вариант: хранение падежных форм в данных или внешний сервис.