Имя: Пароль:
1C
1С v8
Обработать строку с фамилией
0 Обфускация
 
18.07.18
14:52
Надо "Фамилия Имя Отчество" превратить в "Фамилия И. О." и "Имя Отчество"
Как конкретно это можно сделать? Приблизительно как я знаю.
1 Малыш Джон
 
18.07.18
14:53
да сколько ж можно её превращать-то?
2 Garykom
 
гуру
18.07.18
14:54
Есть два варианта:
1. Берешь и делаешь (программируешь)
2. Берешь N-ю сумму и нанимаешь того кто сделает.

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



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

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

КонецФункции
10 dezss
 
18.07.18
15:06
(8) +1
даже у меня в старой поделке раруса есть...чуть по-другому зовется, но ФамилияИнициалы присутствует в названии.
11 dezss
 
18.07.18
15:06
(9) негодник...прям из модуля и дернул, да?
тока у мну чуть посложней
12 Elkin-Palkin
 
18.07.18
15:09
(6) Блондинка, Малыш Джон дело говорит. Попробуй его вариант.
Я добавлю к нему: там будет список результата поиска. Там наверняка будет ссылка на объявление такой функции в одном из общих модулей. (ну нет у меня под рукой ERP 2.4, что выдать готовый результат)
13 Shrek_yar
 
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));
16 almar
 
18.07.18
16:12
ФИО=СтрЗаменить(ФИО," ",Символы.ПС);
ФамилияИО=СтрПолучитьСтроку(ФИО,1)+" "+Лев(СтрПолучитьСтроку(ФИО,2),1)+". "+Лев(СтрПолучитьСтроку(ФИО,3),1)+".";
17 Tonik992
 
18.07.18
16:14
(13) это была заявка? ))
18 Малыш Джон
 
18.07.18
16:15
(16) точно. про многострочные строки не подумал.