Вход | Регистрация


1С:Предприятие ::

Метки: 

Как разбить ФИО по частям?

Я
   1сПупс
 
09.08.18 - 11:29
Добрый день даммы и господа.
В КД 2.1 из источника передаю ФИО реквизитом "Наименование" 
в Приемнике нужно разбивать его на "Имя", "Фамилия", "Отчество".
Подскажите как это сделать если кто сталкивался.
 
  Рекламное место пустует
   hhhh
 
1 - 09.08.18 - 11:32
(0) 1. найти эту функцию в общем модуле конфы 2. применить 3. забыть до следующего раза
   Birmingem
 
2 - 09.08.18 - 11:34
Если всегда строгий порядок: 1-Фамилия, 2-Имя, 3-Отчество, то элементарно.
Работаешь строковыми методами. Находишь пробел, отрезаешь и т.д.
А если порядок разный, то никак. Запишется имя в фамилию или типа того.
   1сПупс
 
3 - 09.08.18 - 11:36
да, порядок всегда Фамилия Имя Отчество
   Вафель
 
4 - 09.08.18 - 11:41
(2) Уже есть СтрРазделить
   catena
 
5 - 09.08.18 - 11:52
(4)Не у всех
   1Сергей
 
6 - 09.08.18 - 11:54
Па́бло Дие́го Хосе́ Франси́ско де Па́ула Хуа́н Непомусе́но Мари́я де лос Реме́диос Сиприа́но де ла Санти́сима Тринида́д Ма́ртир Патри́сио Руи́с и Пика́ссо

Это один человек
   1сПупс
 
7 - 09.08.18 - 11:58
(6) есть еще
Барнаби Мармадюк Алоизий Бенджи Кобвеб Дартаньян Эгберт Феликс Гаспар Гумберт Игнатий Джейден Каспер Лерой Максимилиан Недди Объяхулу Пепин Кьюллиам Розенкранц Секстон Тедди Апвуд Виватма Уэйленд Ксилон Ярдли Закари Усански
   1сПупс
 
8 - 09.08.18 - 11:58
   1сПупс
 
9 - 09.08.18 - 12:00
ФИО = Источник.Наименование;
ЧислоФамилии = Найти(ФИО, " ");
Фамилия = Лев(ФИО, ЧислоФамилии-1);
сообщить(Фамилия);
ИО = сред(ФИО, ЧислоФамилии+1);
ЧислоИмени = Найти(ИО, " ");
Имя = Лев(ИО, ЧислоИмени-1);
сообщить(Имя);
Отчество = сред(ИО, ЧислоИмени+1);
сообщить(Отчество);
сообщить(Фамилия+ " "+ Имя+ " "+ Отчество);
сообщить(Фамилия+ Имя+ Отчество);


можно оптимальней?
   hhhh
 
10 - 09.08.18 - 12:04
(9) можно, найти в типовой конфе, скопипастить себе. Там оптимально. я же тебе написал в (1). чего ты фигней страдаешь?
 
  Рекламное место пустует
   catena
 
11 - 09.08.18 - 12:04
(8)Смех смехом, а у меня 32 сотрудника, у которых в ФИО больше 3 слов...
   olegves
 
12 - 09.08.18 - 12:07
(9) у некоторых муслимов есть части  в ФИО, типа "Огли" или "Угли" - куда ты их прицепишь?
   Быдло замкадное
 
13 - 09.08.18 - 12:09
ОбщегоНазначения.РазложитьФИО

Слова с третьего по N считаются отчеством. Что велосипед придумывать?
   mistеr
 
14 - 09.08.18 - 12:09
(12) "Угли" и "кызы" относится к отчеству.
   0xFFFFFF
 
15 - 09.08.18 - 12:11
(7) это приматы из семейства "дурачок обыкновенный" - на них не надо ориентироваться :))
   catena
 
16 - 09.08.18 - 12:16
(12)А бывают еще имена смешные, "Казыбек би" вот например. А еще в фамилии вместо -ов приписывают тегі.
   1Сергей
 
17 - 09.08.18 - 12:20
(15) Как ты плохо о Пикассо(6) высказываешься :)
   1сПупс
 
18 - 09.08.18 - 12:23
Функция РазложитьФИО(Знач ФИОСтр) Экспорт
    
    ФИОСтр = СокрЛП(ФИОСтр);
    
    ФИО = Новый Структура("Фамилия, Имя, Отчество", "", "", "");
    
    ПервыйПробел = СтрНайти(ФИОСтр, " ");
    
    Если ПервыйПробел = 0 Тогда
        
        ФИО.Фамилия = ФИОСтр;
        
        Возврат ФИО;
        
    КонецЕсли;
    
    ФИО.Фамилия = СокрЛП(Лев(ФИОСтр, ПервыйПробел - 1));
    
    ФИОСтр = СокрЛП(Сред(ФИОСтр, ПервыйПробел + 1));
    
    ВторойПробел = СтрНайти(ФИОСтр, " ");
    
    Если ВторойПробел = 0 Тогда
        
        ФИО.Имя = ФИОСтр;
        
        Возврат ФИО;
        
    КонецЕсли;
    
    ФИО.Имя = СокрЛП(Лев(ФИОСтр, ВторойПробел - 1));
    
    ФИО.Отчество = СокрЛП(Сред(ФиоСтр, ВторойПробел + 1));
   1сПупс
 
19 - 09.08.18 - 12:24
в принципе то же самое
   catena
 
20 - 09.08.18 - 12:32
(18)Что ж ты так мучаешься, в поиске масса вариантов.

ФИО = СтрЗаменить(ФИО," ",Символы.ПС);
Фамилия = СтрПолучитьСтроку(Стр,1);
Имя = СтрПолучитьСтроку(Стр,2);
Для к=2 по СтрЧислоСтрок(ФИО) Цикл
   Отчество = Отчество+" "+СтрПолучитьСтроку(Стр,к);
КонецЦикла;
   Вафель
 
21 - 09.08.18 - 12:33
(20) лучше использовать (4)
   catena
 
22 - 09.08.18 - 12:36
(21)Если платформа позволяет.
   hhhh
 
23 - 09.08.18 - 12:37
(21) + и СтрРазделить гораздо эффективнее. У меня была строка многострочная из 18000 строк. через (20) раскладывалась около минуты, а через СтрРазделить меньше 1 сек.



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует