Настройка атрибутов в Менеджере
Материал из wiki.standart-n.ru
Версия от 18:32, 19 ноября 2015; Agk (обсуждение | вклад)
Что это?
Иногда возникает необходимость хранить дополнительные параметры для товара в базе (место хранения, цвет, размер и т.д.), а свободных полей нет. Для этого существуют атрибуты. Их может быть сколько угодно штук, любого типа (строка, целое или вещественное число) и они могут привязываться по наименованию, партии, штрихкоду. Чтобы их настроить необходимо:
Заменить версию Менеджера
Заменить ManagerXP2.exe на версию 2.272.26 от октября 2014 г. или более новую.
Выполнить скрипт
/******************************************************************************/ /*** Generated by IBExpert 19.11.2015 18:17:38 ***/ /******************************************************************************/ /******************************************************************************/ /*** Following SET SQL DIALECT is just for the Database Comparer ***/ /******************************************************************************/ SET SQL DIALECT 3; /******************************************************************************/ /*** Tables ***/ /******************************************************************************/ CREATE TABLE ATTRIBUTES ( ATTR_SID DM_TEXT /* DM_TEXT = VARCHAR(250) */, ATTR_LINKFIELDNAME DM_TEXT /* DM_TEXT = VARCHAR(250) */, ATTR_TYPE DM_STATUS /* DM_STATUS = INTEGER */, STATUS DM_STATUS /* DM_STATUS = INTEGER */, INSERTDT DM_DATETIME /* DM_DATETIME = TIMESTAMP */ ); /******************************************************************************/ /*** Indices ***/ /******************************************************************************/ CREATE INDEX ATTRIBUTES_IDX1 ON ATTRIBUTES (ATTR_SID); /******************************************************************************/ /*** Triggers ***/ /******************************************************************************/ SET TERM ^ ; /******************************************************************************/ /*** Triggers for tables ***/ /******************************************************************************/ /* Trigger: ATTRIBUTES_BI */ CREATE OR ALTER TRIGGER ATTRIBUTES_BI FOR ATTRIBUTES ACTIVE BEFORE INSERT POSITION 0 as begin new.insertdt='now'; end ^ SET TERM ; ^ /******************************************************************************/ /*** Fields descriptions ***/ /******************************************************************************/ COMMENT ON COLUMN ATTRIBUTES.ATTR_TYPE IS '0 - string 1 - int 2 - float 3 - date 4 - datetime'; /******************************************************************************/ /*** Privileges ***/ /******************************************************************************/ /******************************************************************************/ /*** Generated by IBExpert 19.11.2015 18:17:50 ***/ /******************************************************************************/ /******************************************************************************/ /*** Following SET SQL DIALECT is just for the Database Comparer ***/ /******************************************************************************/ SET SQL DIALECT 3; /******************************************************************************/ /*** Tables ***/ /******************************************************************************/ CREATE GENERATOR GEN_ATTRIBUTE_DETAIL_ID; CREATE TABLE ATTRIBUTE_DETAIL ( ID DM_ID NOT NULL /* DM_ID = BIGINT */, ATTR_SID DM_TEXT /* DM_TEXT = VARCHAR(250) */, ATTR_LINKID DM_UUID_NULL /* DM_UUID_NULL = CHAR(36) */, ATTR_SVALUE DM_TEXT1024 /* DM_TEXT1024 = VARCHAR(1024) */, INSERTDT DM_DATETIME /* DM_DATETIME = TIMESTAMP */ ); /******************************************************************************/ /*** Primary Keys ***/ /******************************************************************************/ ALTER TABLE ATTRIBUTE_DETAIL ADD CONSTRAINT PK_ATTRIBUTE_DETAIL PRIMARY KEY (ID); /******************************************************************************/ /*** Indices ***/ /******************************************************************************/ CREATE UNIQUE INDEX ATTRIBUTE_DETAIL_IDX1 ON ATTRIBUTE_DETAIL (ATTR_SID, ATTR_LINKID); CREATE INDEX ATTRIBUTE_DETAIL_IDX2 ON ATTRIBUTE_DETAIL (ATTR_SID, ATTR_LINKID, ATTR_SVALUE); /******************************************************************************/ /*** Triggers ***/ /******************************************************************************/ SET TERM ^ ; /******************************************************************************/ /*** Triggers for tables ***/ /******************************************************************************/ /* Trigger: ATTRIBUTE_DETAIL_BI */ CREATE OR ALTER TRIGGER ATTRIBUTE_DETAIL_BI FOR ATTRIBUTE_DETAIL ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(gen_attribute_detail_id,1); new.insertdt = 'now'; end ^ SET TERM ; ^ /******************************************************************************/ /*** Privileges ***/ /******************************************************************************/ SET SQL DIALECT 3; SET TERM ^ ; CREATE OR ALTER TRIGGER ATTRIBUTE_DETAIL_BIU0 FOR ATTRIBUTE_DETAIL ACTIVE BEFORE INSERT OR UPDATE POSITION 0 AS begin new.ATTR_SID = upper(new.ATTR_SID); end ^ SET TERM ; ^ update ATTRIBUTE_DETAIL set id = id; SET TERM ^ ; create or alter procedure PR_GETATTRIBUTE ( ATTR_SID DM_UUID_NULL, ATTR_LINKID DM_TEXT) returns ( SVALUE varchar(1024)) as declare variable GROUP_TYPE DM_STATUS; begin select attr_svalue from attribute_detail where attr_sid = Upper(:attr_sid) and attr_linkid = :attr_linkid into :svalue; suspend; end^ SET TERM ; ^ GRANT SELECT ON ATTRIBUTE_DETAIL TO PROCEDURE PR_GETATTRIBUTE; GRANT EXECUTE ON PROCEDURE PR_GETATTRIBUTE TO PROCEDURE OUT$PR_SHTRIH_PEREOCENKA; GRANT EXECUTE ON PROCEDURE PR_GETATTRIBUTE TO SYSDBA;