Как вывести на печать сокращеное ФИО?

5. sasha444 27.02.12 08:21 Сейчас в теме
надо тоже попробовать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. АлексейН 2 28.02.12 16:57 Сейчас в теме
Вовремя увидел,
Спасибо надо и у себя попробовать
7. Gendalf 28 28.02.12 17:23 Сейчас в теме
СокрЛ и СокрП посмотри в книге...очень все подробно.. по модерированию текста :)
8. lew1987 48 29.02.12 15:14 Сейчас в теме
Если продолжать развивать тему das'a, то можно привести следующий код

// ===============================
// получаем ФИО сотрудника в краткой или полной форме
Функция ФИО(Сотр,Кратко=0) Экспорт
Если ТипЗначенияСтр(Кратко) = "Перечисление" Тогда
Кратко = ?(Кратко = Да,0,1);
КонецЕсли;

Если ТипЗначения(Сотр) = 11 Тогда // Справочник
С = Сотр;
Если Сотр.Вид() = "МестаХранения" Тогда
// выдадим ФИО МОЛа
Если Сотр.Тип = Перечисление.ТипыМестХранения.МОЛ Тогда
С = Сотр.МОЛ;
Иначе
// ФИО для склада? странно - выдадим наименование
Возврат Сотр.Наименование;
КонецЕсли;
КонецЕсли;
Если Кратко = 1 Тогда
Если ПустоеЗначение(С.Отчество) = 1 Тогда // если у сотрудника нет отчества (например, иностранец)
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ".";
Иначе //в полной форме
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ". " + Сред(С.Отчество,1,1) + ".";
КонецЕсли;
Иначе
Возврат Сокрлп(С.Фамилия) + " "+Сокрлп(С.Имя) + " " + Сокрлп(С.Отчество);
КонецЕсли;
Иначе
С = Сотр;
Если (Кратко = 1) И (Найти(С,".") = 0) Тогда
ФамилияПоз = Найти(С," ");
Фамилия = Лев(С,ФамилияПоз - 1);

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

Возврат ФИО
КонецЕсли;
Возврат С
КонецЕсли;
КонецФункции
9. lew1987 48 29.02.12 15:14 Сейчас в теме
Так будет лучше

// ===============================
// получаем ФИО сотрудника в краткой или полной форме
Функция ФИО(Сотр,Кратко=0) Экспорт
	Если ТипЗначенияСтр(Кратко) = "Перечисление" Тогда
		Кратко = ?(Кратко = Да,0,1);
	КонецЕсли;
	
	Если ТипЗначения(Сотр) = 11 Тогда // Справочник
		С = Сотр;
		Если Сотр.Вид() = "МестаХранения" Тогда
			// выдадим ФИО МОЛа
		    Если Сотр.Тип = Перечисление.ТипыМестХранения.МОЛ Тогда
		        С = Сотр.МОЛ;
			Иначе
				// ФИО для склада? странно - выдадим наименование
				Возврат Сотр.Наименование;
		    КонецЕсли;
		КонецЕсли;
		Если Кратко = 1 Тогда
			Если ПустоеЗначение(С.Отчество) = 1 Тогда // если у сотрудника нет отчества (например, иностранец)
				Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ".";
			Иначе //в полной форме	
				Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ". " + Сред(С.Отчество,1,1) + ".";
			КонецЕсли;	
		Иначе
			Возврат Сокрлп(С.Фамилия) + " "+Сокрлп(С.Имя) + " " + Сокрлп(С.Отчество);
		КонецЕсли;
	Иначе
		С = Сотр;
		Если (Кратко = 1) И (Найти(С,".") = 0) Тогда
			ФамилияПоз = Найти(С," ");
			Фамилия = Лев(С,ФамилияПоз - 1);     
			
			С = СокрЛП(Сред(С, СтрДлина(Фамилия) + 2));
			Если Найти(С," ") = 0 Тогда  // если нет пробела - значит нет отчества
				ФИО = Фамилия + " "+Лев(С,1) + ".";
			Иначе //в полной форме
				Имя = Лев(С,Найти(С," ") - 1);
				Отчество = Сред(С, СтрДлина(Имя) + 2);
                Имя = Лев(Имя,1) + ". ";
            	Отчество = Лев(Отчество,1) + ".";
            	ФИО = Фамилия + " " + Имя + Отчество;
			КонецЕсли;	

			Возврат ФИО
		КонецЕсли;		
		Возврат С
	КонецЕсли;
КонецФункции 
Показать
10. hercares 23.03.12 10:35 Сейчас в теме
11. Мать Тереза 26.03.12 15:59 Сейчас в теме
Можно попробовать так:
// получаем ФИО сотрудника в краткой или полной форме
Функция ФИО(Сотр,Кратко=0) Экспорт
Если ТипЗначенияСтр(Кратко) = "Перечисление" Тогда
Кратко = ?(Кратко = Да,0,1);
КонецЕсли;

Если ТипЗначения(Сотр) = 11 Тогда // Справочник
С = Сотр;
Если Сотр.Вид() = "МестаХранения" Тогда
// выдадим ФИО МОЛа
Если Сотр.Тип = Перечисление.ТипыМестХранения.МОЛ Тогда
С = Сотр.МОЛ;
Иначе
// ФИО для склада? странно - выдадим наименование
Возврат Сотр.Наименование;
КонецЕсли;
КонецЕсли;
Если Кратко = 1 Тогда
Если ПустоеЗначение(С.Отчество) = 1 Тогда // если у сотрудника нет отчества (например, иностранец)
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ".";
Иначе //в полной форме
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ". " + Сред(С.Отчество,1,1) + ".";
КонецЕсли;
Иначе
Возврат Сокрлп(С.Фамилия) + " "+Сокрлп(С.Имя) + " " + Сокрлп(С.Отчество);
КонецЕсли;
Иначе
С = Сотр;
Если (Кратко = 1) И (Найти(С,".") = 0) Тогда
ФамилияПоз = Найти(С," ");
Фамилия = Лев(С,ФамилияПоз - 1);

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

Возврат ФИО
КонецЕсли;
Возврат С
КонецЕсли;
КонецФункции
12. cheiser1982 230 04.10.16 11:41 Сейчас в теме
В бухгалтерии и зарплате 3.0 есть стандартная функция:
ФИОСИнициалами = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ФИО);

Сорри - не заметил что обсуждается версия 7.7
user613836_ww3t; skrt; shaykhelov; adamst; +4 Ответить
13. корум 288 04.10.16 12:02 Сейчас в теме
(12) cheiser1982, и не заметил, что вопрос неактуален уже 4 года...
14. NikR 10.03.09 15:02 Сейчас в теме
Как вывести на печать сокращеное ФИО сотрудника в печатной форме, каким алгоритмом сократить.
Документ ТТН, сотрудника выбираю из справочника.
15. das 232 10.03.09 15:54 Сейчас в теме
ФИО(ФамилияИмяОтчество)
вызывается из глобальника
16. das 232 10.03.09 18:48 Сейчас в теме
Это в глобальнике:

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

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

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

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


но можно и в любое место документа ТТН воткнуть (или в доп обработке) в общем как захочется...
user970589; webresurs; +2 Ответить
17. Ёпрст 1065 11.03.09 09:28 Сейчас в теме
Функция глСокрФИО(Знач ФИО) Экспорт
    ФИО=СокрЛП(ФИО);
    Пока Найти(ФИО,"  ")>0 Цикл
        ФИО=СтрЗаменить(ФИО,"  "," ");    
    КонецЦикла;
    ФИО=СтрЗаменить(ФИО," ",РазделительСтрок);
    Рез=СтрПолучитьСтроку(ФИО,1)+" ";
    Для Х=2 По Мин(3,СтрКоличествоСтрок(ФИО)) Цикл
        Рез=Рез+Лев(СтрПолучитьСтроку(ФИО,Х),1)+". ";    
    КонецЦикла;    
    Возврат СокрЛП(Рез);  
КонецФункции
©Рупор
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот