21.07.2015, 13:38 | #1 |
Участник
|
Преобразование ФИО в краткое
Подскажите функцию, чтобы Фио из полного превратилось в ФИО с инициалами?
Всем спасибо! |
|
21.07.2015, 14:07 | #2 |
Участник
|
Быстрее будет самому написать, чем пытаться найти )
|
|
21.07.2015, 14:08 | #3 |
Участник
|
X++: public server display EmplName getFIO_RU() { EmplName strRet; ; strRet = this.dirPartyTable().LastName; if (this.dirPartyTable().FirstName) { strRet += ' ' + substr(this.dirPartyTable().FirstName, 1, 1) + '.'; } if (this.dirPartyTable().MiddleName) { strRet += ' ' + substr(this.dirPartyTable().MiddleName, 1, 1) + '.'; } return strRet; } |
|
|
За это сообщение автора поблагодарили: Start (1). |
21.07.2015, 14:12 | #4 |
Гость
|
|
|
|
За это сообщение автора поблагодарили: Владимир Максимов (2), Start (1). |
21.07.2015, 14:13 | #5 |
Участник
|
Стандартной функции нет, поскольку в Axapta фамилия, имя и отчество - это 3 разных поля. Соответственно, либо из этих 3 полей "складывается" полное ФИО, либо ФИО с инициалами
Для Ax2009 Tables \ EmplTable.emplFullName_RU() - полное Tables \ EmplTable.getFIO_RU() - с инициалами Для Ax2012 Tables \ HcmWorker.getFIO_RU() - с инициалами Tables \ RHRMPersonTable.fio(boolean shorten = true) - в зависимости от параметра - полное или с инициалами Если же Вам надо именно из строки, содержащей несколько слов "вырезать" инициалы, то это придется писать самому, поскольку никто крое Вас не знает, где именно там фамилия, имя и отчество. И что делать в случае разных исключений... Возможно, Вам подойдет функция global::str2con(), чтобы быстро выделить "слова", если в качестве разделителя указать пробел. ----------------- Не знал, про метод, указанный axm2013, который как раз и делает подобный разбор... \Data Dictionary\Tables\OfficialsTable_RU\Methods\getFIO
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 21.07.2015 в 14:27. |
|
|
За это сообщение автора поблагодарили: Start (1). |
29.04.2016, 21:42 | #6 |
Участник
|
Сегодня подкинули задачку небольшую, надо как раз из строки выдернуть инициалы
накидал джобик X++: str s = 'фАМИЛИЯ имя отчество '; str fio; container c; int i; ; s = strRTrim(strLTrim(s)); //удалим пробелы в начале и в конце строки, если есть s = str2CapitalWord(s); //первая буква слова Заглавная, остальные прописные c = str2con(s, ' '); //в контейнере разобьем по словам for(i = 1; i <= conlen(c); i++) { if(fio) { fio += substr(conpeek(c, i), 1, 1) + '.'; } else { fio += conlen(c) > 1 ? conpeek(c, i) + ' ' : conpeek(c, i); } } info(strfmt("%1", s)); info(strfmt("%1", fio)); |
|
|
За это сообщение автора поблагодарили: AlGol (1). |