Настройка атрибутов в Менеджере
Материал из 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;