|   |   | 
| 
 | Как разбить ФИО по частям? | ☑ | ||
|---|---|---|---|---|
| 0
    
        1сПупс 09.08.18✎ 11:29 | 
        Добрый день даммы и господа.
 В КД 2.1 из источника передаю ФИО реквизитом "Наименование" в Приемнике нужно разбивать его на "Имя", "Фамилия", "Отчество". Подскажите как это сделать если кто сталкивался. | |||
| 1
    
        hhhh 09.08.18✎ 11:32 | 
        (0) 1. найти эту функцию в общем модуле конфы 2. применить 3. забыть до следующего раза     | |||
| 2
    
        Birmingem 09.08.18✎ 11:34 | 
        Если всегда строгий порядок: 1-Фамилия, 2-Имя, 3-Отчество, то элементарно.
 Работаешь строковыми методами. Находишь пробел, отрезаешь и т.д. А если порядок разный, то никак. Запишется имя в фамилию или типа того. | |||
| 3
    
        1сПупс 09.08.18✎ 11:36 | 
        да, порядок всегда Фамилия Имя Отчество     | |||
| 4
    
        Вафель 09.08.18✎ 11:41 | 
        (2) Уже есть СтрРазделить     | |||
| 5
    
        catena 09.08.18✎ 11:52 | 
        (4)Не у всех     | |||
| 6
    
        1Сергей 09.08.18✎ 11:54 | 
        Па́бло Дие́го Хосе́ Франси́ско де Па́ула Хуа́н Непомусе́но Мари́я де лос Реме́диос Сиприа́но де ла Санти́сима Тринида́д Ма́ртир Патри́сио Руи́с и Пика́ссо
 Это один человек | |||
| 7
    
        1сПупс 09.08.18✎ 11:58 | 
        (6) есть еще
 Барнаби Мармадюк Алоизий Бенджи Кобвеб Дартаньян Эгберт Феликс Гаспар Гумберт Игнатий Джейден Каспер Лерой Максимилиан Недди Объяхулу Пепин Кьюллиам Розенкранц Секстон Тедди Апвуд Виватма Уэйленд Ксилон Ярдли Закари Усански | |||
| 8
    
        1сПупс 09.08.18✎ 11:58 | ||||
| 9
    
        1сПупс 09.08.18✎ 12:00 | 
        ФИО = Источник.Наименование;
 ЧислоФамилии = Найти(ФИО, " "); Фамилия = Лев(ФИО, ЧислоФамилии-1); сообщить(Фамилия); ИО = сред(ФИО, ЧислоФамилии+1); ЧислоИмени = Найти(ИО, " "); Имя = Лев(ИО, ЧислоИмени-1); сообщить(Имя); Отчество = сред(ИО, ЧислоИмени+1); сообщить(Отчество); сообщить(Фамилия+ " "+ Имя+ " "+ Отчество); сообщить(Фамилия+ Имя+ Отчество); можно оптимальней? | |||
| 10
    
        hhhh 09.08.18✎ 12:04 | 
        (9) можно, найти в типовой конфе, скопипастить себе. Там оптимально. я же тебе написал в (1). чего ты фигней страдаешь?     | |||
| 11
    
        catena 09.08.18✎ 12:04 | 
        (8)Смех смехом, а у меня 32 сотрудника, у которых в ФИО больше 3 слов...     | |||
| 12
    
        olegves 09.08.18✎ 12:07 | 
        (9) у некоторых муслимов есть части  в ФИО, типа "Огли" или "Угли" - куда ты их прицепишь?     | |||
| 13
    
        Быдло замкадное 09.08.18✎ 12:09 | 
        ОбщегоНазначения.РазложитьФИО
 Слова с третьего по N считаются отчеством. Что велосипед придумывать? | |||
| 14
    
        mistеr 09.08.18✎ 12:09 | 
        (12) "Угли" и "кызы" относится к отчеству.     | |||
| 15
    
        0xFFFFFF 09.08.18✎ 12:11 | 
        (7) это приматы из семейства "дурачок обыкновенный" - на них не надо ориентироваться :))     | |||
| 16
    
        catena 09.08.18✎ 12:16 | 
        (12)А бывают еще имена смешные, "Казыбек би" вот например. А еще в фамилии вместо -ов приписывают тегі.     | |||
| 17
    
        1Сергей 09.08.18✎ 12:20 | 
        (15) Как ты плохо о Пикассо(6) высказываешься :)     | |||
| 18
    
        1сПупс 09.08.18✎ 12:23 | 
        Функция РазложитьФИО(Знач ФИОСтр) Экспорт
 ФИОСтр = СокрЛП(ФИОСтр); ФИО = Новый Структура("Фамилия, Имя, Отчество", "", "", ""); ПервыйПробел = СтрНайти(ФИОСтр, " "); Если ПервыйПробел = 0 Тогда ФИО.Фамилия = ФИОСтр; Возврат ФИО; КонецЕсли; ФИО.Фамилия = СокрЛП(Лев(ФИОСтр, ПервыйПробел - 1)); ФИОСтр = СокрЛП(Сред(ФИОСтр, ПервыйПробел + 1)); ВторойПробел = СтрНайти(ФИОСтр, " "); Если ВторойПробел = 0 Тогда ФИО.Имя = ФИОСтр; Возврат ФИО; КонецЕсли; ФИО.Имя = СокрЛП(Лев(ФИОСтр, ВторойПробел - 1)); ФИО.Отчество = СокрЛП(Сред(ФиоСтр, ВторойПробел + 1)); | |||
| 19
    
        1сПупс 09.08.18✎ 12:24 | 
        в принципе то же самое     | |||
| 20
    
        catena 09.08.18✎ 12:32 | 
        (18)Что ж ты так мучаешься, в поиске масса вариантов.
 ФИО = СтрЗаменить(ФИО," ",Символы.ПС); Фамилия = СтрПолучитьСтроку(Стр,1); Имя = СтрПолучитьСтроку(Стр,2); Для к=2 по СтрЧислоСтрок(ФИО) Цикл Отчество = Отчество+" "+СтрПолучитьСтроку(Стр,к); КонецЦикла; | |||
| 21
    
        Вафель 09.08.18✎ 12:33 | 
        (20) лучше использовать (4)     | |||
| 22
    
        catena 09.08.18✎ 12:36 | 
        (21)Если платформа позволяет.     | |||
| 23
    
        hhhh 09.08.18✎ 12:37 | 
        (21) + и СтрРазделить гораздо эффективнее. У меня была строка многострочная из 18000 строк. через (20) раскладывалась около минуты, а через СтрРазделить меньше 1 сек.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |