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

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

Как сократить ФИО в 1С: фамилия и инициалы в документах и отчётах

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

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

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

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

Где в 1С требуется сокращённое ФИО

Чаще всего сокращённое ФИО нужно в печатных формах: приказы, доверенности, трудовые договоры, расходные ордера, где в строке подписи указывается «Иванов И. И.». Второй типовой сценарий — отчёты, где колонка с полным ФИО занимает слишком много места и ломает вёрстку.

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

Сокращение ФИО через настройки печатных форм

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

Если в печатной форме выводится полное ФИО, а нужно сокращённое, проверьте источник данных макета: часто в запросе или в параметрах макета используется полное наименование, тогда как рядом доступно поле с инициалами. В пользовательском режиме это правится через изменение макета в режиме «Конфигуратор» или через механизм дополнительных печатных форм, где шаблон можно отредактировать без снятия конфигурации с поддержки.

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

Программное сокращение ФИО в конфигурациях на БСП

В конфигурациях, построенных на библиотеке стандартных подсистем (ЗУП, БП, ERP, УТ), есть готовые методы для работы с ФИО. Основной — функция ФизическиеЛицаКлиентСервер.ФамилияИнициалы(), которая принимает либо строку с ФИО, либо части ФИО, и возвращает строку вида «Иванов И. И.».

Пример вызова в коде:

ФИОСокращенное = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ФизЛицо.ФИО);

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

Если в конфигурации хранятся отдельные поля «Фамилия», «Имя», «Отчество» (как в ЗУП в регистре «ФИО физических лиц»), надёжнее собирать сокращение из частей, а не разбирать строку. Это исключает ошибки на двойных фамилиях и нестандартных отчествах.

ФамилияИнициалы = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(

ДанныеФИО.Фамилия, ДанныеФИО.Имя, ДанныеФИО.Отчество);

bsl
ФИОСокращенное = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ФизЛицо.ФИО);

Собственная функция сокращения ФИО

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

Функция СократитьФИО(ФИО) Экспорт

Части = СтрРазделить(СокрЛП(ФИО), " ", Ложь);

Если Части.Количество() = 0 Тогда

Возврат "";

КонецЕсли;

Результат = Части[0];

Если Части.Количество() > 1 Тогда

Результат = Результат + " " + Лев(Части[1], 1) + ".";

КонецЕсли;

Если Части.Количество() > 2 Тогда

Результат = Результат + " " + Лев(Части[2], 1) + ".";

КонецЕсли;

Возврат Результат;

КонецФункции

У простого разбора есть ограничения. Двойные фамилии через дефис («Салтыков-Щедрин») обрабатываются корректно, а вот фамилии из двух слов через пробел или частицы («де Ла Гуарда») будут разобраны неверно. Если в базе есть такие ФИО, храните фамилию, имя и отчество отдельными полями и собирайте представление из них.

Типичные ошибки
01
Сокращение ФИО прямо в справочнике физлиц: полное ФИО теряется, и отчётность в фонды формируется с ошибками.
02
Разбор строки без проверки на пустое имя или отчество: получается 'Иванов И. .' или лишние пробелы.
03
Изменение типового общего модуля вместо создания своего: при обновлении конфигурации правки затираются.
04
Игнорирование двойных фамилий и составных имён: простой разбор по пробелам даёт неверные инициалы.

Сокращённое ФИО в отчётах на СКД

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

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

Практичный компромисс для отчётов: оставить полное ФИО в данных, но уменьшить ширину колонки и включить автоперенос — тогда вёрстка не ломается, а сокращение не требуется вовсе.

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

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

Конфигурация типовая на БСП (ЗУП, БП, ERP, УТ)Используйте ФизическиеЛицаКлиентСервер.ФамилияИнициалы() — готовый и поддерживаемый метод.
Нужно сокращение только в одной печатной формеСкопируйте макет во внешнюю печатную форму и замените параметр ФИО в нём.
Конфигурация самописная, без БСПНапишите собственную функцию разбора строки в общем модуле.
ФИО хранится отдельными полями (Фамилия, Имя, Отчество)Собирайте сокращение из полей, а не разбирайте строку — это надёжнее.

Проверка результата и типичные проблемы

После внедрения сокращения проверьте вывод на разных данных: обычное ФИО, двойная фамилия, отсутствующее отчество, длинное ФИО. Убедитесь, что в печатной форме нет двойных пробелов, висячих точек и обрезанных фамилий.

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

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

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

Формат вывода
Норма

Иванов И. И. — фамилия полностью, инициалы с точками через пробел

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

Иванов И.И., И. И. Иванов (если требовался другой формат), лишние пробелы

ФИО без отчества
Норма

Иванов И. — одна инициальная буква, без висячей точки

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

Иванов И. . или пустые скобки

Данные в справочнике
Норма

Полное ФИО в карточке физлица не изменилось

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

В справочнике сохранено сокращённое ФИО — данные испорчены

Печатная форма
Норма

Сокращённое ФИО в подписи, полное — где требуется по форме документа

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

Одинаковый формат везде, хотя форма требует полного ФИО

FAQ

Можно ли сократить ФИО без изменения кода конфигурации?

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

Как сократить ФИО пользователя, а не физлица?

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

Почему после обновления конфигурации сокращение перестало работать?

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

Как вывести ФИО в формате «И. И. Иванов» (инициалы перед фамилией)?

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

Что делать с сотрудниками без отчества?

Корректная функция сокращения должна проверять наличие отчества и не добавлять пустую инициалу с точкой. Результат для такого сотрудника — «Иванов И.». Проверьте это на тестовых данных, иначе в документах появятся висячие точки и двойные пробелы.

Итог

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

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