Работа с СОМ - объектами системы ИС-ПРО
Для взаимодействия внешнего приложения со средой ИС-ПРО в поставку системы включен ряд СОМ-объектов, предназначенных для создания соединения с системой ИС-ПРО и получения экземпляров объектов.
COM-объекты ИС-ПРО (Component Object Model - компонентная объектная модель) предназначены для организации внешнего доступа к прикладным функциям и данным системы.
Все СОМ-объекты системы соответствуют требованиям автоматизации и могут использоваться из любых языков, поддерживающих работу с интерфейсами автоматизации.
СОМ-объекты могут содержать набор предметных функций, а так же, могут повторять функциональность набора данных и содержать набор стандартных методов навигации и модификации данных.
Для получения экземпляра определенного объекта внешнее приложение должно выполнить следующие шаги:
- установить соединение с системой, указав при этом предприятие. После успешного соединения будет запущена рабочая станция ИС-ПРО, работающая в режиме СОМ-сервера.
- в результате успешного соединения внешнее приложение получает экземпляр объекта– менеджера СОМ-объектов. Менеджер отвечает за создание экземпляров всех остальных СОМ- объектов системы.
- внешнее приложение, посредством менеджера, создает требуемые СОМ-объекты.
Освобождение объектов производится штатными средствами применяемого языка программирования.
Пример использования:
В Microsoft Office Excel откройте окно редактора Visual Basic (Alt+F11, кнопка
Visual Basic на панели быстрого доступа).
Visual Basic на панели быстрого доступа).
В Microsoft Visual Basic для подключения библиотек COM-объектов выберите пункт меню «Tools/References...» и в окне References - VBAProject нажмите кнопку Browse.

Выберите библиотеку (формат *_c.dll) в зависимости от задачи. Файлы находятся в каталоге \Dll\ серверной части системы ИС-ПРО.
SPROTN_C.DLL - Справочник ОТН
TRDCOM_C.DLL - Расходные накладные
SYSSF_C.DLL - Налоговый учет
SYS_C.DLL - Произвольный SQL запрос
SPRPDR_C.DLL - Справочник подразделений
SKLNM_C.DLL - Справочник номенклатур
PRDSPC_C.DLL - Спецификация на продукцию
PRDPRF_C.DLL - Акты выполненных работ
SKL_EI_C.DLL - Справочник ЕИ
SKL_AT_C.DLL - Атрибуты номенклатуры
PTNK_C.DLL - Справочник контрагентов
PRDMRT_C.DLL - Наряд-задания производству
SKLATR_C.DLL - Атрибуты КСУ
TRDACC_C.DLL - Счета к оплате
PRDZKZ_C.DLL - Производственный заказ
PAYRL_C.DLL - Расчётная ведомость
PAYLS_C.DLL - Лицевой счёт
SYSWRK_C.DLL - Профиль пользователя
Примечание. Библиотеку SYS_C.DLL (Произвольный SQL запрос) подключать в «Tools/References...» не нужно. Библиотека автоматически загружена с ядром при работе СОМ - объектов ИС-ПРО.


В Microsoft Visual Basic откройте окно Object Browser (F2, кнопка
Object Browser на панели инструментов).
Object Browser на панели инструментов).
Для просмотра методов и полей объекта в Object Browser, в поле Project/Library выберите нужную библиотеку из списка. Например, ISSklN - справочник номенклатур.
Пример программы на VBA, выводящей первые две строки реестра контрагентов.
‘Менеджер СОМ объектов
Dim ComManagerObj As Object
‘Соединение с ИС-ПРО
Dim ConnectObj As Object
‘Запрос для чтения записей картотеки
Dim QueryObj As Object
On Error GoTo ErrorHandler
‘Создание объекта для соединения с системой
Set ConnectObj = CreateObject("ISStBoot.SysStartup.1")
‘Запуск создания соединения
‘ – путь к серверной части
‘ – пользователь adm
‘ – пароль master
Set ComManagerObj = ConnectObj.Connect("c:\ispro ", "adm", "password")
‘Соединение установлено
‘Вход в предприятие №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




