1
rbcvg
16.01.12
✎
18:35
|
// Функция склоняет переданую фразу
// Параметры:
// Фраза (обязательный), тип строка
// Параметр должен содержать фразу. Каждое слово фразы будет просклонено отдельно
//
// Падеж (обязательный), тип число
// Падеж, в который необходимо поставить ФИО.
// 1 - Именительный
// 2 - Родительный
// 3 - Дательный
// 4 - Винительный
// 5 - Творительный
// 6 - Предложный
//
Функция Просклонять(Компонента, Знач Фраза = "", Падеж = 1, Пол = Неопределено, Результат) Экспорт
Если Компонента = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Результат = "";
МассивСтрок = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Фраза, " ");
// Выделим первые 3 слова, так как компонента не умеет склонять фразу большую 3х символов
НомерНесклоняемогоСимвола = 4;
Для Номер = 1 По Мин(МассивСтрок.Количество(), 3) Цикл
Если Не РегламентированнаяОтчетность.ФИОНаписаноВерно(МассивСтрок[Номер-1], Истина) Тогда
НомерНесклоняемогоСимвола = Номер;
Прервать;
КонецЕсли;
Результат = Результат + ?(Номер > 1, " ", "") + МассивСтрок[Номер-1];
КонецЦикла;
Если ПустаяСтрока(Результат) Тогда
Результат = Фраза;
Возврат Ложь;
КонецЕсли;
Попытка
Если Пол = Перечисления.ПолФизическихЛиц.Мужской Тогда
Результат = Компонента.Просклонять(Результат, Падеж, 1) + " ";
ИначеЕсли Пол = Перечисления.ПолФизическихЛиц.Женский Тогда
Результат = Компонента.Просклонять(Результат, Падеж, 2) + " ";
Иначе
Результат = Компонента.Просклонять(Результат, Падеж) + " ";
КонецЕсли;
Исключение
Результат = Фраза;
Возврат Ложь;
КонецПопытки;
// Остальные символы добавим без склонения
Для Номер = НомерНесклоняемогоСимвола По МассивСтрок.Количество() Цикл
Результат = Результат + " " + МассивСтрок[Номер-1];
КонецЦикла;
Результат = СокрЛП(Результат);
Возврат Истина;
КонецФункции // Просклонять()
|
|