Здравствуйте!
Напишите пожалуйста, каким образом можно получить доступ к интерфейсу product_deffinition_relationship используя объектную модель ActiveX компонента apl_pss_api?
ActiveX api
Re: ActiveX api
product_deffinition_relationship - это не интерфейс, а тип объекта.
Re: ActiveX api
Хорошо, тогда как получить описание этого типа объекта?
Приведу пример. В справке APL_PSS_API.chm приведен пример:
---------
В примере пользователю предоставляется выбрать изделие, затем в цикле отображаются атрибуты "Обозначение" и "Наименование" всех версий данного изделия и обозначение самого изделия.
Вопрос - как можно получить атрибут "Позиция" (раздел Сборка) у выбранного изделия?
Приведу пример. В справке APL_PSS_API.chm приведен пример:
---------
Код: Выделить всё
'Объявление компонента и интерфейсов
Dim AplPssAPI As Object
Dim PssData As IAplAPI_Data
Dim PssFolder As IAplAPI_Folder
Dim PssCateg As IAplAPI_Category
Dim PssDoc As IAplAPI_Document
Dim PssProduct As IAplAPI_Product
Dim PssAutoriz As IAplAPI_Autorization
Dim PssBP As IAplAPI_BProcess
Dim PssCharact As IAplAPI_Characteristic
'Создание компонента
Set AplPssAPI = CreateObject(APL_PSS_API.AplPssAPI)
'Инициализация интерфейсов
Set PssData = AplPssAPI
Set PssFolder = AplPssAPI
Set PssCateg = AplPssAPI
Set PssDoc = AplPssAPI
Set PssProduct = AplPssAPI
Set PssAutoriz = AplPssAPI
Set PssBP = AplPssAPI
Set PssCharact = AplPssAPI
Dim pdf As Long, prd As Long
Dim buf, id, name, ver As String
AplPssAPI.AutoSave = 0 ' Автоматически в БД не сохранять
AplPssAPI.ModeInteractive = 1 ' Выводить все диалоги
AplPssAPI.Connect , ,
If True = AplPssAPI.IsConnected() Then
'Выбираем в базе изделие
pdf = AplPssAPI.SelectInstance(4, root)
If pdf <> 0 Then
'Получаем все версии изделия
PssProduct.GetAllProductVersion pdf, pdfs
For i = 0 To UBound(pdfs)
'Получаем ссылку из версии изделия на изделие
prd = PssData.GetAttrBN(pdfs(i), of_product)
'Получаем обозначение версии изделия
ver = PssData.GetAttrBN(pdfs(i), id)
'Получаем обозначение изделия
id = PssData.GetAttrBN(prd, id)
'Получаем наименование изделия
name = PssData.GetAttrBN(prd, name)
'Выводим сообщение с выбранными атрибутами
buf = id + : + name + : + ver
MsgBox buf
Next i
End If
End If
'Разрываем соединение
AplPssAPI.Disconnect
Вопрос - как можно получить атрибут "Позиция" (раздел Сборка) у выбранного изделия?
Re: ActiveX api
Позиция, естественно, может быть только у вхождения одной версии изделия в другую.Вопрос - как можно получить атрибут "Позиция" (раздел Сборка) у выбранного изделия?
Получить список таких связей можно, например, с помощью метода IAplAPI_Product::LoadAllSubProduct,
который в extRel вернет список тех самых "product_deffinition_relationship".
У каждого из них можно взять атрибут "id" - это и будет обозначение позиции.