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

1С:Предприятие :: 1С:Предприятие 8 общая

Обработать строку с фамилией

Обработать строку с фамилией
Я
   Обфускация
 
18.07.18 - 14:52
Надо "Фамилия Имя Отчество" превратить в "Фамилия И. О." и "Имя Отчество"
Как конкретно это можно сделать? Приблизительно как я знаю.
 
 
   Малыш Джон
 
1 - 18.07.18 - 14:53
да сколько ж можно её превращать-то?
   Garykom
 
2 - 18.07.18 - 14:54
Есть два варианта:
1. Берешь и делаешь (программируешь)
2. Берешь N-ю сумму и нанимаешь того кто сделает.
Ну или последний доп.вариант
3. Забиваешь
   Малыш Джон
 
3 - 18.07.18 - 14:54
Даже если лень поискать в модулях подходящую функция, ну неужели разбить по пробелам на три части строку и взять от второй и третьей части по первой букве - это суперсложный алгоритм?
   Elkin-Palkin
 
4 - 18.07.18 - 14:56
Кстати, да, в типовых конфигурациях же есть такая функция в общих модулЯх. Или у тебя нетиповая конфигурация?
   Elkin-Palkin
 
5 - 18.07.18 - 14:58
Например, ЗУП 3.1.7:
ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы()
   Обфускация
 
6 - 18.07.18 - 14:58
Ерп 2.4
Давайте конкретней, я блондинка
   ReaLg
 
7 - 18.07.18 - 15:01
(0) Ну, для начала решить, что будет фамилией, что именем, а что отчеством в таком варианте, например: "Джон Смит Омар оглы       Сервантес"
   Малыш Джон
 
8 - 18.07.18 - 15:02
Ctrl+Shift+F+"ФамилияИнициалы"
   azernot
 
9 - 18.07.18 - 15:04
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
    
    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
    
КонецФункции// глРазложить




Функция ФамилияИнициалы(СтрокаФИО) Экспорт

    МассивФИО = РазложитьСтрокуВМассивПодстрок(СокрЛП(СтрокаФИО)," ");
            
    КоличествоПодстрок = МассивФИО.Количество();
    Фамилия = ?(КоличествоПодстрок > 0,МассивФИО[0],"");
    Имя        = ?(КоличествоПодстрок > 1,МассивФИО[1],"");
    Отчество= ?(КоличествоПодстрок > 2,МассивФИО[2],"");
    
    Возврат ?(НЕ ПустаяСтрока(Фамилия), 
                Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." + ?(НЕ ПустаяСтрока(Отчество),Лев(Отчество,1)+".", ""), ""),
                "");

КонецФункции
   dezss
 
10 - 18.07.18 - 15:06
(8) +1
даже у меня в старой поделке раруса есть...чуть по-другому зовется, но ФамилияИнициалы присутствует в названии.
 
 Рекламное место пустует
   dezss
 
11 - 18.07.18 - 15:06
(9) негодник...прям из модуля и дернул, да?
тока у мну чуть посложней
   Elkin-Palkin
 
12 - 18.07.18 - 15:09
(6) Блондинка, Малыш Джон дело говорит. Попробуй его вариант.
Я добавлю к нему: там будет список результата поиска. Там наверняка будет ссылка на объявление такой функции в одном из общих модулей. (ну нет у меня под рукой ERP 2.4, что выдать готовый результат)
   Shrek_yar
 
13 - 18.07.18 - 15:13
Ей лучше парня программиста 1с найти )
   Малыш Джон
 
14 - 18.07.18 - 15:15
Эхехе, хотел в одну строку сделать, но в одну строку наглядно не получается... Старею, видимо... :(

Пробел1 = Найти(СокрЛП(ФИО)," ");
Фамилия = ?(Пробел1=0, СокрЛП(ФИО), Лев(СокрЛП(ФИО),Пробел1-1);
ИмяОтчество = ?(Пробел1=0, "", Сред(СокрЛП(ФИО),Пробел1));
Пробел2 = Найти(СокрЛП(ИмяОтчество," ");
Имя = ?(Пробел2=0, СокрЛП(ИмяОтчество), Лев(СокрЛП(ИмяОтчество),Пробел1-1);
Отчетство = ?(Пробел1=0, "", Сред(СокрЛП(ФИО),Пробел1)); 
ФамилияИО = Фамилия+?(Имя="","", " "+Лев(Имя,1)+".")+?(Отчетство="","", Лев(Отчетство,1)+".")
   Малыш Джон
 
15 - 18.07.18 - 15:23
*Отчетство = ?(Пробел2=0, "", Сред(СокрЛП(ИмяОтчество),Пробел2));
   almar
 
16 - 18.07.18 - 16:12
ФИО=СтрЗаменить(ФИО," ",Символы.ПС);
ФамилияИО=СтрПолучитьСтроку(ФИО,1)+" "+Лев(СтрПолучитьСтроку(ФИО,2),1)+". "+Лев(СтрПолучитьСтроку(ФИО,3),1)+".";
   Tonik992
 
17 - 18.07.18 - 16:14
(13) это была заявка? ))
   Малыш Джон
 
18 - 18.07.18 - 16:15
(16) точно. про многострочные строки не подумал.

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