Робота з СОМ об'єктами Комплексу

Для організації взаємодії зовнішнього застосування з середовищем 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.