Обновление базы для договоров — различия между версиями
Материал из wiki.standart-n.ru
Agk (обсуждение | вклад) |
Agk (обсуждение | вклад) |
||
Строка 229: | Строка 229: | ||
<nowiki> | <nowiki> | ||
agents_contract_id тип DM_ID_NULL | agents_contract_id тип DM_ID_NULL | ||
+ | </nowiki> | ||
+ | |||
+ | ==Добавить в конец триггера DOCS_BI строки== | ||
+ | <nowiki> | ||
+ | if (new.agents_contract_id is null) then | ||
+ | new.agents_contract_id = (select first 1 id from agents_contracts where agent_id = new.agent_id and status = 1); | ||
+ | if (new.agents_contract_id is null) then new.agents_contract_id = 0; | ||
</nowiki> | </nowiki> | ||
Версия 14:38, 14 января 2015
Содержание
Заменить версию Менеджера
Заменить ManagerXP2.exe на версию 2.272.38 от 29.12.2014 г. или более новую.
Выполнить скрипт
/******************************************************************************/ /*** Generated by IBExpert 14.01.2015 13:32:09 ***/ /******************************************************************************/ /******************************************************************************/ /*** Following SET SQL DIALECT is just for the Database Comparer ***/ /******************************************************************************/ SET SQL DIALECT 3; /******************************************************************************/ /*** Tables ***/ /******************************************************************************/ CREATE GENERATOR GEN_AGENTS_CONTRACTS_STATUS_ID; CREATE TABLE AGENTS_CONTRACTS_STATUS ( ID DM_STATUS NOT NULL /* DM_STATUS = INTEGER */, CAPTION DM_TEXT /* DM_TEXT = VARCHAR(250) */ ); /******************************************************************************/ /*** Triggers ***/ /******************************************************************************/ SET TERM ^ ; /******************************************************************************/ /*** Triggers for tables ***/ /******************************************************************************/ /* Trigger: AGENTS_CONTRACTS_STATUS_BI */ CREATE OR ALTER TRIGGER AGENTS_CONTRACTS_STATUS_BI FOR AGENTS_CONTRACTS_STATUS ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(gen_agents_contracts_status_id,1); end ^ SET TERM ; ^ /******************************************************************************/ /*** Privileges ***/ /******************************************************************************/ INSERT INTO AGENTS_CONTRACTS_STATUS (ID, CAPTION) VALUES (0, 'Активный'); INSERT INTO AGENTS_CONTRACTS_STATUS (ID, CAPTION) VALUES (-1, 'Удален'); INSERT INTO AGENTS_CONTRACTS_STATUS (ID, CAPTION) VALUES (1, 'Основной'); COMMIT WORK; /******************************************************************************/ /*** Generated by IBExpert 14.01.2015 13:32:54 ***/ /******************************************************************************/ /******************************************************************************/ /*** Following SET SQL DIALECT is just for the Database Comparer ***/ /******************************************************************************/ SET SQL DIALECT 3; /******************************************************************************/ /*** Tables ***/ /******************************************************************************/ CREATE GENERATOR GEN_AGENTS_CONTRACTS_ID; CREATE GENERATOR GEN_AGENTS_CONTRACTS_VNUM; CREATE TABLE AGENTS_CONTRACTS ( ID DM_ID NOT NULL /* DM_ID = BIGINT */, PARENT_ID DM_ID_NULL /* DM_ID_NULL = BIGINT */, AGENT_ID DM_ID /* DM_ID = BIGINT */, VNUM DM_ID_NULL /* DM_ID_NULL = BIGINT */, CONTRACT_DATE DM_DATETIME /* DM_DATETIME = TIMESTAMP */, CAPTION DM_TEXT1024 /* DM_TEXT1024 = VARCHAR(1024) */, STATUS DM_STATUS /* DM_STATUS = INTEGER */, START_DATE DM_DATETIME /* DM_DATETIME = TIMESTAMP */, END_DATE DM_DATETIME /* DM_DATETIME = TIMESTAMP */, BASE_TYPE DM_STATUS /* DM_STATUS = INTEGER */, SUMMA DM_DOUBLE /* DM_DOUBLE = DOUBLE PRECISION */, BASE_AGENT_ID DM_ID_NULL /* DM_ID_NULL = BIGINT */, BARCODE DM_TEXT1024 /* DM_TEXT1024 = VARCHAR(1024) */, DELETEDT DM_DATETIME /* DM_DATETIME = TIMESTAMP */ ); /******************************************************************************/ /*** Primary Keys ***/ /******************************************************************************/ ALTER TABLE AGENTS_CONTRACTS ADD CONSTRAINT PK_AGENTS_CONTRACTS PRIMARY KEY (ID); /******************************************************************************/ /*** Triggers ***/ /******************************************************************************/ SET TERM ^ ; /******************************************************************************/ /*** Triggers for tables ***/ /******************************************************************************/ /* Trigger: AGENTS_CONTRACTS_BI */ CREATE OR ALTER TRIGGER AGENTS_CONTRACTS_BI FOR AGENTS_CONTRACTS ACTIVE BEFORE INSERT POSITION 0 as begin if (new.id is null) then new.id = gen_id(gen_agents_contracts_id,1); if (new.vnum is null) then new.vnum = gen_id(gen_agents_contracts_vnum,1); if (new.caption is null) then new.caption = 'Договор №'||new.vnum; end ^ /* Trigger: AGENTS_CONTRACTS_BU0 */ CREATE OR ALTER TRIGGER AGENTS_CONTRACTS_BU0 FOR AGENTS_CONTRACTS ACTIVE BEFORE UPDATE POSITION 0 AS begin if (new.status = 1) then update agents_contracts set status = 0 where status = 1; end ^ SET TERM ; ^ /******************************************************************************/ /*** Fields descriptions ***/ /******************************************************************************/ COMMENT ON COLUMN AGENTS_CONTRACTS.STATUS IS '0 активный 1 основной -1 удаленный'; /******************************************************************************/ /*** Privileges ***/ /******************************************************************************/ CREATE OR ALTER VIEW VW_AGENTS_CONTRACTS( ID, PARENT_ID, AGENT_ID, AGENT_CAPTION, VNUM, CONTRACT_DATE, CAPTION, STATUS, STATUS_CAPTION, START_DATE, END_DATE, BASE_TYPE, SUMMA, BASE_AGENT_ID, BARCODE, DELETEDT) AS select ac.id, ac.parent_id, ac.agent_id, a.caption, ac.vnum, ac.contract_date, ac.caption, ac.status, acs.caption, ac.start_date, ac.end_date, ac.base_type, ac.summa, ac.base_agent_id, ac.barcode, ac.deletedt from agents_contracts ac left join agents a on ac.agent_id = a.id left join agents_contracts_status acs on ac.status = acs.id ;
Добавить в таблицу DOCS поле
agents_contract_id тип DM_ID_NULL
Добавить в конец триггера DOCS_BI строки
if (new.agents_contract_id is null) then new.agents_contract_id = (select first 1 id from agents_contracts where agent_id = new.agent_id and status = 1); if (new.agents_contract_id is null) then new.agents_contract_id = 0;
Добавить в вид VW_DOCS поле
AGENT_CONTRACT_CAPTION источник ac.caption где, ас left join agents_contracts ac on docs.agents_contract_id = ac.id
Проверка себя
Зайдите в журнал документов, откройте шапку любого документа, если ошибки нет, значит все правильно.
Теги: qWork: Field 'contract_caption' not found, Договора, Менеджер