GD FUNCTION

Материал из GedeminWiki
Перейти к: навигация, поиск
CREATE TABLE gd_function
(
  id               dintkey,                     /* Первичный ключ */
  module           dtext40,                     /* Модуль */
  LANGUAGE         dtext10,                     /* Язык программирования */
  name             dlongname,                   /* Наименование функции */
  comment          dtext180,                    /* Комментарий к функции */
  script           dscript,                     /* Текст функции */
  displayscript    dscript,                     /* Видимый текст функции *//*Данное поле можно удалить*/
 
  afull            dsecurity,                   /* Права доступа полные *//*Данное поле можно удалить*/
  achag            dsecurity,                   /* Права доступа на изменения *//*Данное поле можно удалить*/
  aview            dsecurity,                   /* права доступа на просмотр *//*Данное поле можно удалить*/
  modifydate       dtimestamp,                  /*Данное поле можно удалить*/
 
  testresult       dblob80,                     /* Поле для отчетов. Для хранения пустой структуры. */
  ownername        dtext40,                     /*Данное поле можно удалить*/
  functiontype     dfunctiontype,               /*Данное поле можно удалить*/
  event            dtext40,
 
  localname        dtext40,                     /* Название функции на русском языке *//*Данное поле можно удалить*/
  publicfunction   dboolean DEFAULT 1 NOT NULL, /* Внутрення или внешняя функция *//*Данное поле можно удалить*/
  shortcut         dtext10,                     /* Горячая клавиша *//*Данное поле можно удалить*/
  groupname        dtext20,                     /* Название группы *//*Данное поле можно удалить*/
 
  modulecode       dinteger NOT NULL,           /* код модуля */
  enteredparams    dblob80,
  reserved         dinteger,                    /* Зарезервировано */
  inheritedrule    dinheritedrule,              /* Поле для событий указывает на момент
                                                   перекрытия. Оно может принимать три значения:
                                                    0 - перекрывать полностью;
                                                    1 - вызывать родительский обработчик до скрипт-функции;
                                                    2 - вызывать обработчик после выполнения скрипт-функции.*/
  breakpoints      dblob80,                     /* Поле хранит информацию о точках прерывания*/
  usedebuginfo     dboolean,                    /* Указывает на необходимость использования отладчика при запуске функции*/
                                                /*Данное поле можно удалить*/
  editorstate      dblob80,                     /* Хранится положение курсора редактора, закладки и т.п.*/
  editiondate      deditiondate,                /* Дата последнего редактирования */
  editorkey        dintkey                      /* Ссылка на пользователя, который редактировал запись*/
);
 
ALTER TABLE gd_function ADD CONSTRAINT gd_pk_function
  PRIMARY KEY (id);
 
/* пакуль што мы падтрымлiваем 1 мову */
ALTER TABLE gd_function ADD CONSTRAINT gd_chk_function_language
  CHECK (LANGUAGE IN ('JScript', 'VBScript'));
 
/* назва функцыi павiнна быць унiкальнай */
/* у межах аднаго модулю                 */
CREATE UNIQUE INDEX gd_x_function_name ON gd_function
  (name, modulecode);
 
CREATE INDEX gd_x_function_module ON gd_function
  (module);
 
ALTER TABLE gd_function ADD CONSTRAINT gd_fk_function_editorkey
  FOREIGN KEY(editorkey) REFERENCES gd_people(contactkey)
  ON UPDATE CASCADE;
 
COMMIT;
 
CREATE GENERATOR gd_g_functionch;
SET GENERATOR gd_g_functionch TO 1;
 
COMMIT;
 
SET TERM ^ ;
 
CREATE TRIGGER gd_function_ad_ch FOR gd_function
AFTER DELETE POSITION 32000
AS
  DECLARE VARIABLE I INTEGER;
BEGIN
  I = GEN_ID(gd_g_functionch, 1);
END
^
 
CREATE TRIGGER gd_bi_function FOR gd_function
  BEFORE INSERT
  POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(gd_g_unique, 1) + GEN_ID(gd_g_offset, 0);
 
/*  NEW.modifydate = 'NOW';*/
 
  IF (NEW.modulecode IS NULL) THEN
    NEW.modulecode = 1010001;/*ид апликатион*/
  IF (NEW.publicfunction IS NULL) THEN
    NEW.publicfunction = 0;
END
^
 
CREATE TRIGGER gd_bu_function FOR gd_function
  BEFORE UPDATE
  POSITION 0
AS
BEGIN
  IF (NEW.modulecode IS NULL) THEN BEGIN
    IF (OLD.modulecode IS NULL) THEN
      NEW.modulecode = 1010001;
    ELSE
      NEW.modulecode = OLD.modulecode;            
  END
  IF (NEW.publicfunction IS NULL) THEN BEGIN
    IF (OLD.publicfunction IS NULL) THEN          
      NEW.publicfunction = 0;                     
    ELSE                                          
      NEW.publicfunction = OLD.publicfunction;    
  END
END
^  
 
CREATE TRIGGER gd_bi_function5 FOR gd_function
  BEFORE INSERT POSITION 5
AS
BEGIN
  IF (NEW.editorkey IS NULL) THEN
    NEW.editorkey = 650002;
 IF (NEW.editiondate IS NULL) THEN
    NEW.editiondate = CURRENT_TIMESTAMP;
END
^
 
CREATE TRIGGER gd_bu_function5 FOR gd_function
  BEFORE UPDATE POSITION 5
AS
BEGIN
  IF (NEW.editorkey IS NULL) THEN
    NEW.editorkey = 650002;
  IF (NEW.editiondate IS NULL) THEN
    NEW.editiondate = CURRENT_TIMESTAMP;
END
^
 
SET TERM ; ^
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты