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