Консультация № 110074
18.11.2007, 23:35
0.00 руб.
0 1 1
Здравствуйте уважаемые эксперты! 1С 7.7 ЗиК. В справочнике Сотрудники Наименование - ФИО. А мне для печатной формы необходимо разделить на Фамилия, Имя, Отчество. Подскажите пожалуйста...

Приложение:
Функция глФамилияИмяОтчество(Объект,Фамилия="",Имя="",Отчество="") Экспорт Если ТипЗначения(Объект)=2 Тогда ФИО = глРазделить(СокрЛП(Объект),","); Иначе ФИО = глРазделить(СокрЛП(Объект.Наименование),","); КонецЕсли; ФИО = глРазложить(ФИО," "); Фамилия = ""; Имя = ""; Отчество = ""; Если ФИО.РазмерСписка() > 0 Тогда Фамилия = ФИО.ПолучитьЗначение(1); Если ФИО.РазмерСписка() > 1 Тогда Имя = ФИО.ПолучитьЗначение(2); Если ФИО.РазмерСписка() > 2 Тогда // а вот отчество бывает и не из одного слова Для Сч = 3 По ФИО.РазмерСписка() Цикл Отчество = Отчество + ФИО.ПолучитьЗначение(Сч) + " "; КонецЦикла; Если ПустоеЗНачение(Отчество) = 0 Тогда Отчество = Лев(Отчество,СтрДлина(Отчество)-1); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Возврат Фамилия+?(ПустоеЗначение(Имя)=0," "+Лев(Имя,1)+"."+?(ПустоеЗначение(Отчество)=0,Лев(Отчество,1)+".",""),"")КонецФункции // глФамилияИмяОтчество

Обсуждение

Неизвестный
22.11.2007, 17:59
общий
это ответ
Здравствуйте, Darina! Указанная вами в приложении функция работает, т.е. непонятно что вам подсказать? Если вы хотите другим способом получить те же результаты смотрите мое приложение.
Если Ваш вопрос в том где после отработки функции найти Фамилию, Имя и Отчество, объясняю : при вызове функции в отправляете в нее три пустых переменных Фамилия="",Имя="",Отчество="". По окончании работы функции именно в них и окажутся требуемые вам значения, например:
ВыходнаяТаблица = СоздатьОбъект("Таблица");
ВыходнаяТаблица.ИсходнаяТаблица("КарточкаСотрудника");
...
//где Сотрудник - элемент справочника который распечатываем
глФамилияИмяОтчество(Сотрудник,Фамилия,Имя,Отчество);
...
ВыходнаяТаблица.ВывестиСекцию("Шапка");
// в печатной форме вы укажете переменные Фамилия,Имя,Отчество в тех ячейках
//где вам нужно вывести значения, тип ячейки ставите "Выражение"



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