Как получить инициалы

1. alw-1 02.11.11 16:57 Сейчас в теме
Как получить инициалы, ели требуется ввести в печатную форму фамилию + инициалы например : Иванов И.И. а всправочнике сотрудники Иванов Иван Иванович есть ли какая- нибудь встроенная функция?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. amaksimov 02.11.11 17:09 Сейчас в теме
(1) alw-1, лучше используйте типовую ф-цию общего модуля.

Или же
Сред не нужен будет, т.к. есть регистр сведений ФИОФизЛиц, там всё отдельно.
Функция Лев(...,1) пригодится.
Можно ещё ПОДСТРОКА( ) в языке запросов использовать.
29. user654641_yaga_m 13 06.07.23 11:45 Сейчас в теме
(1)А просто СтрРазделить() и потом Лев() первого символа двух элементов массива не проходит?
2. Irken_1 02.11.11 16:58 Сейчас в теме
посмотрите в зупе или в упп, есть такие функции в типовых решениях.
3. Irken_1 02.11.11 17:02 Сейчас в теме
в зупе- модуль ОбщегоНазначения.ФамилияИнициалыФизЛица(парам....пам пам);
user785234; user1619761; criptid; Margo462; Vyacheslav_Kochnev; Teut_Vlad; Blagin; +7 Ответить
8. alw-1 02.11.11 17:42 Сейчас в теме
(3) Irken_1,
Спасибо за полезную информацию, ф-ция ОбщегоНазначения.ФамилияИнициалыФизЛица(.......)существует и в бухгалтерии как раз для таких случаев, мне она помогла.
Waleinfo; Новичок1с; user1619761; Yan_Malyakov; Bespechnii_kot; proxytm; YalanchidiO; +7 Ответить
4. ula85 02.11.11 17:03 Сейчас в теме
Если это ЗуП то там точно фио в разных реквизитах хранится
то это делается так
Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>)
Параметры:

<Строка> (обязательный)

Тип: Строка. Исходная строка.
<НачальныйНомер> (обязательный)

Тип: Число. Начальный номер символа, с которого начинается выборка. Нумерация символов в строке начинается с 1.
<ЧислоСимволов> (необязательный)

Тип: Число. Количество выбираемых символов. Если параметр не указан, то выбираются символы до конца строки.
Возвращаемое значение:

Тип: Строка. Строка выбранных символов.
Описание:

Выбирает строку символов, начиная с символа <НачальныйНомер>, общим количеством <ЧислоСимволов>.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Пример:

// Пусть номер автомобиля в справочнике основных средств задается
// в виде х999хх99, где последние две цифры - код региона.
// Получим цифровую часть номера.
ЦифрыНомера = Сред(ОсновноеСредство.ГосНомер, 2, 3);
7. alw-1 02.11.11 17:31 Сейчас в теме
(4) ula85,
А я не знаю сколько символов в фамилии - они в справочнике разные, здесь нужен брлее сложный алгоритм,а не просто функция Сред()
6. alw-1 02.11.11 17:27 Сейчас в теме
У меня бухгалтерия корп. может кто скажет имя типовой ф-ции общего модуля, сприменение ф- ций работы со строками слишком много кода.
9. SPID 02.11.11 17:48 Сейчас в теме
Парсить строку по пробелам и получать отдельно имя фамилию и отчество, а из них инициалы. Правда тут будет важен порядок указания фамилии, имени и отчества, да и подумать, как обрабатывать, если фамилия из нескольких слов какая то, для иностранцев, например.
10. rafito 02.11.11 21:08 Сейчас в теме
(9) SPID, есть регистр сведений ФИОфизлица кажется. там уже все отделено)))
11. rhtr 92 22.07.14 19:23 Сейчас в теме
ПРИМЕР:

ЗапросК = Новый Запрос;
	ЗапросК.Текст = 
	"ВЫБРАТЬ
	|	ПРЕДСТАВЛЕНИЕ(ОтветственныеЛицаОрганизацийСрезПоследних.Должность) КАК Должность,
	|	ФИОФизЛицСрезПоследних.Фамилия,
	|	ФИОФизЛицСрезПоследних.Имя,
	|	ФИОФизЛицСрезПоследних.Отчество
	|ИЗ
	|	РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
	|			&ДатаДокумента,
	|			СтруктурнаяЕдиница = &Организация
	|				И ОтветственноеЛицо = &ОтветственноеЛицо) КАК ОтветственныеЛицаОрганизацийСрезПоследних
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
	|		ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = ФИОФизЛицСрезПоследних.ФизЛицо";
	ЗапросК.УстановитьПараметр("ОтветственноеЛицо", Перечисления.ОтветственныеЛицаОрганизаций.РуководительКадровойСлужбы);
	ЗапросК.УстановитьПараметр("ДатаДокумента",	 Дата);
	ЗапросК.УстановитьПараметр("Организация",Организация);
	РезультатК = ЗапросК.Выполнить();
	
	ВыборкаДетальныеЗаписиК = РезультатК.Выбрать();
	ЗапросК.Выполнить();
	
	Пока ВыборкаДетальныеЗаписиК.Следующий() Цикл
		ОбластьМакетаПодвал.Параметры.ЗамПоКадрам =  ВыборкаДетальныеЗаписиК.Должность;
		ОбластьМакетаПодвал.Параметры.ФИОЗамПоКадрам = Лев(ВыборкаДетальныеЗаписиК.Имя,1)
		+". "+Лев(ВыборкаДетальныеЗаписиК.Отчество,1)+". "
		+ВыборкаДетальныеЗаписиК.Фамилия+"";	
	КонецЦикла;
Показать
12. Cooler 22 22.07.14 19:27 Сейчас в теме
13. Obvious 23.07.14 13:55 Сейчас в теме
(11) rhtr, Немного некропостинга, но можно немножко по 2гому. в запросе есть ПОДСТРОКА();
Вставте в запрос: ФИОФизЛицСрезПоследних.Фамилия + "" "" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Имя, 1, 1) + ""."" + ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + ""."" КАК ФИОЗамПоКадрам

В нужном порядке/разделителями
14. Gen-buk 13 16.10.15 10:49 Сейчас в теме
ПОДСТРОКА(ФИОФизЛицСрезПоследних.Отчество, 1, 1) + ""."" , Если отчество типа "Иванов" . а если "Саид-Ибн-Хуса-Аль-Аза-Иванович"
15. akita 16.10.15 11:02 Сейчас в теме
А если отчества вообще нет? сейчас такое допустимо...
16. Teut_Vlad 190 31.07.17 09:59 Сейчас в теме
// Функция формирует фамилию и инициалы либо по наименованию элемента спр-ка ФизическиеЛица
//  либо по переданным строкам.
//  Если передан Объект, то извлеченная из него строка считается совокупностью 
//  Фамилия + Имя + Отчество, разделенными пробелами.
//
// Параметры
//  Объект        - строка или ссылка или объект элемента спр-ка ФизическиеЛица.
//  Фамилия        - фамилия физ. лица.
//  Имя            - имя физ. лица.
//  Отчество    - отчество физ. лица.
//
// Возвращаемое значение 
//  Фамилия и Инициалы одной строкой. Побочные эффекты - переданная целая строка 
//  Побочные эффекты - переданная целая строка разбивается на подстроки, соответствующие
//  отдельным Фамилии,Имени и Отчеству
//
Функция ФамилияИнициалыФизЛица(Объект = "", Фамилия = " ", Имя = " ", Отчество = " ") Экспорт

ТипОбъекта = ТипЗнч(Объект);
Если ТипОбъекта = Тип("Строка") Тогда
ФИО = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект)," ");
ИначеЕсли ТипОбъекта = Тип("СправочникСсылка.ФизическиеЛица") или ТипОбъекта = Тип("СправочникОбъект.ФизическиеЛица") Тогда 
ФИО = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(СокрЛП(Объект.Наименование)," ");
Иначе

// используем возможно переданные отдельные строки
Возврат ?(НЕ ПустаяСтрока(Фамилия), 
Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." + ?(НЕ ПустаяСтрока(Отчество),Лев(Отчество,1)+".", ""), ""),
"")
КонецЕсли;

КоличествоПодстрок = ФИО.Количество();
Фамилия = ?(КоличествоПодстрок > 0,ФИО[0],"");
Имя        = ?(КоличествоПодстрок > 1,ФИО[1],"");
Отчество= ?(КоличествоПодстрок > 2,ФИО[2],"");

Возврат ?(НЕ ПустаяСтрока(Фамилия), 
Фамилия + ?(НЕ ПустаяСтрока(Имя)," " + Лев(Имя,1) + "." + ?(НЕ ПустаяСтрока(Отчество),Лев(Отчество,1)+".", ""), ""),
"");

КонецФункции

Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",",
    Знач ПропускатьПустыеСтроки = Неопределено) Экспорт
 
    Результат = Новый Массив;
 
    // для обеспечения обратной совместимости
    Если ПропускатьПустыеСтроки = Неопределено Тогда
        ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
        Если ПустаяСтрока(Строка) Тогда 
            Если Разделитель = " " Тогда
                Результат.Добавить("");
            КонецЕсли;
            Возврат Результат;
        КонецЕсли;
    КонецЕсли;
    //
 
    Позиция = Найти(Строка, Разделитель);
    Пока Позиция > 0 Цикл
        Подстрока = Лев(Строка, Позиция - 1);
        Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
            Результат.Добавить(Подстрока);
        КонецЕсли;
        Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
        Позиция = Найти(Строка, Разделитель);
    КонецЦикла;
 
    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Строка) Тогда
        Результат.Добавить(Строка);
    КонецЕсли;
 
    Возврат Результат;
 
КонецФункции
Показать
user1619761; Henistaromin; Xershi; Светлый ум; +4 Ответить
17. igee12 20.06.18 14:15 Сейчас в теме
В УТ (11.3.4.197) так:
ФИОФизическогоЛица = ФизическиеЛицаКлиентСервер.ЧастиИмени(СокрЛП(ФИОДиректораСтрока)); // разбиваем на части	
ФамилияИнициалы = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ФИОФизическогоЛица);

Есть ФизическиеЛицаКлиентСервер.ФамилияИнициалыФизЛица(), но написано устарело.
Artelsoft01; pavlov_a; Nikitos_NSK; user1619761; user1549775; user1559729; HuKuTa88; Lllypuk; Aspire1C; julia96_07; Rustam10; Xershi; RomanVG7; batusai_00; Gadzhalik; Vyacheslav_Kochnev; +16 Ответить
18. olololeg 13.02.19 12:10 Сейчас в теме
(17)В УНФ ФизическиеЛицаКлиентСервер.ФамилияИнициалыФизЛица(Наименование) отрабатывает, по идее в УТ должно на ура отрабатывать.
19. user1194547 24.05.19 12:34 Сейчас в теме
(18) Спасибо, в УТ есть, только записывается по другому - ФизическиеЛицаКлиентСервер.ФамилияИнициалы(Значение).
oyeah; user1619761; VerunchikNe; user1116924; +4 Ответить
20. HuKuTa88 08.11.21 19:33 Сейчас в теме
(17)
ФИОФизическогоЛица = ФизическиеЛицаКлиентСервер.ЧастиИмени(СокрЛП(ФИОДиректораСтрока)); // разбиваем на части
ФамилияИнициалы = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ФИОФизическогоЛица);


спасибо
21. One_Assembler 31.05.22 10:40 Сейчас в теме
1С:Комплексная автоматизация 2 (2.5.7.394)

// Формирует строку, содержащую фамилию и инициалы физического лица.
// Строка формируется в зависимости от типа переданного параметра:
//	- либо по истории ФИО элемента справочника ФизическиеЛица,
// 	- либо разбором строки, содержащей полную ФИО.
//
// Параметры:
//  ФизическоеЛицо - Строка, СправочникСсылка.ФизическиеЛица - источник информации о ФИО
//  Дата - Дата - дата для получения истории ФИО, имеет смысл если в первом параметре передана ссылка.
//
// Возвращаемое значение:
//  Строка - Фамилия И. О. 
//
Функция ФамилияИнициалыФизЛица(ФизическоеЛицо, Дата = Неопределено) Экспорт
	ФамилияИнициалы = "";
	ФизическиеЛицаЛокализация.ДополнитьФамилияИнициалыФизЛица(ФизическоеЛицо, ФамилияИнициалы, Дата);
	Возврат ФамилияИнициалы;
КонецФункции
Показать
22. user645801_yyyuuu123q 07.11.22 12:34 Сейчас в теме
			
ФИОСокращенная = СтрШаблон("%1 %2.%3.",ТекПользователь.ФизическоеЛицо.Фамилия,Лев(ТекПользователь.ФизическоеЛицо.Имя,1),Лев(ТекПользователь.ФизическоеЛицо.Отчество,1));
Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Реквизиты.Организация, ВыборкаСФ.Дата, Реквизиты.Подразделение);
23. AlexeyRaevsky 10 05.07.23 15:57 Сейчас в теме
Я так делаю:
ГлавБух = СтрРазделить(ГлавбухФио," ");
ФИОГлавБух = ГлавБух[0]+" "+Лев(ГлавБух[1],1)+"."+Лев(ГлавБух[2],1)+".";
user1619761; +1 Ответить
24. user1619761 05.07.23 16:51 Сейчас в теме
(23) я немного по другому делаю
ФиоИнициалы = СтрРазделить(Фио, " ")[0] + " " + СтрЗаменить(СтрРазделить(Фио, " ")[1], Сред(СтрРазделить(Фио, " ")[1], 2, СтрДлина(СтрРазделить(Фио, " ")[1])-1), ". ") + СтрЗаменить(СтрРазделить(Фио, " ")[2], Сред(СтрРазделить(Фио, " ")[2], 2, СтрДлина(СтрРазделить(Фио, " ")[2])-1), ". ")
25. пользователь 05.07.23 17:11
Сообщение было скрыто модератором.
...
26. user1880116 05.07.23 20:15 Сейчас в теме
(23)
Я так делаю
Это у вас нормальных главбухов не было.
Прикрепленные файлы:
27. user1863362 05.07.23 21:56 Сейчас в теме
(24)
по другому делаю
А зачем ты СтрРазделить(Фио, " ") делаешь 7 раз подряд, болезный? Боишся, что в середине что-нибудь поменяется?
28. user1619761 06.07.23 08:09 Сейчас в теме
(27) мне лень было добавлять в начале МассивФио = СтрРазделить(Фио, " ") ;)
30. Andy_NTG 5 02.11.23 13:25 Сейчас в теме
ФизическиеЛицаЗарплатаКадрыКлиентСервер.ИнициалыПоИмениОтчеству(Имя, Отчество)
Waleinfo; +1 Ответить
32. alexfps79 12.09.24 16:44 Сейчас в теме
(30) Добрый день!
Скажите, пожалуйста, а есть принципиальные отличия с процедурой:

ДанныеФизическогоЛица.Представление = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(ДанныеФизическогоЛица.ФИО);
31. Waleinfo 15.05.24 11:53 Сейчас в теме
Общий модуль: "ФизическиеЛицаКлиентСервер.ФамилияИнициалы(СсылкаНаДокумент.Руководитель)"
Nickon; kabantus; +2 Ответить
Оставьте свое сообщение

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