7.7 Сокращенные инициалы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Natalia_k, 23 мар 2010.

  1. TopicStarter Overlay
    Natalia_k
    Offline

    Natalia_k Опытный в 1С

    Регистрация:
    8 сен 2009
    Сообщения:
    153
    Симпатии:
    0
    Баллы:
    26
    Всем привет!
    Подскажите, пожалуйста, в решении маленькой задачки.

    Я в подвале таблицы вывожу ФИО руководителя, используя константу. Что нужно дописать, чтобы он вывел не полное ФИО, а фамилию и сокращенные инициалы.

    То есть нужно Васечкин И.Ю., а сейчас у меня Васечкин Иван Юрьевич


    директор _____________/Васечкин И.Ю./
    (подпись)


    Я прописываю

    директор _____________<"/"+Константа.Исполнитель.Получить(ДатаДок)+"/">
    (подпись)


    Подскажите, пожалуйста.
  2. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Какая настройка?
    Возможно уже есть глобальная функция типа "ФИО"?

    Тогда пробуй
    ФИО(Константа.Исполнитель.Получить(ДатаДок))
  3. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    функция ниначто не претендует, но должна работать..
    Код:
    Function ФамилияИО(cString)
    cString = TrimAll(cString);
    cStringF = "";
    For i = 1 To StrLen(cString) Do
    If Mid(cString,i,1) = " " Then
    cStringF = cStringF+?(cStringF = "",Left(cString,i),"")+Mid(cString,i+1,1)+".";
    cString = Mid(cString,i+2);
    i = 1;
    EndIf;
    EndDo;
    Return cStringF;
    EndFunction
    
  4. Time dont wait
    Offline

    Time dont wait Опытный в 1С

    Регистрация:
    20 окт 2009
    Сообщения:
    192
    Симпатии:
    0
    Баллы:
    26
    Рабочая
    Код:
    Функция ФИО(ПолнИмя) 
    // позиция первого пробела
    ПервПроб = Найти(ПолнИмя," ");
    Если ПервПроб=0 Тогда
    Возврат ПолнИмя;
    Иначе
    Фамилия = Лев(ПолнИмя,ПервПроб);
    ИО = СокрЛ(Сред(ПолнИмя,ПервПроб+1));
    Имя = Лев(ИО,1)+".";
    // позиция второго пробела
    ВтПроб = Найти(ИО," ");
    Если ВтПроб=0 Тогда
    Возврат Фамилия+Имя;
    Иначе
    Возврат Фамилия+Имя+" "+Лев(СокрЛ(Сред(ИО,ВтПроб+1)),1)+".";
    КонецЕсли;
    КонецЕсли;
    КонецФункции
    
    
  5. TopicStarter Overlay
    Natalia_k
    Offline

    Natalia_k Опытный в 1С

    Регистрация:
    8 сен 2009
    Сообщения:
    153
    Симпатии:
    0
    Баллы:
    26
    Спасибо Вам всем большое!
    Воспользовалась функцией ФИО, дописав её в модуль, а в таблице прописала
    ФИО(Константа.Исполнитель.Получить(ДатаДок))

    И ВСЁ ПОЛУЧИЛОСЬ! ВСЁ ЗАРАБОТАЛО КАК НУЖНО!

    СПАСИБО БОЛЬШОЕ!
  6. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Ээххх, молодежь, молодежь.......

    Код:
    Функция ФИО(ПолнИмя)
    ФИО = СтрЗаменить(ПолнИмя, " ", РазделительСтрок);
    Возврат СтрПолучитьСтроку(ФИО,1) + " " + Лев(СтрПолучитьСтроку(ФИО, 2), 1) + ". " + Лев(СтрПолучитьСтроку(ФИО, 3), 1) + ".";
    КонецФункции
    
  7. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    неплохо!
  8. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Но не работает))
  9. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    отработает только подобным образом

    Код:
    Procedure ФамилияИмяОтчество(Val cString) 
    ФИО = CreateObject("Text");
    ФИО.AddLine(StrReplace(TrimAll(cString)," ",LineBreak));
    Фамилия = ФИО.GetLine(1);
    Имя = ФИО.GetLine(2);
    Отчество = ФИО.GetLine(3);
    EndProcedure
    
    
    правда, это несколько другая процедура, но смысл понятен..
  10. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Это еще почему? Работоспособный код...
    Только я бы сделал так (люблю перестраховываться)
    Код:
    Функция ФИО(ПолнИмя)    
    ФИО = СокрЛП(ПолнИмя);
    Пока Найти(ФИО," ")>0 Цикл
    ФИО=СтрЗаменить(ФИО,"  "," ");
    КонецЦикла;
    ФИО = СтрЗаменить(ПолнИмя, " ", РазделительСтрок);    
    Возврат СтрПолучитьСтроку(ФИО,1) + " " + Лев(СтрПолучитьСтроку(ФИО, 2), 1) + ". " + Лев(СтрПолучитьСтроку(ФИО, 3), 1) + ".";
    КонецФункции
    
    
    
  11. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    Мда.. действительно работает, беру свои слова обратно)) ругалось на КолвоСтрок() такого метода у строки нет..
  12. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Где в коде данный метод?)))))))))
  13. dedalx7
    Offline

    dedalx7 Опытный в 1С

    Регистрация:
    20 май 2009
    Сообщения:
    97
    Симпатии:
    0
    Баллы:
    26
    Вообще, эту функцию было бы неплохо сразу в Главный Модуль переносить, если ее там уже нет. Ибо много где пригождается.

Поделиться этой страницей