К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как просклонять строку в 1С

Как просклонять строку в 1С: функция ПолучитьСклоненияСтроки, склонение ФИО и должностей, работа без интернета, типовые ошибки и примеры кода.

Задача склонения строки в 1С возникает при печати документов, где ФИО, должность или наименование организации должны стоять в нужном падеже: «выдано Иванову Ивану Ивановичу», «в лице директора Петровой Анны Сергеевны». Встроенного оператора склонения в языке 1С нет, поэтому используются функции из типовых конфигураций, внешние компоненты или сервисы.

В типовых конфигурациях на БСП (Библиотека стандартных подсистем) есть готовый механизм склонения, который работает через интернет-сервис 1С либо через локальную компоненту склонения. Если конфигурация самописная или старая, механизм придётся добавить вручную или использовать альтернативный вариант.

Ниже разобраны рабочие способы: функция ПолучитьСклоненияСтроки, склонение ФИО в типовых конфигурациях, работа без доступа к интернету, проверка результата и типичные ошибки.

Как устроено склонение в типовых конфигурациях

В конфигурациях на базе БСП (1С:Бухгалтерия, 1С:ЗУП, 1С:Управление торговлей и другие) склонение реализовано подсистемой «Склонение представлений объектов». Она умеет склонять произвольные строки по падежам русского языка: именительный, родительный, дательный, винительный, творительный, предложный.

Механизм работает двумя способами. Первый — обращение к веб-сервису склонения, доступному по подписке ИТС. Второй — локальная компонента склонения, которая устанавливается на сервер или клиентский компьютер и работает без интернета. Какой вариант используется, определяется настройками и доступностью сервиса.

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

Склонение произвольной строки через ПолучитьСклоненияСтроки

Основной вызов выглядит так: передаётся исходная строка и номер падежа. Нумерация падежей: 1 — именительный, 2 — родительный, 3 — дательный, 4 — винительный, 5 — творительный, 6 — предложный.

Результат = СклонениеПредставленийОбъектов.ПолучитьСклоненияСтроки("Иванов Иван Иванович", , 2);

// Результат: "Иванова Ивана Ивановича"

Если номер падежа не указан, функция возвращает массив из шести форм — по одной на каждый падеж. Это удобно, когда в шаблоне документа нужно несколько падежей сразу: вызвать функцию один раз и взять нужные элементы массива, а не дёргать сервис многократно.

У функции есть дополнительные параметры: признак «это ФИО» и пол (для корректного склонения фамилий типа «Иванова»). Для строк, которые не являются ФИО (должность, наименование), эти параметры не заполняются.

1c
Склонения = СклонениеПредставленийОбъектов.ПолучитьСклоненияСтроки("главный бухгалтер");
Дательный = Склонения[2]; // "главному бухгалтеру"

Склонение ФИО сотрудников в ЗУП и Бухгалтерии

Для ФИО физических лиц в кадровых конфигурациях есть специализированные функции, которые учитывают пол сотрудника и корректно обрабатывают несклоняемые фамилии. В 1С:ЗУП используется модуль ФизическиеЛицаЗарплатаКадры, в бухгалтерских конфигурациях — ФизическиеЛица или ФизическиеЛицаКлиентСервер, в зависимости от версии БСП.

ДанныеСклонения = ФизическиеЛицаЗарплатаКадры.ПросклонятьФИО("Петрова Анна Сергеевна", 2, Перечисления.ПолФизическогоЛица.Женский);

// ДанныеСклонения.Фамилия = "Петровой", ДанныеСклонения.Имя = "Анны" и т.д.

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

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

Работа без интернета: локальная компонента и свои алгоритмы

Если сервис склонения недоступен (нет подписки ИТС, закрыт доступ в интернет), типовой механизм переключается на локальную компоненту склонения. Она поставляется в составе БСП и устанавливается на компьютер, где выполняется код. На сервере 1С компоненту нужно разместить и зарегистрировать отдельно — иначе серверные вызовы будут завершаться ошибкой.

Для самописных конфигураций без БСП есть два пути. Первый — перенести подсистему склонения из БСП вместе с зависимыми модулями; это трудоёмко, но даёт полноценный механизм. Второй — написать собственный упрощённый алгоритм для узкого набора слов: например, склонять только типовые должности из заранее подготовленной таблицы соответствий.

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

Маршрут решения

Какой способ выбрать

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

Проверка результата склонения

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

Обратите внимание на типичные проблемные случаи: фамилии на -ых/-их (Седых, Долгих) не склоняются; мужские фамилии на -ок, -ец могут давать беглую гласную (Зайцева — Зайцева, но Заяц — Зайца); иностранные фамилии склоняются по-разному в зависимости от пола. Составные должности с сокращениями («зам. директора по производству») сервис может обработать некорректно.

Контрольные точки

Как проверить результат

Фамилия сотрудника в родительном падеже
Норма

Форма соответствует полу и правилам (Петровой / Петрова)

Тревожный признак

Женская фамилия просклонена как мужская или наоборот

Несклоняемые фамилии (-ых, -их, -ко)
Норма

Форма совпадает с именительным падежом

Тревожный признак

Фамилия искажена (Седых → Седого)

Должность с сокращениями
Норма

Сокращения сохранены, склонение корректно

Тревожный признак

Сокращения раскрыты с ошибкой или потеряны

Типичные ошибки при склонении строк

Самая частая ошибка — вызов склонения в цикле для каждой строки отчёта. Каждый вызов сервиса — это сетевой запрос, и печать сотни документов превращается в сотни обращений. Решение: кэшировать результаты в соответствии, где ключ — исходная строка.

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

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

Типичные ошибки
01
Вызов сервиса в цикле без кэширования — резкое замедление печати и отчётов
02
Склонение строки с инициалами вместо полного ФИО — некорректный результат
03
Не указан пол при склонении ФИО — женские фамилии получают мужские формы
04
Выполнение кода склонения на клиенте в тонком клиенте — ошибка вызова
05
Отсутствие локальной компоненты при отключённом интернете — склонение перестаёт работать

Пошаговый порядок внедрения склонения в печатную форму

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

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

Порядок действий
  1. 1
    Определите нужный падеж и состав данных (ФИО, должность)
  2. 2
    Получите полное ФИО и пол из справочника физических лиц
  3. 3
    Вызовите функцию склонения в серверной процедуре
  4. 4
    Соберите представление (с инициалами — после склонения)
  5. 5
    Проверьте результат на мужской, женской и несклоняемой фамилии
  6. 6
    Добавьте кэширование, если склонение вызывается в цикле
Итог

Что важно запомнить

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

Частые вопросы

Работает ли ПолучитьСклоненияСтроки без подписки ИТС?

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

Как просклонять ФИО с инициалами, например «Иванов И. И.»?

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

Почему фамилия сотрудницы склоняется как мужская?

Функция склонения ФИО не определяет пол автоматически — его нужно передать параметром из справочника физических лиц. Если пол не указан, применяется вариант по умолчанию, что и даёт неверные окончания для женских фамилий.

Можно ли склонять строки в самописной конфигурации без БСП?

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

Как ускорить склонение при массовой печати документов?

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

Что делать, если сервис склоняет нестандартную фамилию неправильно?

Автоматического способа исправить результат сервиса нет. Практическое решение — вести список исключений: соответствие исходной фамилии и правильных падежных форм, проверяемое до вызова сервиса. Для несклоняемых фамилий (-ых, -их, -ко у женщин) такие исключения чаще всего и требуются.