Не получается решить проблему при разработке Alter F_OS::KATOSS. В картотеку ОС добавила столбец с ВА ссылочного типа на пользовательскую аналитику. Сделала обработку выбора значения ВА. Но никак не получается обработать удаление значения ВА: в обработчик cmDelOnProtect не попадаю. Как решить проблему?
Код: Выделить всё
#include GetKau.vih
#include ExtAttrClassInfo.vih
#Component "F_OS"
//Картотека ОС - список.
//Browse PDOCUMENT:
//- Добавление нового столбца 'Проект' со значением ВА 'Проект' ссылочного типа на пользовательскую
//аналитику 'Проекты', код табл.10096, индекс=6, с редактированием.
Alter interface KATOSS;
Var cAttrP, NrecRet : Comp;
var1 : iExtAttrClassInfo;
wTabKau : Word;
Create view
as select
If( ( var1.ExtAttr_ValueExistsID( coKatOs, KatOs.Nrec, cAttrP ) = False ), '', var1.sGetAttrID( coKatOs, KatOs.Nrec, cAttrP ) )
( Fieldname=CheckP )
;
// Изменение свойств столбцов в списке карточек ОС.
Procedure ChangeObjIndex;
Var sObj_ : String;
{
cfsSetProp( 'c_PDOCUMENT_FKATPODRNAME_Подразделение', 'Index', Integer(7) );
cfsSetProp( 'c_PDOCUMENT_KATMOL.NAME_МОЛ', 'Index', Integer(8) );
cfsSetProp( 'c_PDOCUMENT_SPKATOS.DATEK_Дата_ввода', 'Index', Integer(9) );
cfsSetProp( 'c_PDOCUMENT_BRCOLUMNPERSTOIM_Сумма_резерва', 'Index', Integer(10) );
cfsSetProp( 'c_PDOCUMENT_BRCOLUMNSTOIM_Стоимость', 'Index', Integer(11) );
cfsSetProp( 'c_PDOCUMENT_BRCOLUMNSUMIZN_Амортизация', 'Index', Integer(12) );
cfsSetProp( 'c_PDOCUMENT_BRCOLUMNSIZNM_Амортизация_за_период', 'Index', Integer(13) );
cfsSetProp( 'c_PDOCUMENT_OSTSROKPOLISP_Срок_исп.', 'Index', Integer(14) );
cfsSetProp( 'c_PDOCUMENT_KATOS.REGNUM_Регистрац._номер', 'Index', Integer(15) );
cfsSetProp( 'c_PDOCUMENT_PROBTRCURR.MES[13]_Текущий_месяц', 'Index', Integer(16) );
cfsSetProp( 'c_PDOCUMENT_KATOS.DTRESERV1_Дата_ликвидации', 'Index', Integer(17) );
cfsSetProp( 'c_PDOCUMENT_Отчетный_период', 'Index', Integer(18) );
cfsSetProp( 'c_PDOCUMENT_VBR', 'Index', Integer(19) );
sObj_:= 'c_PDOCUMENT_CheckP_Проект';
cfsSetProp( sObj_, 'DefaultWidth', Integer(15) );
cfsSetProp( sObj_, 'Index', Integer(6) );
} // proc ChangeObjIndex
ExtendFormats PDOCUMENT;
Browse PDOCUMENT;
Table KATOS;
Fields
CheckP 'Проект' :[ 15 ], Protect, PickButton;
end;
TableEvent
Table KATOS;
cmPositionChanged:
{
Inherited::HandleEvent( cmPositionChanged );
} // cmPositionChanged
cmPick:
{
Case Inherited::HandleEvent( cmPick ) of
heAbort : { Abort; Exit; }
heStop : Stop;
end;
Case CurField of
#CheckP:
{
// одиночный выбор без редактирования, только листья. Пользовательская аналитика 'Проекты'.
If iGetKau.GetCodeKau( cgiPick or cgiNotEdit or cgiPickLeaf, wTabKau, NrecRet ) > 0
{
var1.coSetAttrID( coKatOs, KatOs.Nrec, cAttrP, NrecRet, ShowKau( wTabKau, NrecRet ) );
Set CheckP;
RescanPanel( #KatOs );
}
}
end; // case
} // cmPick
cmDelOnProtect:
{
Message( 'cmDelOnProtect таблицы' ); //не попадаю сюда
Case Inherited::HandleEvent( cmDelOnProtect ) of
heAbort : Abort;
heStop : Stop;
end;
Case CurField of
#CheckP:
{
var1.ExtAttr_DeleteValueID( coKatOs, KatOs.Nrec, cAttrP );
Set CheckP;
RescanPanel( #KatOs );
}
end; // case
} // cmDelOnProtect
end; // TableEvent
Window WIEDITKATOS EscClose;
HandleEvent // WIEDITKATOS
cmInit:
{
Case Inherited::HandleEvent( cmInit ) of
heAbort : Abort;
heStop : Exit;
end;
} // cmInit
end; // HandleEvent for WIEDITKATOS
end; // Window WIEDITKATOS
HandleEvent // for interface
cmInit :
{
Case Inherited::HandleEvent( cmInit ) of
heAbort : Abort;
heStop : Exit;
end;
cAttrP:= var1.ExtAttr_ID( coKatOs, 'Проект' ); // Nrec ВА к KatOs
wTabKau:= Word( 10096 ); // 'Проекты'
ChangeObjIndex;
} // cmInit
end; // HandleEvent for interface
end. // interface