Поиск Написать

Разбить ФИО

7.7 ЗиК Глобальный модуль
8.0 ЗУП 2.1 Модуль ПроцедурыУправленияПерсоналом

Код в комментариях
Теги: Код
Редактировано: 06 марта 2008

Комментарии:
7.7
//************************************************** ****************************
// глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество)
//
// Параметры:
// Объект - элемент справочника Сотрудники или Строка
// Фамилия - в этот параметр будет записана фамилия сотрудника
// Имя - в этот параметр будет записано имя сотрудника
// Отчество - в этот параметр будет записано отчество сотрудника
//
// Возвращаемое значение:
// фамилия и инициалы сотрудника
//
// Описание:
// разбирает "наименование" сотрудника по Фамилия, Имя, Отчество
// и возвращает фамилию и инициалы сотрудника
//
Функция глФамилияИмяОтчество(Объект,Фамилия="",Имя="",Отчество="") Экспорт

Если ТипЗначения(Объект)=2 Тогда
ФИО = глРазделить(СокрЛП(Объект),",");
Иначе
ФИО = глРазделить(СокрЛП(Объект.Наименование),",");
КонецЕсли;
ФИО = глРазложить(ФИО," ");
Фамилия = ""; Имя = ""; Отчество = "";
Если ФИО.РазмерСписка() > 0 Тогда
Фамилия = ФИО.ПолучитьЗначение(1);
Если ФИО.РазмерСписка() > 1 Тогда
Имя = ФИО.ПолучитьЗначение(2);
Если ФИО.РазмерСписка() > 2 Тогда
// а вот отчество бывает и не из одного слова
Для Сч = 3 По ФИО.РазмерСписка() Цикл
Отчество = Отчество + ФИО.ПолучитьЗначение(Сч) + " ";
КонецЦикла;
Если ПустоеЗНачение(Отчество) = 0 Тогда
Отчество = Лев(Отчество,СтрДлина(Отчество)-1);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Возврат Фамилия+?(ПустоеЗначение(Имя)=0," "+Лев(Имя,1)+"."+?(ПустоеЗначение(Отчество)=0,Лев(Отчество,1)+".",""),"")

КонецФункции // глФамилияИмяОтчество
8.0
Модуль ПроцедурыУправленияПерсоналом
// Функция формирует фамилию и инициалы либо по наименованию элемента спр-ка ФизическиеЛица
// либо по переданным строкам.
// Если передан Объект, то извлеченная из него строка считается совокупностью
// Фамилия + Имя + Отчество, разделенными пробелами.
//
// Параметры
// Объект - строка или ссылка или объект элемента спр-ка ФизическиеЛица.
// Фамилия - фамилия физ. лица.
// Имя - имя физ. лица.
// Отчество - отчество физ. лица.
//
// Возвращаемое значение
// Фамилия и Инициалы одной строкой. Побочные эффекты - переданная целая строка
// Побочные эффекты - переданная целая строка разбивается на подстроки, соответствующие
// отдельным Фамилии,Имени и Отчеству
//
Функция ФамилияИнициалыФизЛица(Объект = "", Фамилия = " ", Имя = " ", Отчество = " ") Экспорт

ТипОбъекта = ТипЗнч(Объект);
Если ТипОбъекта = Тип("Строка") Тогда
ФИО = РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект)," ");
ИначеЕсли ТипОбъекта = Тип("СправочникСсылка.ФизическиеЛица") или ТипОбъекта = Тип("СправочникОбъект.ФизическиеЛица") Тогда
ФИО = РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект.Наиме нование)," ");
Иначе

// используем возможно переданные отдельные строки
Возврат ?(НЕ ПустаяСтрока(Фамилия),
Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." + ?(НЕ ПустаяСтрока(Отчество),Лев(Отчество,1)+".", ""), ""),
"")
КонецЕсли;

КоличествоПодстрок = ФИО.Количество();
Фамилия = ?(КоличествоПодстрок > 0,ФИО[0],"");
Имя = ?(КоличествоПодстрок > 1,ФИО[1],"");
Отчество= ?(КоличествоПодстрок > 2,ФИО[2],"");

Возврат ?(НЕ ПустаяСтрока(Фамилия),
Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." + ?(НЕ ПустаяСтрока(Отчество),Лев(Отчество,1)+".", ""), ""),
"");

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

Подтвердите удаление записи