Имя: Пароль:
1C
 
Как сокращать инициалы сотрудник
0 чувак
 
24.05.05
13:09
Как можно сокращать ФИО сотрудника в отчете?
Например Иванов Иван Иванович на Иванов И.И.
1 Diter
 
24.05.05
13:10
Глянь как работает Найти() и Сред()
2 OFF
 
24.05.05
13:11
+(1) а для примера посмотри в "типовых" где эт дело реализовано
3 Diter
 
24.05.05
13:12
Поз=0;
Найти(ВамилияПолностью," ");
Фамилия=Сред(ФамилияПолностью,1,Поз-1);
ФамилияПолностью=Сред(ФамилияПолностью,Поз+1);
.....
дальше по аналогии получаешь имя и отчество
.....

ФИО=Фамилия+" "+Сред(Имя,1,1)+"."+Сред(Отчество,1,1)+".";
4 1С Дурочкааа
 
24.05.05
13:12
В типовых - ищи глобальную функцию.
5 РБ
 
24.05.05
13:13
ды не ФИО() разве
6 чувак
 
24.05.05
13:14
Если у Вас в глобальном модуле есть такая готовая функция одлжите пожулуйста.
7 goodfella
 
24.05.05
13:15
В типовой бухии есть "глФамилияИмяОтчество"
8 чувак
 
24.05.05
13:17
к сожалению у меня типового нету, до меня кто то его спер наверно
9 1С Дурочкааа
 
24.05.05
13:17
Меня всегда удивляют люди, которые пишут нетиповые конфигурации и затыкаются на таких простых вещах.
10 Diter
 
24.05.05
13:18
(8) А самому написать? В (3) Осталось добавить пять строк
11 Guk
 
24.05.05
13:18
(7) Для Казахстана?

(8) На этот шедевр из типовой бухии:

Функция ФИО(Сотрудник) Экспорт
   Перем ПолноеИмя, Фамилия, ИмяОтчество, Имя, Отчество;
   Перем ПозицияПервогоПробела, ПозицияВторогоПробела;

   ПолноеИмя = Сотрудник.Наименование;

   ПозицияПервогоПробела = Найти(ПолноеИмя, " ");
   Если ПозицияПервогоПробела = 0 Тогда
       Возврат ПолноеИмя;
   Иначе
       Фамилия = Лев(ПолноеИмя, ПозицияПервогоПробела);
       ИмяОтчество = Сред(ПолноеИмя, ПозицияПервогоПробела+1);
       ИмяОтчество = СокрЛ(ИмяОтчество);
       Имя = Лев(ИмяОтчество, 1)+".";

       ПозицияВторогоПробела = Найти(ИмяОтчество, " ");
       Если ПозицияВторогоПробела = 0 Тогда
           Возврат Фамилия+Имя;
       Иначе
           Отчество = Сред(ИмяОтчество, ПозицияВторогоПробела+1);
           Отчество = СокрЛ(Отчество);
           Отчество = Лев(Отчество, 1)+".";
           Возврат Фамилия+Имя+Отчество;
       КонецЕсли;
   КонецЕсли;
КонецФункции
12 чувак
 
24.05.05
13:22
Всем спасибо !
13 1С Дурочкааа
 
24.05.05
13:31
СтрФИО=СтрЗаменить(ФИО,"  "," ");
   СтрФИО=СтрЗаменить(СтрФИО,",","&");
   СтрФИО=СтрЗаменить(СтрФИО," ",",");
   СЗ=СоздатьОбъект("СписокЗначений");
   СЗ.ИзСтрокиСРазделителями(СтрФИО);
   ВсегоЧастейФИО=СЗ.РазмерСписка();
   Если ВсегоЧастейФИО>0 Тогда
       Фамилия=СЗ.ПолучитьЗначение(1);
   Иначе    
       Фамилия="";
   КонецЕсли;
   Если ВсегоЧастейФИО>1 Тогда
       Имя=СЗ.ПолучитьЗначение(2);
       Инициал1=Лев(Имя,1);
   Иначе    
       Имя="";
       Инициал1="";
   КонецЕсли;
   Если ВсегоЧастейФИО>2 Тогда
       Отчество=СЗ.ПолучитьЗначение(3);
       Инициал2=Лев(Отчество,1);
   Иначе    
       Отчество="";
       Инициал2="";
   КонецЕсли;
14 Ветеран
 
24.05.05
13:42
А в одну строчку слабо?
15 Ветеран
 
24.05.05
13:48
Функция Сокр(Знач ФИО)
   Возврат Лев(ФИО, Найти(ФИО, " ")) + Сред(ФИО, Найти(ФИО, " ") + 1, 1) + "." + Сред(Сред(ФИО, Найти(ФИО, " ") + 1), Найти(Сред(ФИО, Найти(ФИО, " ") + 1), " ") + 1, 1) + ".";
КонецФункции
16 Diter
 
24.05.05
13:51
(15) Гигант
17 Николай из Ступино
 
24.05.05
21:36
Ветеран, это плохой стиль программирования. Ужас сколько вложенных скобок !
18 француз
 
24.05.05
21:38
(15) "Си подобный стиль в 1Си" - "цы" принадлежит Ветерану.
19 Фокусник
 
25.05.05
08:47
+17 зачастую чересчур короткий код медленнее работает ;)
20 Ветеран
 
25.05.05
09:11
(17) Стилист?
(19) В условиях задачи не было ни слова про быстродействие ...

Когда вы поработаете с 1с подольше, поймёте, что иногда бывает просто необходимо написать функцию в одну строчку ...