Объявление

Свернуть
Пока нет объявлений.

Работа с компонентами Оmnitracker через COM

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Работа с компонентами Оmnitracker через COM

    Java
    Для работы требуется библиотека Jacob
    В java.library.path требуется прописать путь к файлу dll

    Код:
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.Variant;
    ActiveXComponent objApplication = new ActiveXComponent("OtAut.OtApplication");
    Variant conRet = objApplication.invoke("MakeSessionEx", new Variant[]{
        new Variant(%Host%),
        new Variant(%Port%),
        new Variant(%Login%),
        new Variant(%Password%),
        new Variant("ru")
    });
    ActiveXComponent objSession = new ActiveXComponent(conRet.toDispatch());
    try {
        ActiveXComponent objRequest = objSession.invokeGetComponent("GetRequestByUniqueID", new Variant(1000902));
        System.out.println("Name : " + objRequest.getProperty("Name"));
        ActiveXComponent objField = objRequest.invokeGetComponent("UserFields", new Variant("Name"));
        System.out.println("OTHER NAME: " + objField.invoke("TValue").getString());
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        objSession.invoke("Logoff", new Variant[] {});
    }
    Python
    Для работы требуется библиотека pypiwin32 сам python 32x разрядны

    Код:
    from win32com.client import Dispatch
    from win32com.client import gencache
    # win32com/client/makepy.py в списке выбираем OmniTracker automation... после выполнения будет создана папка
    # SOME_DISK:/some_path/{Идентификатор} идентификатор используется при вызове EnsureModule
    gencache.EnsureModule('{BFC91F06-88ED-11D0-A77E-444553540000x0x1x0}', 0, 1, 7)
    application = Dispatch("OtAut.OtApplication")
    session = application.MakeSessionEx(%Host%, %Port%, "%Login%", "%Password%", "ru")
    # Поиск по папке нарядов
    folder = session.RequestFolders("Workorder")
    group_filter = folder.MakeFilter()
    # Рабочая группа OmniTracker
    group_filter.SetSpecialField("AssignmentGroup.UNIQUE_ID", 4850)
    for request in folder.Search(group_filter, False):
          print request.UserFields("Summary").TValue
    Ruby
    Для работы использовать класс WIN32OLE (http://ruby-doc.org/stdlib-1.9.3/lib.../WIN32OLE.html)

    Код:
    # coding: utf-8
    require 'win32ole'
    application =  WIN32OLE.new('OtAut.OtApplication')
    session = application.MakeSessionEx(%Host%, %Port%, "%Login%", "%Password%", "ru")
    folder = session.RequestFolders("Workgroups")
    filter = folder.MakeFilter()
    help = filter.setproperty('SpecialField', 'UNIQUE_ID', 26519050)
    folder.Search(filter, false).each { | x | puts x.Name.encode "UTF-8"}

    Последний раз редактировалось Ivan; 17-10-2016, 09:22.

  • #2
    Добавлю вариант на PowerShell
    И источник откуда сам смотрел) purple-screen.com/?p=104
    PHP код:
     Param (
        [
    Parameter(Mandatory $false)] # Must be Mandatory = $TRUE after test finished
            
    [int]$Number 76257,

        [
    Parameter(Mandatory $false)]
            [
    string]$Server 'omnit.ad.upc.intranet',
        
        [
    Parameter(Mandatory $false)]
            [
    int]$Port 5085,

        [
    Parameter(Mandatory $false)]
            [
    pscredential]$Credential,
        
        [
    Parameter(Mandatory $false)]
        [
    ValidateSet("ZNI""ZNO"'NRD')]
            [
    string]$Type "NRD"
    )

    function 
    Clear-Matches {
        if ((
    $Matches Measure-Object).Count -gt 0){
            
    $script:Matches $null
        
    # End If
    # End Function


    Switch ($Type){
        
    'ZNI'{[string]$Folder "01. Деятельность\03. ЗНО"}
        
    'ZNO'{[string]$Folder "01. Деятельность\04. ЗНИ"}
        
    'NRD'{[string]$Folder "Workorder"}
    # End Switch

    If (![string]::IsNullOrEmpty($Credential)){
        
    $OTLogin $Credential.UserName
        $OTPass 
    $Credential.GetNetworkCredential().Password
    # End If

    # Using parameters create Com Object and connect to Omnitracker Server
    $otApp = New-Object -ComObject OtAut.OtApplication
    $otApp
    .LoginTimeout 0
    $otSession 
    $otApp.MakeSession($Server$Port"$OTLogin""$OTPass")


    # Open Folder (ZNI, ZNO or NRD) and create filter
    #$otFolder = ($otFolders | ? Path -eq $Folder)
    $otFolder $otSession.RequestFolders where alias -eq $Folder
    $otFilter 
    $otFolder.MakeFilter()
    #$otFilter.SetSearchExpression("Number:$Number")
    $otFilter.Save() # ?Dont now what it mean?
    $otFilter.UserField("Number") = $Number 

    Комментарий


    • #3
      Уважаемый Ivan,
      можете плиз подтвердить, что для работы с omnitracker COM подходит только 32-х разрядный python?
      А то у меня в никакую не получается выполнить
      gencache.EnsureModule('{BFC91F06-88ED-11D0-A77E-444553540000x0x1x0}', 0, 1, 7) Заранее спасибо!

      Комментарий


      • #4
        64-bit python и 64-bit OtAut -
        С уважением, Сергей Осадчий

        Комментарий

        Обработка...
        X