По теме из базы знаний
- Универсальные функции ЗУП 3.1 / ЗКГУ 3.1, которые помогут в разработке
- Печать уведомления о прибытии иностранного гражданина или лица без гражданства в место пребывания старого (2019г с правками из приказа МВД №180 от 24.03.2020) и нового (2021г согласно приложению №4 к приказу МВД №856 от 10.12.2020) образца для ЗУП 3.1
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если продолжать развивать тему das'a, то можно привести следующий код
// ===============================
// получаем ФИО сотрудника в краткой или полной форме
Функция ФИО(Сотр,Кратко=0) Экспорт
Если ТипЗначенияСтр(Кратко) = "Перечисление" Тогда
Кратко = ?(Кратко = Да,0,1);
КонецЕсли;
Если ТипЗначения(Сотр) = 11 Тогда // Справочник
С = Сотр;
Если Сотр.Вид() = "МестаХранения" Тогда
// выдадим ФИО МОЛа
Если Сотр.Тип = Перечисление.ТипыМестХранения.МОЛ Тогда
С = Сотр.МОЛ;
Иначе
// ФИО для склада? странно - выдадим наименование
Возврат Сотр.Наименование;
КонецЕсли;
КонецЕсли;
Если Кратко = 1 Тогда
Если ПустоеЗначение(С.Отчество) = 1 Тогда // если у сотрудника нет отчества (например, иностранец)
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ".";
Иначе //в полной форме
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ". " + Сред(С.Отчество,1,1) + ".";
КонецЕсли;
Иначе
Возврат Сокрлп(С.Фамилия) + " "+Сокрлп(С.Имя) + " " + Сокрлп(С.Отчество);
КонецЕсли;
Иначе
С = Сотр;
Если (Кратко = 1) И (Найти(С,".") = 0) Тогда
ФамилияПоз = Найти(С," ");
Фамилия = Лев(С,ФамилияПоз - 1);
С = СокрЛП(Сред(С, СтрДлина(Фамилия) + 2));
Если Найти(С," ") = 0 Тогда // если нет пробела - значит нет отчества
ФИО = Фамилия + " "+Лев(С,1) + ".";
Иначе //в полной форме
Имя = Лев(С,Найти(С," ") - 1);
Отчество = Сред(С, СтрДлина(Имя) + 2);
Имя = Лев(Имя,1) + ". ";
Отчество = Лев(Отчество,1) + ".";
ФИО = Фамилия + " " + Имя + Отчество;
КонецЕсли;
Возврат ФИО
КонецЕсли;
Возврат С
КонецЕсли;
КонецФункции
// ===============================
// получаем ФИО сотрудника в краткой или полной форме
Функция ФИО(Сотр,Кратко=0) Экспорт
Если ТипЗначенияСтр(Кратко) = "Перечисление" Тогда
Кратко = ?(Кратко = Да,0,1);
КонецЕсли;
Если ТипЗначения(Сотр) = 11 Тогда // Справочник
С = Сотр;
Если Сотр.Вид() = "МестаХранения" Тогда
// выдадим ФИО МОЛа
Если Сотр.Тип = Перечисление.ТипыМестХранения.МОЛ Тогда
С = Сотр.МОЛ;
Иначе
// ФИО для склада? странно - выдадим наименование
Возврат Сотр.Наименование;
КонецЕсли;
КонецЕсли;
Если Кратко = 1 Тогда
Если ПустоеЗначение(С.Отчество) = 1 Тогда // если у сотрудника нет отчества (например, иностранец)
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ".";
Иначе //в полной форме
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ". " + Сред(С.Отчество,1,1) + ".";
КонецЕсли;
Иначе
Возврат Сокрлп(С.Фамилия) + " "+Сокрлп(С.Имя) + " " + Сокрлп(С.Отчество);
КонецЕсли;
Иначе
С = Сотр;
Если (Кратко = 1) И (Найти(С,".") = 0) Тогда
ФамилияПоз = Найти(С," ");
Фамилия = Лев(С,ФамилияПоз - 1);
С = СокрЛП(Сред(С, СтрДлина(Фамилия) + 2));
Если Найти(С," ") = 0 Тогда // если нет пробела - значит нет отчества
ФИО = Фамилия + " "+Лев(С,1) + ".";
Иначе //в полной форме
Имя = Лев(С,Найти(С," ") - 1);
Отчество = Сред(С, СтрДлина(Имя) + 2);
Имя = Лев(Имя,1) + ". ";
Отчество = Лев(Отчество,1) + ".";
ФИО = Фамилия + " " + Имя + Отчество;
КонецЕсли;
Возврат ФИО
КонецЕсли;
Возврат С
КонецЕсли;
КонецФункции
Так будет лучше
// ===============================
// получаем ФИО сотрудника в краткой или полной форме
Функция ФИО(Сотр,Кратко=0) Экспорт
Если ТипЗначенияСтр(Кратко) = "Перечисление" Тогда
Кратко = ?(Кратко = Да,0,1);
КонецЕсли;
Если ТипЗначения(Сотр) = 11 Тогда // Справочник
С = Сотр;
Если Сотр.Вид() = "МестаХранения" Тогда
// выдадим ФИО МОЛа
Если Сотр.Тип = Перечисление.ТипыМестХранения.МОЛ Тогда
С = Сотр.МОЛ;
Иначе
// ФИО для склада? странно - выдадим наименование
Возврат Сотр.Наименование;
КонецЕсли;
КонецЕсли;
Если Кратко = 1 Тогда
Если ПустоеЗначение(С.Отчество) = 1 Тогда // если у сотрудника нет отчества (например, иностранец)
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ".";
Иначе //в полной форме
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ". " + Сред(С.Отчество,1,1) + ".";
КонецЕсли;
Иначе
Возврат Сокрлп(С.Фамилия) + " "+Сокрлп(С.Имя) + " " + Сокрлп(С.Отчество);
КонецЕсли;
Иначе
С = Сотр;
Если (Кратко = 1) И (Найти(С,".") = 0) Тогда
ФамилияПоз = Найти(С," ");
Фамилия = Лев(С,ФамилияПоз - 1);
С = СокрЛП(Сред(С, СтрДлина(Фамилия) + 2));
Если Найти(С," ") = 0 Тогда // если нет пробела - значит нет отчества
ФИО = Фамилия + " "+Лев(С,1) + ".";
Иначе //в полной форме
Имя = Лев(С,Найти(С," ") - 1);
Отчество = Сред(С, СтрДлина(Имя) + 2);
Имя = Лев(Имя,1) + ". ";
Отчество = Лев(Отчество,1) + ".";
ФИО = Фамилия + " " + Имя + Отчество;
КонецЕсли;
Возврат ФИО
КонецЕсли;
Возврат С
КонецЕсли;
КонецФункции
Показать
Можно попробовать так:
// получаем ФИО сотрудника в краткой или полной форме
Функция ФИО(Сотр,Кратко=0) Экспорт
Если ТипЗначенияСтр(Кратко) = "Перечисление" Тогда
Кратко = ?(Кратко = Да,0,1);
КонецЕсли;
Если ТипЗначения(Сотр) = 11 Тогда // Справочник
С = Сотр;
Если Сотр.Вид() = "МестаХранения" Тогда
// выдадим ФИО МОЛа
Если Сотр.Тип = Перечисление.ТипыМестХранения.МОЛ Тогда
С = Сотр.МОЛ;
Иначе
// ФИО для склада? странно - выдадим наименование
Возврат Сотр.Наименование;
КонецЕсли;
КонецЕсли;
Если Кратко = 1 Тогда
Если ПустоеЗначение(С.Отчество) = 1 Тогда // если у сотрудника нет отчества (например, иностранец)
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ".";
Иначе //в полной форме
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ". " + Сред(С.Отчество,1,1) + ".";
КонецЕсли;
Иначе
Возврат Сокрлп(С.Фамилия) + " "+Сокрлп(С.Имя) + " " + Сокрлп(С.Отчество);
КонецЕсли;
Иначе
С = Сотр;
Если (Кратко = 1) И (Найти(С,".") = 0) Тогда
ФамилияПоз = Найти(С," ");
Фамилия = Лев(С,ФамилияПоз - 1);
С = СокрЛП(Сред(С, СтрДлина(Фамилия) + 2));
Если Найти(С," ") = 0 Тогда // если нет пробела - значит нет отчества
ФИО = Фамилия + " "+Лев(С,1) + ".";
Иначе //в полной форме
Имя = Лев(С,Найти(С," ") - 1);
Отчество = Сред(С, СтрДлина(Имя) + 2);
Имя = Лев(Имя,1) + ". ";
Отчество = Лев(Отчество,1) + ".";
ФИО = Фамилия + " " + Имя + Отчество;
КонецЕсли;
Возврат ФИО
КонецЕсли;
Возврат С
КонецЕсли;
КонецФункции
// получаем ФИО сотрудника в краткой или полной форме
Функция ФИО(Сотр,Кратко=0) Экспорт
Если ТипЗначенияСтр(Кратко) = "Перечисление" Тогда
Кратко = ?(Кратко = Да,0,1);
КонецЕсли;
Если ТипЗначения(Сотр) = 11 Тогда // Справочник
С = Сотр;
Если Сотр.Вид() = "МестаХранения" Тогда
// выдадим ФИО МОЛа
Если Сотр.Тип = Перечисление.ТипыМестХранения.МОЛ Тогда
С = Сотр.МОЛ;
Иначе
// ФИО для склада? странно - выдадим наименование
Возврат Сотр.Наименование;
КонецЕсли;
КонецЕсли;
Если Кратко = 1 Тогда
Если ПустоеЗначение(С.Отчество) = 1 Тогда // если у сотрудника нет отчества (например, иностранец)
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ".";
Иначе //в полной форме
Возврат Сокрлп(С.Фамилия) + " " + Сред(С.Имя,1,1) + ". " + Сред(С.Отчество,1,1) + ".";
КонецЕсли;
Иначе
Возврат Сокрлп(С.Фамилия) + " "+Сокрлп(С.Имя) + " " + Сокрлп(С.Отчество);
КонецЕсли;
Иначе
С = Сотр;
Если (Кратко = 1) И (Найти(С,".") = 0) Тогда
ФамилияПоз = Найти(С," ");
Фамилия = Лев(С,ФамилияПоз - 1);
С = СокрЛП(Сред(С, СтрДлина(Фамилия) + 2));
Если Найти(С," ") = 0 Тогда // если нет пробела - значит нет отчества
ФИО = Фамилия + " "+Лев(С,1) + ".";
Иначе //в полной форме
Имя = Лев(С,Найти(С," ") - 1);
Отчество = Сред(С, СтрДлина(Имя) + 2);
Имя = Лев(Имя,1) + ". ";
Отчество = Лев(Отчество,1) + ".";
ФИО = Фамилия + " " + Имя + Отчество;
КонецЕсли;
Возврат ФИО
КонецЕсли;
Возврат С
КонецЕсли;
КонецФункции
Это в глобальнике:
Функция ФИО(Сотрудник) Экспорт
Перем ПолноеИмя, Фамилия, ИмяОтчество, Имя, Отчество;
Перем ПозицияПервогоПробела, ПозицияВторогоПробела;
ПолноеИмя = Сотрудник.Наименование;
ПозицияПервогоПробела = Найти(ПолноеИмя, " ");
Если ПозицияПервогоПробела = 0 Тогда
Возврат ПолноеИмя;
Иначе
Фамилия = Лев(ПолноеИмя, ПозицияПервогоПробела);
ИмяОтчество = Сред(ПолноеИмя, ПозицияПервогоПробела+1);
ИмяОтчество = СокрЛ(ИмяОтчество);
Имя = Лев(ИмяОтчество, 1)+".";
ПозицияВторогоПробела = Найти(ИмяОтчество, " ");
Если ПозицияВторогоПробела = 0 Тогда
Возврат Фамилия+Имя;
Иначе
Отчество = Сред(ИмяОтчество, ПозицияВторогоПробела+1);
Отчество = СокрЛ(Отчество);
Отчество = Лев(Отчество, 1)+".";
Возврат Фамилия+Имя+Отчество;
КонецЕсли;
КонецЕсли;
КонецФункции
но можно и в любое место документа ТТН воткнуть (или в доп обработке) в общем как захочется...
Функция ФИО(Сотрудник) Экспорт
Перем ПолноеИмя, Фамилия, ИмяОтчество, Имя, Отчество;
Перем ПозицияПервогоПробела, ПозицияВторогоПробела;
ПолноеИмя = Сотрудник.Наименование;
ПозицияПервогоПробела = Найти(ПолноеИмя, " ");
Если ПозицияПервогоПробела = 0 Тогда
Возврат ПолноеИмя;
Иначе
Фамилия = Лев(ПолноеИмя, ПозицияПервогоПробела);
ИмяОтчество = Сред(ПолноеИмя, ПозицияПервогоПробела+1);
ИмяОтчество = СокрЛ(ИмяОтчество);
Имя = Лев(ИмяОтчество, 1)+".";
ПозицияВторогоПробела = Найти(ИмяОтчество, " ");
Если ПозицияВторогоПробела = 0 Тогда
Возврат Фамилия+Имя;
Иначе
Отчество = Сред(ИмяОтчество, ПозицияВторогоПробела+1);
Отчество = СокрЛ(Отчество);
Отчество = Лев(Отчество, 1)+".";
Возврат Фамилия+Имя+Отчество;
КонецЕсли;
КонецЕсли;
КонецФункции
но можно и в любое место документа ТТН воткнуть (или в доп обработке) в общем как захочется...
Функция глСокрФИО(Знач ФИО) Экспорт
ФИО=СокрЛП(ФИО);
Пока Найти(ФИО," ")>0 Цикл
ФИО=СтрЗаменить(ФИО," "," ");
КонецЦикла;
ФИО=СтрЗаменить(ФИО," ",РазделительСтрок);
Рез=СтрПолучитьСтроку(ФИО,1)+" ";
Для Х=2 По Мин(3,СтрКоличествоСтрок(ФИО)) Цикл
Рез=Рез+Лев(СтрПолучитьСтроку(ФИО,Х),1)+". ";
КонецЦикла;
Возврат СокрЛП(Рез);
КонецФункции
©Рупор
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот