Бизнес-объект
SYSDBA (обсуждение | вклад) (→Функция AddCompany) |
SYSDBA (обсуждение | вклад) (→Функция AddCompany) |
||
| Строка 35: | Строка 35: | ||
Function AddCompany(CompanyName, TaxID) | Function AddCompany(CompanyName, TaxID) | ||
| − | Dim q, Tr, Creator | + | Dim q, Tr, Creator, ID |
Set Creator = New TCreator | Set Creator = New TCreator | ||
Set q = Creator.GetObject(Application, "TIBSQL", "") | Set q = Creator.GetObject(Application, "TIBSQL", "") | ||
Set Tr = Creator.GetObject(Application, "TIBTransaction", "") | Set Tr = Creator.GetObject(Application, "TIBTransaction", "") | ||
| − | + | ID = gdcBaseManager.GetNextID | |
Tr.DefaultDatabase = gdcBaseManager.Database | Tr.DefaultDatabase = gdcBaseManager.Database | ||
| Строка 47: | Строка 47: | ||
q.SQL.Text = "INSERT INTO gd_contact (id, parent, contacttype, name) " &_ | q.SQL.Text = "INSERT INTO gd_contact (id, parent, contacttype, name) " &_ | ||
"VALUES (:id, :parent, :contacttype, :name) " | "VALUES (:id, :parent, :contacttype, :name) " | ||
| − | q.ParamByName("id").AsInteger = | + | q.ParamByName("id").AsInteger = ID |
q.ParamByName("parent").AsInteger = gdcBaseManager.GetIDByRUIDString("147002208_31587988") | q.ParamByName("parent").AsInteger = gdcBaseManager.GetIDByRUIDString("147002208_31587988") | ||
q.ParamByName("contacttype").AsInteger = 3 | q.ParamByName("contacttype").AsInteger = 3 | ||
| Строка 54: | Строка 54: | ||
q.SQL.Text = "INSERT INTO gd_company (contactkey, fullname) VALUES (:contactkey, :fullname)" | q.SQL.Text = "INSERT INTO gd_company (contactkey, fullname) VALUES (:contactkey, :fullname)" | ||
| − | q.ParamByName("contactkey").AsInteger = | + | q.ParamByName("contactkey").AsInteger = ID |
q.ParamByName("fullname").AsString = CompanyName | q.ParamByName("fullname").AsString = CompanyName | ||
q.ExecQuery | q.ExecQuery | ||
q.SQL.Text = "INSERT INTO gd_companycode (companykey, taxid) VALUES (:companykey, :taxid) " | q.SQL.Text = "INSERT INTO gd_companycode (companykey, taxid) VALUES (:companykey, :taxid) " | ||
| − | q.ParamByName("companykey").AsInteger = | + | q.ParamByName("companykey").AsInteger = ID |
q.ParamByName("taxid").AsString = TaxID | q.ParamByName("taxid").AsString = TaxID | ||
q.ExecQuery | q.ExecQuery | ||
Tr.Commit | Tr.Commit | ||
| + | AddCompany = ID | ||
End Function | End Function | ||
Версия 21:33, 9 января 2010
Если попытаться выразить сущность платформы Гедымин в одном словосочетании, то этим словосочетанием будет бизнес-объект. Именно бизнес-объекты отвечают за слово "быстрый" в слогане "средство быстрой разработки экономического программного обеспечения".
Бизнес-объектом мы называем экземпляр одного из наследников абстрактного базового класса TgdcBase. В свою очередь TgdcBase, как это следует из представленной диаграммы, является наследником класса TIBCustomDataSet.
Использование набора данных (TDataSet), как одного из прародителей бизнес-классов позволяет стандартным образом, посредством компонента TDataSource подключаться к визуальным компонентам для отображения и редактирования данных.
Уникальным и незаменимым бизнес-объект делают следующие функции:
- Представление реляционных данных в объектном виде (OMR — Object Relational Mapping)
- Контроль за разграничением прав доступа
- Сериализация данных
- Организация пользовательского интерфейса
- Реализация логики бухгалтерского и складского движения
Object Relational Mapping
В базе данных Гедымина информация о компании (юридическом лице) хранится в виде связанных 1-к-1 записей минимум в двух таблицах: GD_CONTACT и GD_COMPANY. Третья таблица — GD_COMPANYCODE — опциональная.
Таким образом, операция добавления новой компании в базу данных потребует выполнения последовательности следующих действий:
- Старт транзакции
- Добавление записи в GD_CONTACT
- Добавление записи в GD_COMPANY
- Добавление записи в GD_COMPANYCODE
- Комит транзакции
Функция AddCompany
Option Explicit Function AddCompany(CompanyName, TaxID) Dim q, Tr, Creator, ID Set Creator = New TCreator Set q = Creator.GetObject(Application, "TIBSQL", "") Set Tr = Creator.GetObject(Application, "TIBTransaction", "") ID = gdcBaseManager.GetNextID Tr.DefaultDatabase = gdcBaseManager.Database Tr.StartTransaction q.Transaction = Tr q.SQL.Text = "INSERT INTO gd_contact (id, parent, contacttype, name) " &_ "VALUES (:id, :parent, :contacttype, :name) " q.ParamByName("id").AsInteger = ID q.ParamByName("parent").AsInteger = gdcBaseManager.GetIDByRUIDString("147002208_31587988") q.ParamByName("contacttype").AsInteger = 3 q.ParamByName("name").AsString = CompanyName q.ExecQuery q.SQL.Text = "INSERT INTO gd_company (contactkey, fullname) VALUES (:contactkey, :fullname)" q.ParamByName("contactkey").AsInteger = ID q.ParamByName("fullname").AsString = CompanyName q.ExecQuery q.SQL.Text = "INSERT INTO gd_companycode (companykey, taxid) VALUES (:companykey, :taxid) " q.ParamByName("companykey").AsInteger = ID q.ParamByName("taxid").AsString = TaxID q.ExecQuery Tr.Commit AddCompany = ID End Function
Функция AddCompany2
Option Explicit Function AddCompany2(CompanyName, TaxID) Dim Creator, Obj Set Creator = New TCreator Set Obj = Creator.GetObject(Application, "TgdcCompany", "") Obj.Open Obj.Insert Obj.FieldByName("parent").AsInteger = gdcBaseManager.GetIDByRUIDString("147002208_31587988") Obj.FieldByName("name").AsString = CompanyName Obj.FieldByName("taxid").AsString = "123456789" Obj.Post AddCompany2 = Obj.ID End Function