helpf.pro
Регистрация
 +1 
Распечатать

1С 8.x : Как разобрать наименование сотрудника Ф.И.О. на Фамилию и инициалы сотрудника?

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

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

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

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

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



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

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


Обязательно посмотрите более краткий вариант!
)
Разместил:   Версии: | 7.x | 8.x |  Дата:   Прочитано: 18686
 +1 
Распечатать
Возможно, вас также заинтересует
1C медленно работает по сети с базой на SQL Server 8
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для...
1С Предприятие что это? 6
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который...
SMTP greeting failure: 421 SMTP connection broken (reply) 2
Опи­са­ние ошиб­ки: С сен­тяб­ря 2014 Ян­декс.Почта, Mail.ru пе­ре­шли на про­то­кол SSL, что сде­ла­ло их еще более без­опас­ны­ми. Чтобы и даль­ше ра­бо­тать с пись­ма­ми через 1С, Вам нужно из­ме­нить их на­строй­ки и...
ZIP-архив Разделить и Объединить Файл 0
При работе с большими объемами данных могут возникнуть проблемы при пересылке архивных файлов. Типичной такой ситуацией является ограничение некоторых почтовых серверов на размер сообщения - если письмо превышает...
База 1С вылетает, виснет, не грузится, падает с ошибкой? 0
Есть ряд методов, которыми можно попытаться " поднять" упавшую базу 1С 8.х Но сперва нужно сделать резервную копию! Сделайте резервную копию простым копированием папки базы, выгрузка не всегда может быть корректна. ...
Посмотреть все результаты поиска похожих
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.