Триггер блокировки периода (старая версия)
Материал из GedeminWiki
CREATE TRIGGER ac_bi_entry_block FOR ac_entry INACTIVE BEFORE INSERT POSITION 28017 AS DECLARE VARIABLE IG INTEGER; DECLARE VARIABLE BG INTEGER; DECLARE VARIABLE DT INTEGER; DECLARE VARIABLE F INTEGER; BEGIN IF ((NEW.entrydate - CAST('17.11.1858' AS DATE)) < GEN_ID(gd_g_block, 0)) THEN BEGIN SELECT d.documenttypekey FROM gd_document d JOIN ac_record r ON r.documentkey = d.id WHERE r.id = NEW.recordkey INTO :DT; EXECUTE PROCEDURE gd_p_exclude_block_dt (:DT) RETURNING_VALUES :F; IF(:F = 0) THEN BEGIN BG = GEN_ID(gd_g_block_group, 0); IF (:BG = 0) THEN BEGIN EXCEPTION gd_e_block; END ELSE BEGIN SELECT ingroup FROM gd_user WHERE ibname = CURRENT_USER INTO :IG; IF (BIN_AND(:BG, :IG) = 0) THEN BEGIN EXCEPTION gd_e_block; END END END END END