Новые проводки (постановка)
Материал из GedeminWiki
CREATE TABLE a2_entry ( id dintkey, /* Для сложных проводок мы имеем обязательно одну главную запись и несколько дополнительных дебетов или кредитов. */ masterentrykey dforeignkey, companykey dintkey, dtkey dintkey, ctkey dintkey, /* Фиксируем не только дату, но и время проводки. Там, где не принципиально или время не известно будем использовать 00:00. */ entrydate dtimestamp_notnull, /* тип документа */ doctypekey dintkey, /* ИД записи в таблице документа */ docid dintkey, /* ИД шага из бизнес-процесса */ bpseq dintkey, /* Предыдущая операция (проводка), если имеем дело с последовательностью операций. */ prevkey dforeignkey, FOREIGN KEY a2_fk_entry_masterentrykey (masterentrykey) REFERENCES a2_entry (id) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY a2_fk_entry_companykey (companykey) REFERENCES gd_ourcompany (companykey) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY a2_fk_entry_dtkey (dtkey) REFERENCES ac_account (id) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY a2_fk_entry_ctkey (ctkey) REFERENCES ac_account (id) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY a2_fk_entry_prevkey (prevkey) REFERENCES a2_entry (id) ON DELETE NO ACTION ON UPDATE CASCADE ); CREATE TABLE a2_some_doc ( id dintkey, /* Мы больше не ограничиваем структуру двумя уровнями вложенности шапка-позиция. Документ может быть сложным с неограниченным количеством уровней вложенности. upkey -- ссылка на таблицу верхнего уровня. */ masterkey dforeignkey, /* Следующие поля необязательны. Разработчик сам решает будут они присутствовать в конкретном документе или нет. */ [docnumber ddocnumber,] [docorder dinteger,] [creationdate dcreationdate,] [creatorkey dcreatorkey,] [editiondate deditiondate,] [editorkey deditorkey,] [aview dsecurity,] [achag dsecurity,] [afull dsecurity,] /* Поля документа, содержащие объект, признаки, значения. */ [attr1] ... [attrn] );
Пример использования
CREATE TABLE