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