Робота з СОМ об'єктами Комплексу
Для організації взаємодії зовнішнього застосування з середовищем ISpro в поставку Комплексу включений ряд СОМ об'єктів, службовців для створення з'єднання з Комплексом і отримання примірників об'єктів.
COM-об'єкти Комплексу (Component Object Model - компонентна об'єктна модель) призначені для організації зовнішнього доступу до прикладних функцій і даних Комплексу.
Все СОМ-об'єкти Комплексу відповідають вимогам автоматизації і можуть використовуватися з будь-яких мов, що підтримують роботу з інтерфейсами автоматизації.
СОМ об'єкти можуть містити набір предметних функцій, а так само, можуть повторювати функціональність набору даних і містити набір стандартних методів навігації і модифікації даних.
Для отримання примірника певного об'єкта зовнішню програму має виконати наступні кроки:
- Встановити з'єднання з Комплексом, вказавши при цьому бажане підприємство. Після успішної установки з'єднання буде запущена робоча станція Комплексу, яка працює в режимі СОМ сервера.
- в результаті успішного з'єднання зовнішню програму отримує екземпляр об'єкта - менеджера СОМ об'єктом. Менеджер відповідає за створення екземплярів всіх інших СОМ об'єктів Комплексу.
- зовнішню програму, за допомогою менеджера, створює необхідні СОМ об'єкти.
Звільнення об'єктів проводиться штатними засобами застосовуваного мови програмування.
Приклад програми на VBA, що виводить перші два рядки реєстру контрагентів.
' Менеджер СОМ об'єктів
Dim ComManagerObj As Object
'З'єднання з Комплексом
Dim ConnectObj As Object
'Запит для читання записів картотеки
Dim QueryObj As Object
On Error GoTo ErrorHandler
'Створення об'єкту для з'єднання з Комплексом
Set ConnectObj = CreateObject ("ISStBoot.SysStartup.1")
'Запуск створення з'єднання
'- станція в каталозі c: \ ispro
'- користувач adm
'- пароль master
Set ComManagerObj = ConnectObj.Connect ("c: \ ispro", "adm", "master")
'З'єднання встановлено
'Вхід в підприємство №1
Call ConnectObj.SelectFirm (1)
'Всі етапи з'єднання завершені, можна працювати з Комплексом
'Запросити об'єкт для виконання довільного SQL запиту
'Модуль об'єкта - Sys
'Найменування об'єкта - ISysSqlQuery
Set QueryObj = ComManagerObj.GetObjByName ("Sys", "ISysSqlQuery")
'Виконати запит читання картотеки контрагентів
QueryObj. Text = " select ptn _ nm from ptnrk "
QueryObj. OpenObj
'Прочитати перший запис
QueryObj. First
MsgBox (QueryObj.GetFieldValue ("ptn_nm")
' Прочитати другий запис
QueryObj.Next
MsgBox (QueryObj.GetFieldValue ("ptn_nm")
' Звільнити об'єкт
QueryObj.CloseObj
Set QueryObj = Nothing
ErrorHandler:
MsgBox ("Error:" & Chr (13) & Err.Description)
СОМ об'єкт для виконання SQL запитів
Об'єкт призначений для виконання довільних SQL запитів в схемі даних поточного підприємства і схемою загальносистемних даних. Облік розташування таблиці в загальній схемі даних або схемою підприємства, виконується автоматично.
Опис системних СОМ-об’єктів Комплексу
- Назва об'єкту: ISysSqlQuery
Модуль: Sys
Бібліотека типів: sys _ c. dll
склад об'єкта
BSTR Text
Читання / запис тексту SQL запиту.
SetParamValue (BSTR ParamName, VARIANT Val)
Установка значення параметра запиту.
ParamName - найменування параметра, без символу ":"
Val - значення параметра
VARIANT GetFieldValue (BSTR FieldName)
Повертає значення поля запиту.
FieldName - найменування поля
VARIANT_BOOL OpenObj
відкрити набір
VARIANT_BOOL HRESULT CloseObj
Закрити набір
VARIANT_BOOL First
Стати на перший запис
VARIANT_BOOL Last
Стати на останній запис
VARIANT_BOOL Prior
Стати на попередній запис
VARIANT_BOOL Next
Стати на наступний запис
У разі необхідності використання параметрів в запиті, параметри необхідно іменувати відповідно до правил іменування полів і випереджати параметр в тексті запиту символом ":", наприклад where rcd =: new_rcd порівнюється значення поля "rcd" зі значенням параметра "new_rcd".
Приклад використання об'єкта
Private ConnectObj As Object
Private ManagerObj As Object
Private QryObj As Object
Private Sub DoWork ()
On Error GoTo ErrorHandler
Set ConnectObj = CreateObject ("ISStBoot.SysStartup.1")
Set ManagerObj = ConnectObj.Connect ("D: \ bpw", "pva", "")
Call ConnectObj.SelectFirm (1)
Set QryObj = ManagerObj.GetObjByName ("Sys", "ISysSqlQuery")
QryObj.Text = "select spr_nm from sspr where spr_rcd =: rcd"
Call QryObj.SetParamValue ("rcd", 1)
QryObj.OpenObj
QryObj.First
While QryObj.Next
If Not IsNull (QryObj.GetFieldValue ("Spr_Nm")) Then
MsgBox (QryObj.GetFieldValue ("Spr_Nm"))
End If
Wend
QryObj.CloseObj
Exit Sub
ErrorHandler:
MsgBox ("Error:" & Chr (13) & Err.Description)
End Sub
Опис прикладних СОМ-об’єктів Комплексу
Запуск ресурсних модулів з програми BASIC
В звітах Word і Excel для звернення до функцій Комплексу слід використовувати такі виклики:
RES_ADD_MODULE (<Найменування модуля>)
Додати модуль в список запускаються
RES_DEL_MODULES
Очистити список запускаються модулів
RES_LOAD_MODULES
Завантажити все модулі з списку
RES_UNLOAD_MODULES
Завершити роботи з модулями з списку
Приклад звернення до ресурсів Комплексу з звіту:
Sub ReportMain (Mgr As Object)
Set ComManager = Mgr
'Запросити інтерфейс зв'язку з Комплексом
Set Env = ComManager.GetObjByName ("Sys", "ISysEnvironment")
'Завантажити модуль
'Загальносистемні ресурси (SYS_R)
Env.RES_ADD_MODULE ("SYS_R")
Env.RES_LOAD_MODULES
'Вважати інформацію про контрагента
Env.PTN_READ_CD ("001")
'Завершити роботу з модулем
Env.RES_UNLOAD_MODULES
End Sub
Списки доступних модулів і їх вмісту надаються модулем доповнення до MS Office.
Проблеми при розробці звітів
Word і Excel звіти:
1. При створенні звіту Excel помилка
====== Помилка ======
Виклик методу: VBProject
Джерело: Microsoft Office Excel
опис:
Програмний доступ до проекту Visual Basic не є довіреною
Owner: SYSRXLT.CPP, File: SYSRXLT.CPP, Line: 654
=======================
Для усунення помилки необхідно в програмі Excel за пунктом меню Сервіс / Макрос / Безпека на вкладці Надійні видавці зазначити параметр Довіряти доступ до Visual Basic Project.
2. При створенні звіту Word помилка
====== Помилка ======
Виклик методу: VBProject
Джерело: Microsoft
опис:
Відсутня довіра до програмованого доступу до проекту Visual Basic.
Owner: SYSRWRD.CPP, File: SYSRWRD.CPP, Line: 464
Для усунення помилки необхідно в програмі Word за пунктом меню Сервіс / Макрос / Безпека на вкладці Надійні видавці зазначити параметр Довіряти доступ до Visual Basic.