Новые проводки (постановка)

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии 1 участника)
Строка 35: Строка 35:
 
     имеем дело с последовательностью операций.
 
     имеем дело с последовательностью операций.
 
     */
 
     */
     prevkey        dforeignkey
+
     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
 
   );
 
   );
  
Строка 46: Строка 68:
 
     уровней вложенности. upkey -- ссылка на таблицу верхнего уровня.
 
     уровней вложенности. upkey -- ссылка на таблицу верхнего уровня.
 
     */
 
     */
     upkey     dforeignkey,  
+
     masterkey     dforeignkey,  
  
 
     /*
 
     /*
Строка 72: Строка 94:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
==Пример использования==
 +
 +
<syntaxhighlight lang="sql">
 +
  CREATE TABLE
 +
</syntaxhighlight>
  
 
[[Category:Постановка]]
 
[[Category:Постановка]]

Текущая версия на 14:20, 23 ноября 2016

  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
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты