Склонение ФИО
Модераторы: m0p3e, edward_K, Модераторы
Склонение ФИО
Всем здравствуйте!
Возникла проблемка в модуле кадры.
В картотеке сотрудников можно указать склонение ФИО. Причем система сама делает первоначальное склонение по падежам, но можно задать и исключение. Исключения хранятся в таблице aboutfio, это мы нашли.
Непонятно, где хранятся сгенерированные системой склонения (которые мы не изменяли).
В отчете нам надо вытащить родительный падеж ФИО.
Кто нибудь подскажет, как можно это сделать?
Возникла проблемка в модуле кадры.
В картотеке сотрудников можно указать склонение ФИО. Причем система сама делает первоначальное склонение по падежам, но можно задать и исключение. Исключения хранятся в таблице aboutfio, это мы нашли.
Непонятно, где хранятся сгенерированные системой склонения (которые мы не изменяли).
В отчете нам надо вытащить родительный падеж ФИО.
Кто нибудь подскажет, как можно это сделать?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
odecl.vih
==========
#ifdef ComponentVersion
#component "z_Staff"
#end
objinterface odeclension;
//Склонение фамилии или ее части
//NCase- падеж /2- 6/
//NPart- часть фамилии 1- первая или фамилия целиком; 2- вторая часть
//gender- 0- род определен программой 1- женский 2- мужской
function SurNameDeclension(LName: string; gender: word; NCase: word; NPart: byte): string;
//Склонение имени
function NameDeclension(FName: string; gender: word; NCase: word): string;
//Склонение отчества
function PatronDeclension(PName: string; gender: word; NCase: word): string;
//Склонение ФИО целиком
function FIODeclension(cpersons: comp; Infinitive: string; NCase: word): string;
//Добавление записи в словарь исключений
//0 -удачное добавление
//1- есть дубликат
//2- произошли ошибки на этапе вставки
function AddSimpleException(Target: string; ExceptType: byte): word;
//Окно ввода параметров исключения
procedure RunSimpleExceptionWindow;
//Поиск исключения по персоне
function fndpersonsException(cpersons: comp; nCase: word): string;
//Добавление записи в словарь персональных исключений
//0 -удачное добавление
//1- есть дубликат
//2- произошли ошибки на этапе вставки
function AddPersonalException(cpersons: comp; Target: string; nCase: word): word;
//Удаление записи из словаря персональных исключений
//0 -удачное удаление
//1- нет такой записи
//2- произошли ошибки на этапе удаления
function DeletePersonalException(cpersons: comp; nCase: word): word;
//Корректировка записи в словаре персональных исключений
//0 -удачная корректировка
//1- нет такой записи
//2- произошли ошибки на этапе корректировки
function UpdatePersonalException(cpersons: comp; Target: string; nCase: word): word;
end;
objinterface odeclension1;
function VerifyGender(target: string): word;
end;
vipinterface declension implements odeclension, odeclension1
#ifdef ATL51
Licensed (free)
#end
==========
#ifdef ComponentVersion
#component "z_Staff"
#end
objinterface odeclension;
//Склонение фамилии или ее части
//NCase- падеж /2- 6/
//NPart- часть фамилии 1- первая или фамилия целиком; 2- вторая часть
//gender- 0- род определен программой 1- женский 2- мужской
function SurNameDeclension(LName: string; gender: word; NCase: word; NPart: byte): string;
//Склонение имени
function NameDeclension(FName: string; gender: word; NCase: word): string;
//Склонение отчества
function PatronDeclension(PName: string; gender: word; NCase: word): string;
//Склонение ФИО целиком
function FIODeclension(cpersons: comp; Infinitive: string; NCase: word): string;
//Добавление записи в словарь исключений
//0 -удачное добавление
//1- есть дубликат
//2- произошли ошибки на этапе вставки
function AddSimpleException(Target: string; ExceptType: byte): word;
//Окно ввода параметров исключения
procedure RunSimpleExceptionWindow;
//Поиск исключения по персоне
function fndpersonsException(cpersons: comp; nCase: word): string;
//Добавление записи в словарь персональных исключений
//0 -удачное добавление
//1- есть дубликат
//2- произошли ошибки на этапе вставки
function AddPersonalException(cpersons: comp; Target: string; nCase: word): word;
//Удаление записи из словаря персональных исключений
//0 -удачное удаление
//1- нет такой записи
//2- произошли ошибки на этапе удаления
function DeletePersonalException(cpersons: comp; nCase: word): word;
//Корректировка записи в словаре персональных исключений
//0 -удачная корректировка
//1- нет такой записи
//2- произошли ошибки на этапе корректировки
function UpdatePersonalException(cpersons: comp; Target: string; nCase: word): word;
end;
objinterface odeclension1;
function VerifyGender(target: string): word;
end;
vipinterface declension implements odeclension, odeclension1
#ifdef ATL51
Licensed (free)
#end
Здравствуйте, подскажите, что я не так делаю?
1) в файле проекта прописываю
2) в фрмке
3) компилирую (все отлично)
4) при запуске отчета ошибка "Возникло необработанное исключение
ExObjIfcBadVar(ExVip) поле не является ссылкой требуемого класса"
P.S. Галактика 7.12, файл Olecl.vih создал сам, скопировав со второго поста (см. выше).
1) в файле проекта прописываю
Код: Выделить всё
#include odecl.vih
#make "bankCardsxls.frm"
Код: Выделить всё
.var
coFio:comp;
iOdecl1:odeclension;
sfio,sfio1:string;
.endvar
....
.begin
sFio1:=iOdecl1.FIODeclension(coFio,sfio,3);
end.
4) при запуске отчета ошибка "Возникло необработанное исключение
ExObjIfcBadVar(ExVip) поле не является ссылкой требуемого класса"
P.S. Галактика 7.12, файл Olecl.vih создал сам, скопировав со второго поста (см. выше).