// first we delete catalog (proxy) object
@co_call(par_area, '"generic_acl"', "delete", par_area=>par_area, par_class=>par_class, par_id=>par_id, version=>version);

// next we delete object pointed by catalog object
@co_lcall(par_area, par_class, "getItemData", par_area=>par_area, par_class=>par_class, par_id=>par_id, callback=>'""');
__GET_RETURNED_RECORDSET(corec)
target_class = cor_GetValueByName(cnx, corec, 0, "type_class_name");

// we do not delete again if object points to itself
if(strcmp(target_class, par_class) != 0)
{
target_id = atoi(cor_GetValueByName(cnx, corec, 0, "id_item"));
@co_call(par_area, target_class, "delete", par_area=>par_area, par_class=>target_class, par_id=>target_id, version=>-1);
}