|
|
|
Прав, Лев, СокрЛП Ø (Волшебник 21.09.2005 17:26) |
☑ | ||
|---|---|---|---|---|
|
0
Samir
21.09.05
✎
15:24
|
Народ, ну выдерите код отражающий Иванов Иван Иванович в виде Иванов И.И. Времени нет разбираться, горит.
Заранее благодарен |
|||
|
1
РБ
21.09.05
✎
15:27
|
ФИО()
|
|||
|
2
ЗиК 256
21.09.05
✎
15:27
|
//******************************************************************************
// глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество) // // Параметры: // Объект - элемент справочника Сотрудники или Строка // Фамилия - в этот параметр будет записана фамилия сотрудника // Имя - в этот параметр будет записано имя сотрудника // Отчество - в этот параметр будет записано отчество сотрудника // // Возвращаемое значение: // фамилия и инициалы сотрудника // // Описание: // разбирает "наименование" сотрудника по Фамилия, Имя, Отчество // и возвращает фамилию и инициалы сотрудника // Функция глФамилияИмяОтчество(Объект,Фамилия="",Имя="",Отчество="") Экспорт Если ТипЗначения(Объект)=2 Тогда ФИО = глРазделить(СокрЛП(Объект),","); Иначе ФИО = глРазделить(СокрЛП(Объект.Наименование),","); КонецЕсли; ФИО = глРазложить(ФИО," "); Фамилия = ""; Имя = ""; Отчество = ""; Если ФИО.РазмерСписка() > 0 Тогда Фамилия = ФИО.ПолучитьЗначение(1); Если ФИО.РазмерСписка() > 1 Тогда Имя = ФИО.ПолучитьЗначение(2); Если ФИО.РазмерСписка() > 2 Тогда // а вот отчество бывает и не из одного слова Для Сч = 3 По ФИО.РазмерСписка() Цикл Отчество = Отчество + ФИО.ПолучитьЗначение(Сч) + " "; КонецЦикла; Если ПустоеЗНачение(Отчество) = 0 Тогда Отчество = Лев(Отчество,СтрДлина(Отчество)-1); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Фамилия+?(ПустоеЗначение(Имя)=0," "+Лев(Имя,1)+"."+?(ПустоеЗначение(Отчество)=0,Лев(Отчество,1)+".",""),"") КонецФункции // глФамилияИмяОтчество |
|||
|
3
ШтушаКутуша
21.09.05
✎
15:28
|
(0) никогда не забывайте про глобальный модуль,коллега! :)
|
|||
|
4
Волшебник
модератор
21.09.05
✎
15:28
|
Тут писать нечего:
ФИО = СокрЛП(ФИО); ПозПробела = НАйти(ФИО," "); ИмяОтчество = Сред(ФИО,ПозПробела+1); ПозПробела2 = НАйти(ИмяОтчество," "); Отчество = Сред(ИмяОтчество,ПозПробела2+1); ФамилияИО = Лев(ФИО,ПозПробела-1) + " " + Лев(ИмяОтчество,1) + "." + Лев(Отчество,1); код не проверял |
|||
|
5
ИвановИван
21.09.05
✎
15:28
|
наркоманы
|
|||
|
6
Samir
21.09.05
✎
15:29
|
Спасибо
|
|||
|
7
Ёпрст
21.09.05
✎
15:29
|
Вот те 2 функции .... можешь слепить свою
//****************************************************************************** // Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт // // Параметры: // Стр - строка, которую необходимо разложить на подстроки. // Параметр передается по значению. // Разделитель - строка-разделитель, по умолчанию - запятая. // // // Возвращаемое значение: // список значений, элементы которого - подстроки // // Описание: // Функция "расщепляет" строку на подстроки, используя заданный // разделитель. Разделитель может иметь любую длину. // Если в качестве разделителя задан пробел, рядом стоящие пробелы // считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр // игнорируются. // Например, // глРазложить(",ку,,,му", ",") возвратит список значений из пяти элементов, // три из которых - пустые строки, а // глРазложить(" ку му", " ") возвратит список значений из двух элементов // Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт СЗ = СоздатьОбъект("СписокЗначений"); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда СЗ.ДобавитьЗначение(Стр); Возврат СЗ; КонецЕсли; СЗ.ДобавитьЗначение(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда СЗ.ДобавитьЗначение(Стр); Возврат СЗ; КонецЕсли; СЗ.ДобавитьЗначение(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции // глРазложить //****************************************************************************** // глФамилияИмяОтчество(Объект,Фамилия,Имя,Отчество) // // Параметры: // Объект - элемент справочника Сотрудники или ФизЛицо // или строка // Фамилия - в этот параметр будет записана фамилия сотрудника // Имя - в этот параметр будет записано имя сотрудника // Отчество - в этот параметр будет записано отчество сотрудника // // Возвращаемое значение: // Фамилия и инициалы сотрудника // // Описание: // Разбирает "наименование" сотрудника по Фамилия, Имя, Отчество // и возвращает фамилию и инициалы сотрудника // Функция глФамилияИмяОтчество(Объект, Фамилия="", Имя="", Отчество="") Экспорт ТипОбъекта = ТипЗначения(Объект); Если ТипЗначенияСтр(Объект) = "Строка" Тогда Список = глРазложить(Объект, " "); ИначеЕсли (ТипЗначенияСтр(Объект) = "Справочник") ИЛИ (ТипЗначенияСтр(Объект) = "ГрупповойКонтекст") Тогда Если Объект.Вид()="ФизЛица" Тогда Список = глРазложить(Объект.ПолнНаименование," "); ИначеЕсли Объект.Вид()="Сотрудники" Тогда Список = глРазложить(Объект.ФизЛицо.ПолнНаименование," "); КонецЕсли; КонецЕсли; Фамилия = ?(0 < Список.РазмерСписка(), Список.ПолучитьЗначение(1), ""); Имя = ?(1 < Список.РазмерСписка(), Список.ПолучитьЗначение(2), ""); Отчество = ?(2 < Список.РазмерСписка(), Список.ПолучитьЗначение(3), ""); Возврат Фамилия+?(ПустоеЗначение(Имя) = 0," "+Лев(Имя,1)+"."+?(ПустоеЗначение(Отчество) = 0, Лев(Отчество,1)+".", ""), ""); КонецФункции // глФамилияИмяОтчество() |
|||
|
8
Волшебник
модератор
21.09.05
✎
15:32
|
Надо после первого поста закрывать ветку, а то избыточные ответы бывают. Сейчас он начнет спрашивать: какой способ работает быстрее...
|
|||
|
9
Рупор абсурда
21.09.05
✎
15:35
|
Стр=СтрЗаменить(ФИО," ",РазделительСтрок);
Стр=СтрПолучитьСтроку(Стр,1)+" "+Лев(СтрПолучитьСтроку(Стр,2),1)+"."+Лев(СтрПолучитьСтроку(Стр,3),1)+"."; |
|||
|
10
Волшебник
модератор
21.09.05
✎
15:37
|
(9) Как всегда, гениально просто.
|
|||
|
11
Рупор абсурда
21.09.05
✎
15:39
|
(10) Давай теперь ты чё-нить с регулярными выражениями замути, отдай мне Эмблему и ветку можно будет спокойно закрывать ...
|
|||
|
12
Grant
21.09.05
✎
15:41
|
Стр="Иванов Иван Иванович";
Стр1=""; Пока СокрЛП(Лев(Стр,к))<>СокрЛП(Лев(Стр,к+1)) Цикл к=к+1; КонецЦикла; Стр1=Лев(Стр,к+2)+"."; к=1; Пока СокрЛП(Прав(Стр,к))<>СокрЛП(Прав(Стр,к+1)) Цикл к=к+1; КонецЦикла; Стр1=Стр1+Лев(Прав(Стр,к),1)+"."; Сообщить(Стр1); |
|||
|
13
Рупор абсурда
21.09.05
✎
15:43
|
(12) Переменная к не определена ...
|
|||
|
14
КонецЦикла
21.09.05
✎
15:44
|
2(11) В каком-то релизе ЗИКа писали, что что-то может быть двойным (Отчество вроде)... лучше взять функцию оттуда ;)
|
|||
|
15
Волшебник
модератор
21.09.05
✎
15:46
|
(11) Регулярные выражения для такой задачи как из пушки по воробьям. Достаточно будет:
$words = split(" ", $FIO); $result = substr($words[0],0,1) + .... и т.д. p.s. Эмблему не отдам. Ник какой-то "много-на-себя-берущий"... |
|||
|
16
Рупор абсурда
21.09.05
✎
15:46
|
(14) Двойное отчество, это когда мать не уверена, кто отец?
|
|||
|
17
Grant
21.09.05
✎
15:46
|
(13) Добавь, не маленький...
ЗЫ я по условию сабжа... (Прав, Лев, СокрЛП )... |
|||
|
18
Рупор абсурда
21.09.05
✎
15:47
|
(15) Ладно, оставь себе ... Считай, это мой тебе подарок ...
|
|||
|
19
Рупор абсурда
21.09.05
✎
15:49
|
(17) Хе ... у тебя ж там ещё Пока, Цикл, КонецЦикла ...
|
|||
|
20
skunk
21.09.05
✎
15:51
|
(16)когда папа не уверен... что он творец... своего создания
|
|||
|
21
КонецЦикла
21.09.05
✎
15:51
|
2(16) Ты слишком умный... заходи в КУЛ - я тебя забаню бугага
|
|||
|
22
Cerrg
21.09.05
✎
15:50
|
А бывает и без отчества...
|
|||
|
23
Фокусник
21.09.05
✎
15:53
|
(16) Это "Оглы". У нас есть несколько таких
|
|||
|
24
Grant
21.09.05
✎
15:53
|
(19) Это уже не строковые процедуры/функции...
|
|||
|
25
Волшебник
модератор
21.09.05
✎
15:54
|
(20) Взгляни на себя в зеркало.
|
|||
|
26
Кудесник
21.09.05
✎
16:06
|
2(20)->(25) Я бы обиделся
|
|||
|
27
skunk
21.09.05
✎
16:16
|
(25)и что?
(26)обиженных... ну я уже говорил |
|||
|
28
Рупор абсурда
21.09.05
✎
16:47
|
Интересно, чья рожа не понравилась Волшебнику? Может он просто веткой промахнулся?
|
|||
|
29
Волшебник
модератор
21.09.05
✎
16:48
|
(28) Я имел в виду психологическое зеркало, зеркало души.
|
|||
|
30
Кудесник
21.09.05
✎
16:49
|
Или форумом?
|
|||
|
31
Рупор абсурда
21.09.05
✎
16:51
|
(29) 20-х постов - 3, кому именно было адресовано (25)?
|
|||
|
32
Йожик
21.09.05
✎
16:53
|
(31) Тебе, старичок.
|
|||
|
33
skunk
21.09.05
✎
16:57
|
(29)и что в моем зеркале души?
|
|||
|
34
Кудесник
21.09.05
✎
16:58
|
2(33) Темноту вижу, пятна красные
|
|||
|
35
skunk
21.09.05
✎
17:02
|
(34)ты прямо гри... что есть темнота... пятна красные... а то мы в школах не обученные...
|
|||
|
36
Волшебник
модератор
21.09.05
✎
17:03
|
(31) Для КонецЦикла.
|
|||
|
37
Рупор абсурда
21.09.05
✎
17:05
|
Я всё понял!
|
|||
|
38
КонецЦикла
21.09.05
✎
17:11
|
2(36) И что?
2(37) Я ничего не понял! |
|||
|
39
Кудесник
21.09.05
✎
17:12
|
2(35) Нельзя
Простой смертный не должен знать будущее |
|||
|
40
skunk
21.09.05
✎
17:13
|
(39)понятно...
|
|||
|
41
shura
21.09.05
✎
17:25
|
Загадили ветку...
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |