Имя: Пароль:
1C
 
Склонение ФИО
0 kugelfangg
 
04.11.09
11:39
Здавствуйте, подскажите пожалуйста каким образом  из ФИО-именительный можно сделать ФИО-родительный падеж.
1 Михей
 
04.11.09
11:40
есть приблуда на ИТС для склонения
2 kugelfangg
 
04.11.09
11:40
а как она называется?
3 kugelfangg
 
04.11.09
11:50
Подскажите пожалуйста как называется эта приблуда на "ИТС" или где ее еще можно взять.
4 ZyXEL
 
04.11.09
11:53
NameDecl.dll
5 skunk
 
04.11.09
11:55
7 kugelfangg
 
04.11.09
12:03
(6) почему?
8 skunk
 
04.11.09
12:05
(7)криво склоняет
9 zak555
 
04.11.09
12:06
склоните мне фамилию метро
10 kugelfangg
 
04.11.09
12:07
она не склоняется.
11 kugelfangg
 
04.11.09
12:16
(5)Этож для семерки.
100% есть готовый вариант на 8.1, подскажите пожалуйста, где его взять.
12 ZyXEL
 
04.11.09
12:24
(11) а что пару строк переписать уже никак?
13 фросия
 
04.11.09
12:24
(11) а из 7го сделать для 81 нельзя? вот ленивые!
14 skunk
 
04.11.09
12:30
//*******************************************
// strDeclineAdd(strName, intCase = 2, intSex = "*")
//
// Параметры:
//  strName  - Строка. Фамилия, Имя или Отчество.
//  intCase  - Число. В каком падеже склонять.
//               0 - ???
//               2 - родительный(нет кого?).
//               3 - дательный(кому?).
//               4 - винительный(вижу кого?).
//               5 - творительный(кем?).
//               6 - предложный(о ком?).
//             Параметр необязателен.
//             По умолчанию - 2.
//  intSex   - Число. Пол.
//               1 - мужской.
//               2 - женский.
//               3 - средний ;)).
//               4 - если склоняем профессию.
//             Параметр необязателен.
//             По умолчанию - 3.
//
// Возвращаемое значение:
//  Строка. Фамилию, Имя или Отчество
//          в нужном падеже.
//
// Описание:
//  Производит склонение по падежам
//  Фамилии, Имени или Отчества.
//
function strDeclineAdd(strName, intCase = 2, intSex = "*")
   strTemp1 = right(strName, 2);
   strTemp2 = ?(strTemp1 = "ия", 7, find(".чайяь", right(strTemp1, 1)));
   strTemp3 = strlen(strName) - 2;
   return ?(intCase = 1, strName,
          ?(strTemp2 > 2, left(strName, strTemp3 + 1),
          ?(strTemp1 = "ел", right(strName, strTemp3) + "л",
          ?(strTemp1 = "ев", left(strName, strTemp3) + "ьв", strName))) +
          ?(right(strName, 3) = "жан", "", trimr(mid("а у а оме           а у а еме " +
          ?(find("гжкхш", left(strTemp1, 1)) > 0, "и", "ы") + " е у ойе я ю я еме и е ю ейе и и ь ьюи и и ю ейи", 10 *
          ?((strTemp2 = 6) and (intSex = "ч"), 4, strTemp2) + 2 * intCase - 3, 2))));
endfunction

//*******************************************
// _strDecline(strName, intCase = 2, intSex = 3) export
//
// Параметры:
//  strName  - Строка. ФИО или профессия.
//  intCase  - Число. В каком падеже склонять.
//               0 - ???
//               2 - родительный(нет кого?).
//               3 - дательный(кому?).
//               4 - винительный(вижу кого?).
//               5 - творительный(кем?).
//               6 - предложный(о ком?).
//             Параметр необязателен.
//             По умолчанию - 2.
//  intSex   - Число. Пол.
//               1 - мужской.
//               2 - женский.
//               3 - средний ;)).
//               4 - если склоняем профессию.
//             Параметр необязателен.
//             По умолчанию - 3.
//
// Возвращаемое значение:
//  Строка. Переданое для склонения строка.
//          в нужном падеже.
//
// Описание:
//  Производит склонение по падежам
//  Фамилии и профессии людей.
//
function _strDecline(strName, intCase = 2, intSex = 3) export
   strName = trimall(strName);
   intSex = mid("ча" + right(strName, 1) + "ч", intSex, 1);
   strTemp1 = find(strName + " ", " ");
   if intCase < 0 then
       intCase = -intCase;
       strTemp2 = left(strName + " ", strTemp1 + 1) + ". ";
       strName = strreplace(strTemp2 + mid(strName, find(mid(strName + "  ", strTemp1 + 2), " ") +
                 strlen(strTemp2) - 1, 1) + ".", " .", "");
   endif;
   strTemp2 = left(strName, strTemp1 - 1);
   strTemp3 = right(strTemp2, 3);
   strTemp4 = right(strTemp3, 2);
   strTemp5 = right(strTemp4, 1);
   strTemp2 = ?(intSex = "а",
              ?((strTemp5 = "а") and (strTemp3 <> "ула") or (strTemp4 = "ая"), left(strTemp2, strTemp1 -
              ?(strTemp4 = "ая", 3, 2)) + mid(
              ?(strTemp4 = "ая", strTemp4, strTemp5 + " ") +
              ?(strTemp4 = "ка", "и е у ойе", "ойойу" +
              ?(strTemp4 = "ая", "ю", " ") + "ойой"), intCase * 2 - 1, 2), strTemp2),
              ?(find("ой ый ий", strTemp4) > 0,
              ?(find("Цц", mid(strTemp2, strTemp1 - 3, 1)) > 0, strDeclineAdd(strTemp2, intCase),
              left(strTemp2, strTemp1 - 3) + mid("   огоомуого" +
              ?((strTemp4 = "ий") or (strTemp3 = "гой") or (strTemp3 = "хой"), "и", "ы") + "м ом", intCase * 3 - 2, 3)),
              ?(find("вт", strTemp5) + find("ак ах ик им ин ич рг ын юк яр яш", strTemp4) > 0, strTemp2 +
              mid("  а у а " + mid("оыыые", find(" внтч", strTemp5) + 1, 1) + "ме", intCase * 2 - 1, 2), strTemp2)));
   strTemp5 = strTemp1 + find(mid(strName + " ", strTemp1 + 1), " ");
   return ?((intSex = "ч") and (strTemp1 = strlen(strName) + 1), strDeclineAdd(strName, intCase), trimall(strTemp2)) + " " +
          strDeclineAdd(mid(strName, strTemp1 + 1, strTemp5 - strTemp1 - 1), intCase, intSex) + " " +
          strDeclineAdd(mid(strName, strTemp5 + 1, strlen(strName) - strTemp5), intCase, intSex);
endfunction
15 kugelfangg
 
04.11.09
13:15
(14)Большое спасибо но к сожалению эта функция склоняет фамилии заканчивающиеся на "О" такие как "Головко" а по иди не должна.
16 skunk
 
04.11.09
13:23
как склоняет... проверил

Головко Константина Александровича
Головко Константину Александровичу
Головко Константина Александровича
Головко Константином Александровичем
Головко Константине Александровиче
17 Armando
 
04.11.09
13:31
(14) Как эта функция просклоняет фамилию Капица?
18 skunk
 
04.11.09
13:36
(17)а самому проверить религия мешает?

Капица Константина Александровича
Капица Константину Александровичу
Капица Константина Александровича
Капица Константином Александровичем
Капица Константине Александровиче
19 Armando
 
04.11.09
13:42
(18) Лень-матушка мешает))
Спасибо!