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