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