Имя: Пароль:
1C
1С v8
Фамилия + Инициалы
0 BlackMor
 
08.10.12
12:42
Подскажите, пожалуйста, как Строку:

Фамилия Имя Отчество

превратить в:

Фамилия И.О.

Есть ли для этого Функция в 1С:ЗУП 82.
Использую релиз 2.5.56.2
1 zak555
 
08.10.12
12:43
есть
2 Irbis05
 
08.10.12
12:45
Можно попробовать вот эту:
Функция ФамилияИО(ПолнИмя) Экспорт
   ПервПроб = Найти(ПолнИмя," ");
   Если ПервПроб=0 Тогда
       Возврат ПолнИмя;
   Иначе
       Фамилия = Лев(ПолнИмя,ПервПроб);
       ИО = Сред(ПолнИмя,ПервПроб+1);
       ИО = СокрЛ(ИО);
       Имя = Лев(ИО,1)+".";
       ВтПроб = Найти(ИО," ");
       Если ВтПроб=0 Тогда
           Возврат Фамилия+Имя;
       Иначе
           Возврат Фамилия+Имя+" "+Лев(СокрЛ(Сред(ИО,ВтПроб+1)),1)+".";
       КонецЕсли;
   КонецЕсли;
КонецФункции
3 zak555
 
08.10.12
12:48
ОБ общего назначения

Функция ФамилияИнициалыФизЛица(Объект = "", Фамилия = " ", Имя = " ", Отчество = " ") Экспорт

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

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

КонецФункции
4 BlackMor
 
08.10.12
12:51
(2), (3) Огромное Спасибо !!!
5 aka AMIGO
 
08.10.12
12:58
буггалтера любят в промежутки ФИО вставлять по 2-3 пробела.
иногда весьма неожиданные результаты получаются
с этим как у вас? нормально? :)
6 Cube
 
08.10.12
12:59
(5) Багагалтера?))))
7 Cube
 
08.10.12
13:00
(6) Ой, бугагалтера т.е.))))
8 aka AMIGO
 
08.10.12
13:00
(7)все равно красиво :)