ActiveX api

Модераторы: deschere, ayatsk

Ответить
ask17
Сообщения: 2
Зарегистрирован: 12 апр 2022, 13:27

ActiveX api

Сообщение ask17 » 12 апр 2022, 13:31

Здравствуйте!

Напишите пожалуйста, каким образом можно получить доступ к интерфейсу product_deffinition_relationship используя объектную модель ActiveX компонента apl_pss_api?

Аватара пользователя
ayatsk
Сообщения: 371
Зарегистрирован: 03 июл 2008, 22:41
Откуда: НИЦ CALS
Контактная информация:

Re: ActiveX api

Сообщение ayatsk » 12 апр 2022, 17:04

product_deffinition_relationship - это не интерфейс, а тип объекта.

ask17
Сообщения: 2
Зарегистрирован: 12 апр 2022, 13:27

Re: ActiveX api

Сообщение ask17 » 13 апр 2022, 07:57

Хорошо, тогда как получить описание этого типа объекта?
Приведу пример. В справке 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
В примере пользователю предоставляется выбрать изделие, затем в цикле отображаются атрибуты "Обозначение" и "Наименование" всех версий данного изделия и обозначение самого изделия.
Вопрос - как можно получить атрибут "Позиция" (раздел Сборка) у выбранного изделия?

Аватара пользователя
ayatsk
Сообщения: 371
Зарегистрирован: 03 июл 2008, 22:41
Откуда: НИЦ CALS
Контактная информация:

Re: ActiveX api

Сообщение ayatsk » 13 апр 2022, 16:15

Вопрос - как можно получить атрибут "Позиция" (раздел Сборка) у выбранного изделия?
Позиция, естественно, может быть только у вхождения одной версии изделия в другую.
Получить список таких связей можно, например, с помощью метода IAplAPI_Product::LoadAllSubProduct,
который в extRel вернет список тех самых "product_deffinition_relationship".
У каждого из них можно взять атрибут "id" - это и будет обозначение позиции.

Ответить

Вернуться в «Вопросы по API»