Фамилия Окуджава

В документах предприятия часто употребляются фамилия, имя, отчество в родительном и дательном падежах. Например: выдать (кому?), назначить (кого?) и т.д. В типовой конфигурации не предусмотрена функция склонения ФИО.
Предлагаемая функция позволяет выполнить склонение фамилий имен и отчеств в соответствии с правилами русского языка. Напомню, что мужские фамилии в русском языке склоняются всегда, кроме тех случаев, когда их вообще невозможно просклонять (фамилии типа Тёмных, Джугашвили, Беранже, Приходько и т.д.). В прочих случаях «экзотическая» мужская фамилия склоняется, а женская — нет. Например: господина Ганжу, но госпожу Ганжа; господина Веббера, но госпожу Веббер и т.д.
Функция имеет три входных параметра: фамилия_имя_отчество полностью (или фамилия + инициалы), пол (М или Ж) и падеж (Р-родительный или Д-дательный).

Выход функции: склонение в заданном падеже.
P.S. Функция была проверена на около 100 различных сочетаний (правильно склоняет даже такую «экзотику» как Кац Мойша Абрамович), но возможно на каких-то сочетаниях имеются «блохи». В таком случае надо добавить соответствующее условие.
P.S.S. В тексте специально не употреблялись сложные конструкции «Если — Иначе» для удобства добавления новых условий.
Функция Склонять(ФИО, Пол, Падеж) экспорт ///Упорядочивание алфавита Перем L; L=»Б»; L=»В»; L=»Г»; L=»Д»; L=»Ж»; L=»З»; L=»К»; L=»Л»; L=»М»; L=»Н»; L=»П»; L=»Р»; L=»С»; L=»Т»; L=»Ф»; L=»Х»; L=»Ц»; L=»Ч»; L=»Ш»; L=»Щ»; //Гласные L=»А»; L=»Е»; L=»И»; L=»Й»; L=»О»; L=»У»; L=»Ы»; L=»Э»; L=»Ю»; L=»Я»; L=»Ь»; L=»Ъ»; /////////Выделение Фамилия, Имя, Отчество Пол=СокрЛП(Строка(Пол)); Пол=Врег(Пол); Если (Пол<>»М») И (Пол<>»Ж») Тогда Предупреждение («Неверно задан пол: М или Ж»); Возврат » «; КонецЕсли; Падеж=СокрЛП(Строка(Падеж)); Падеж=Врег(Падеж); Если (Падеж<>»Р») И (Падеж<>»Д») Тогда Предупреждение («Неверно задан падеж: Р или Д»); Возврат » «; КонецЕсли; ПолноеИмя=Строка(ФИО); ПолноеИмя=СокрЛП(ПолноеИмя); ПозицияПервогоПробела = Найти(ПолноеИмя, » «); Фамилия = Лев(ПолноеИмя, ПозицияПервогоПробела); Фамилия=СокрЛП(Фамилия); ИмяОтчество = Сред(ПолноеИмя, ПозицияПервогоПробела+1); ИмяОтчество = СокрЛП(ИмяОтчество); ПозицияТочки=Найти(ИмяОтчество,».»); Если ПозицияТочки>0 Тогда//если введены инициалы Имя=Сред(ИмяОтчество,1,ПозицияТочки); Отчество=Сред(ИмяОтчество,ПозицияТочки+1); Отчество=СокрЛ(Отчество); Иначе; ПозицияВторогоПробела = Найти(ИмяОтчество, » «); Имя = Сред(ИмяОтчество,1, ПозицияВторогоПробела-1); Имя=СокрЛП(Имя); Отчество = Сред(ИмяОтчество, ПозицияВторогоПробела+1); Отчество = СокрЛП(Отчество); КонецЕсли; //////////Склонение фамилии Фам1=ВРЕГ(Фамилия); Последняя=Прав(Фам1,1); ДвеПоследних=Прав(Фам1,2); ТриПоследних=Прав(Фам1,3); Флаг=0; Для i=1 По 32 Цикл Если L=Последняя Тогда Прервать; КонецЕсли; КонецЦикла; Если i<=20 Тогда ТипБуквы=1//согласная ИНАЧЕ; ТипБуквы=2//гласная КонецЕсли; //////////////// Исключения //////////////////// Если СтрДлина(Фамилия)<=2 Тогда Родительный=Фамилия//фамилии типа Ге, Че Дательный=Фамилия; Перейти ~выход; КонецЕсли; Если (ДвеПоследних=»ИХ») ИЛИ (ДвеПоследних=»ЫХ») Тогда Родительный=Фамилия//сибирские фамилии Дательный=Фамилия; Перейти ~выход; КонецЕсли; Если Последняя=»О» Тогда Родительный=Фамилия//украинские фамилии Дательный=Фамилия; Перейти ~выход; КонецЕсли; Если ДвеПоследних=»УА» Тогда Родительный=Фамилия//фамилии типа Стуруа Дательный=Фамилия; Перейти ~выход; КонецЕсли; Если ДвеПоследних=»ИА» Тогда Родительный=Фамилия//фамилии типа Туташхиа Дательный=Фамилия; Перейти ~выход; КонецЕсли; Если (ДвеПоследних=»ЖА») И (Пол=»Ж») Тогда Родительный=Фамилия// женские фамилии типа Ганжа Дательный=Фамилия; Перейти ~выход; КонецЕсли; Если ТриПоследних=»ДЗЕ» Тогда Родительный=Фамилия//грузинские фамилии типа Гогадзе Дательный=Фамилия; Перейти ~выход; КонецЕсли; Если ТриПоследних=»ИЛИ» Тогда Родительный=Фамилия//грузинские фамилии типа Габошвили Дательный=Фамилия; Перейти ~выход; КонецЕсли; Если (ДвеПоследних=»ОЙ») И (Пол=»М») И (СтрДлина(Фамилия)=3) Тогда Родительный=Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»я»//фам. типа Цой Дательный=Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»ю»; Перейти ~выход; КонецЕсли; Если (ДвеПоследних=»ОЙ») И (Пол=»Ж») И (СтрДлина(Фамилия)=3) Тогда Родительный=Фамилия;//фам. типа Цой Дательный=Фамилия; Перейти ~выход; КонецЕсли; /////////////////////////////////////////////////////////////////////// Если (Пол=»М») И (ТипБуквы=1) Тогда//мужскую склоняем Родительный=Фамилия+»а»; Дательный=Фамилия+»у»; Флаг=1; КонецЕсли; Если (Пол=»М») И (ДвеПоследних=»ДЬ») Тогда//специально для губернатора Родительный=Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»я»//Лебедя Дательный=Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»ю»; Флаг=1; КонецЕсли; Если (Пол=»Ж») И (ТипБуквы=1) Тогда//женскую не склоняем Родительный=Фамилия; Дательный=Фамилия; Флаг=1; КонецЕсли; Если (Пол=»Ж») И (Последняя=»А») Тогда Родительный=Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»у»; Дательный= Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»ой»; Флаг=1; КонецЕсли; Если (Пол=»М») И (Последняя=»А») Тогда//фам. типа Соткилава Родительный=Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»у»; Дательный= Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»е»; Флаг=1; КонецЕсли; Если (ДвеПоследних=»ОЙ») И (Пол=»М») И (СтрДлина(Фамилия)>3) Тогда Родительный=Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»го»; Дательный=Сред(Фамилия,1,СтрДлина(Фамилия)-1)+»му»; Флаг=1; КонецЕсли; Если (ДвеПоследних=»АЯ») И (Пол=»Ж») И (СтрДлина(Фамилия)>3) Тогда Родительный=Сред(Фамилия,1,СтрДлина(Фамилия)-2)+»ую»; Дательный=Сред(Фамилия,1,СтрДлина(Фамилия)-2)+»ой»; Флаг=1; КонецЕсли; Если Флаг=0 Тогда //если не сработало ни одно условие Родительный=Фамилия; Дательный=Фамилия; КонецЕсли; ~выход://////////////склонение имени//////// Если ПозицияТочки>0 Тогда РодительныйИмя=Имя; ДательныйИмя=Имя; РодительныйОтчество=Отчество; ДательныйОтчество=Отчество; Перейти ~выход1; КонецЕсли; Имя1=ВРЕГ(Имя); Последняя=Прав(Имя1,1); ДвеПоследних=Прав(Имя1,2); ТриПоследних=Прав(Имя1,3); Флаг=0; Для i=1 По 32 Цикл Если L=Последняя Тогда Прервать; КонецЕсли; КонецЦикла; Если i<=20 Тогда ТипБуквы=1//согласная ИНАЧЕ; ТипБуквы=2//гласная КонецЕсли; Если (Пол=»М») И (ТипБуквы=1) Тогда///Иван, Петр и т.д. РодительныйИмя=Имя+»а»; ДательныйИмя =Имя+»у»; Флаг=1; КонецЕсли; Если (Пол=»М») И (Последняя=»Й») Тогда///Сергей, Дмитрий и т.д. РодительныйИмя=Сред(Имя,1,СтрДлина(Имя)-1)+»я»; ДательныйИмя =Сред(Имя,1,СтрДлина(Имя)-1)+»ю»; Флаг=1; КонецЕсли; Если (Пол=»М») И (Последняя=»А») Тогда///Фома РодительныйИмя=Сред(Имя,1,СтрДлина(Имя)-1)+»у»; ДательныйИмя =Сред(Имя,1,СтрДлина(Имя)-1)+»е»; Флаг=1; КонецЕсли; Если (Пол=»М») И (Последняя=»Я») Тогда///Илья РодительныйИмя=Сред(Имя,1,СтрДлина(Имя)-1)+»ю»; ДательныйИмя =Сред(Имя,1,СтрДлина(Имя)-1)+»е»; Флаг=1; КонецЕсли; Если (Пол=»М») И (Последняя=»Ь») Тогда///Игорь РодительныйИмя=Сред(Имя,1,СтрДлина(Имя)-1)+»я»; ДательныйИмя =Сред(Имя,1,СтрДлина(Имя)-1)+»ю»; Флаг=1; КонецЕсли; Если (Пол=»Ж») И (Последняя=»А») Тогда///Татьяна, Людмила и т.д. РодительныйИмя=Сред(Имя,1,СтрДлина(Имя)-1)+»у»; ДательныйИмя =Сред(Имя,1,СтрДлина(Имя)-1)+»е»; КонецЕсли; Если (Пол=»Ж») И (Последняя=»Я») Тогда///Зоя, Наталья и т.д. РодительныйИмя=Сред(Имя,1,СтрДлина(Имя)-1)+»ю»; ДательныйИмя =Сред(Имя,1,СтрДлина(Имя)-1)+»е»; Флаг=1; КонецЕсли; Если (Пол=»Ж») И (ДвеПоследних=»ИЯ») Тогда///Наталия,Виктория и т.д. РодительныйИмя=Сред(Имя,1,СтрДлина(Имя)-1)+»ю»; ДательныйИмя =Сред(Имя,1,СтрДлина(Имя)-1)+»и»; Флаг=1; КонецЕсли; Если Флаг=0 Тогда РодительныйИмя=Имя; ДательныйИмя =Имя; КонецЕсли; /////////склонение отчества/////// Если (Пол=»М») Тогда РодительныйОтчество=Отчество+»а»; ДательныйОтчество =Отчество+»у»; КонецЕсли; Если (Пол=»Ж») Тогда РодительныйОтчество=Сред(Отчество,1,СтрДлина(Отчество)-1)+»у»; ДательныйОтчество =Сред(Отчество,1,СтрДлина(Отчество)-1)+»е»; КонецЕсли; ~выход1:///////////////////// Если Падеж=»Д» Тогда ФИОВозврат=Дательный+» «+ДательныйИмя+» «+ДательныйОтчество; Иначе; ФИОВозврат=Родительный+» «+РодительныйИмя+» «+РодительныйОтчество; КонецЕсли; Возврат ФИОВозврат; КонецФункции

История

Первые упоминания о грузинских фамилиях относятся к VII—VIII векам. Начиная с XIII века фамилии чаще стали основываться на названиях местностей. Эта традиция распространилась практически повсеместно в XVII—XVIII веках.

Фамилии из восточных горных провинций часто в Грузии могут оканчиваться суффиксом –ури, или –ули, если в корне присутствует буква р. Это окончание встречается в основном у восточных горцев, таких как хевсуры, пшавы, туши, мтиулы, хевинцы и так далее.

У сванов фамилии как правило оканчиваются на –ани, но сейчас это окончание встречается также и в других регионах западной Грузии. В основном в Лечхуми, реже в Раче и Имерети. В восточной Грузии встречается -ани — 129204 человека.

У мегрелов — на –иа, –уа, –ава, –ая.

У лазов — на –ши. Всего около 7 тыс. человек. В основном встречается в Аджарии и Гурии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *