Документ (бизнес-объект)
Документы предназначены для отражения разнообразных событий происходящих в хозяйственной жизни предприятия. Документы несколько по иному сохраняются в базе данных и обрабатываются системой. Все документы подразделяются на простые, однопозиционные, например, платежное поручение, и сложные, многопозиционные, например, товарная накладная. Общие данные документа, такие как его номер и дата регистрации, хранятся в таблице gd_document. Специфические данные, свойственные только документу определенного класса, хранятся в одной таблице, для простых, или в двух — для сложных документов. Зарегистрированный в системе документ может быть проведен, т.е. для него будет сформирована хозяйственная операция и одна или несколько бухгалтерских проводок.
Алгоритм, по которому конкретному документу сопоставляется хозяйственная операция и бухгалтерская проводка задается в специальном конструкторе, освоить который сможет даже далекий от программирования бухгалтер или экономист.
Содержание |
Составные части документа
Ниже перечислены составные части документа и приведены запросы для извлечения информации о них из базы данных. Параметр RUID в запросе -- это RUID типа документа.
Экранные формы
Экранная форма диалогового окна хранится в текстовом представлении, в формате DFM, в значении с именем РУИД-а документа, в подветке корневой ветки DFM глобального хранилища. Имя подветки соответствует имени класса диалогового окна, которое возвращает функция класса GetDialogFormClassName.
Бизнес-класс: TgdcStorage
SELECT
v.id
FROM
gd_storage_data glbl
JOIN gd_storage_data dfm
ON dfm.parent = glbl.id AND dfm.name = 'DFM'
JOIN gd_storage_data frm_class
ON frm_class.parent = dfm.id
JOIN gd_storage_data v
ON v.parent = frm_class.id
WHERE
glbl.name = 'GLOBAL' AND glbl.data_type = 'G'
AND v.name = :RUID AND v.data_type = 'B'
Форма просмотра хранится аналогичным образом.
Визуальные настройки гридов диалоговой формы и формы просмотра хранятся в хранилище пользователя. Пример: \gdc_dlgUserComplexDocument147093641_497053859(Tgdc_dlgUserComplexDocument)\ibgrDetail(TgsIBGrid)\data
SELECT
v.id
FROM
gd_storage_data usr
JOIN gd_storage_data frm
ON frm.parent = usr.id
JOIN gd_storage_data ibgr
ON ibgr.parent = frm.id
JOIN gd_storage_data v
ON v.parent = ibgr.id
WHERE
usr.id = 990010
AND frm.name CONTAINING :N
AND ibgr.name LIKE 'ibgr%'
AND v.name = 'data'
AND v.data_type = 'B'
Перекрытые методы бизнес-классов и экранных форм
Бизнес-класс: TgdcEvent
SELECT ev.* FROM evt_objectevent ev JOIN evt_object o ON o.id = ev.objectkey JOIN evt_object r ON r.lb < o.lb AND r.rb >= o.rb WHERE r.parent IS NULL AND r.NAME = 'TgdcBase' AND o.name LIKE '%' || :RUID UNION ALL SELECT ev.* FROM evt_objectevent ev JOIN evt_object o ON o.id = ev.objectkey JOIN evt_object r ON r.lb < o.lb AND r.rb >= o.rb WHERE r.parent IS NULL AND r.NAME = 'TgdcCreateableForm' AND o.name LIKE '%' || :RUID
Обработчики событий компонентов на экранных формах
Бизнес-класс: TgdcEvent
SELECT ev.* FROM evt_objectevent ev JOIN evt_object o ON o.id = ev.objectkey JOIN evt_object p ON p.id = o.parent WHERE p.parent IS NULL AND p.name LIKE '%' || :RUID
Отчеты
Отчеты бизнес-класса и экранной формы просмотра.
Бизнес-класс: TgdcReport
SELECT
l.id
FROM
evt_object ev
JOIN rp_reportgroup gr ON ev.reportgroupkey = gr.id
JOIN rp_reportlist l ON l.REPORTGROUPKEY = gr.id
WHERE
ev.parent IS NULL
AND
ev.name LIKE '%' || :RUID
UNION ALL
SELECT
l.id
FROM
gd_documenttype dt
JOIN rp_reportgroup gr ON dt.reportgroupkey = gr.id
JOIN rp_reportlist l ON l.REPORTGROUPKEY = gr.id
WHERE
dt.ruid = :RUID
Макросы экранной формы просмотра
Бизнес-класс: TgdcMacros
SELECT ml.id FROM evt_macroslist ml JOIN evt_macrosgroup mg ON ml.MACROSGROUPKEY = mg.id JOIN evt_macrosgroup mgp ON mgp.lb <= mg.LB AND mgp.rb >= mg.rb JOIN evt_object p ON p.MACROSGROUPKEY = mgp.id WHERE p.parent IS NULL AND p.name LIKE '%' || :RUID
Типовые проводки
Бизнес-класс: TgdcAcctTransactionEntry
SELECT tr.id FROM ac_trrecord tr JOIN gd_documenttype dt ON dt.id = tr.documenttypekey WHERE dt.ruid = :RUID
Скрипт-объекты
Скрипт-объекты для экранных форм.
Бизнес-класс: TgdcDelphiObject
SELECT id FROM evt_object WHERE name LIKE '%' || :RUID AND parent IS NOT NULL
SELECT id FROM evt_object WHERE name LIKE '%' || :RUID AND parent IS NULL
Параметры документа
Бизнес-класс: TgdcInvDocumentTypeOptions
SELECT o.id FROM gd_documenttype_option o JOIN gd_documenttype dt ON dt.id = o.DTKEY JOIN gd_documenttype dth ON dth.LB >= dt.LB AND dth.rb <= dt.rb WHERE dth.ruid = :RUID
Таблицы шапки и позиций
Бизнес-класс: TgdcRelation
SELECT r.id FROM at_relations r JOIN gd_documenttype dt ON dt.headerrelkey = r.id WHERE dt.ruid = :RUID
SELECT r.id FROM at_relations r JOIN gd_documenttype dt ON dt.linerelkey = r.id WHERE dt.ruid = :RUID