Работа в Python

Язык Python является универсальным языком, поддерживает выполнения кода на других языках таких как Java, C и C#. Подобная совместимость также позволяет работать и с кодом на языке Fore.NET. Для взаимодействия с Python в «Форсайт. Аналитическая платформа» был создан специальный набор внешних библиотек. Данные библиотеки позволяют работать с ядром «Форсайт. Аналитическая платформа».

Подключение сборок

В коде пропишите строку импорта типов из внешней сборки в одном из следующих форматов:

from foresight.<Имя модуля> import * #Импорт всех классов/интерфейсов библиотеки.
from foresight.<Имя модуля> import <имя класса> #Импорт конкретного класса/интерфейс.
import foresight.<Имя модуля> as <переменная> #Импорт класса под определенным именем.

Преобразование кода

При создании внешних сборок для использования в Python происходит специальное преобразование системных классов, интерфейсов, перечислений и других типов. При создании кода на Python с использованием ресурсов «Форсайт. Аналитическая платформа» необходимо учитывать следующие изменения:

  1. Свойствам сопоставлены методы в следующих форматах: get_<имя свойства>([<параметры>]) и put_<имя свойства>(<значение>). Get возвращает значение свойства, а Put устанавливает указанное значение.

  2. К именам классов добавлена буква C, например: классу MetabaseManagerFactory в Fore соответствует CMetabaseManagerFactory в Python.

  3. Для создания объекта нужно класса используется конструкция <Имя класса>.Create() или <Имя класса>.Create<имя интерфейса>() без ключевого слова new.

  4. Для приведения типов необходимо передавать имеющийся объект как параметр, например:

import foresight.metabase as modmetabase
...
creds = pack.CreateCredentials(amPassword)
pswdCreds = modmetabase.IPasswordCredentials(creds)

Пример

Пример подключения к репозиторию в коде на Python:

def ConnectMB():
    import foresight.metabase as modmetabase #Импорт содержимого всей сборки
    mbFactory = modmetabase.CMetabaseManagerFactory.Create()
    mbMan = mbFactory.Active
    mbDefs = mb_man.Definitions
    mbDefs.ReadFromRegistry()
    mbDef = mbDefs.FindById(FPRepository)
    pack = mbDef.SecurityPack
    creds = pack.CreateCredentials(modmetabase.amPassword)
    pswdCreds = modmetabase.IPasswordCredentials(creds)
    pswdCreds.UserName = 'user'
    pswdCreds.Password = 'password'
    mb = mbDef.OpenDefault(pswdCreds)
    print(mb.Name)
 
if __name__ == '__main__':

    ConnectMB()

См. также:

Использование ресурсов продукта в сторонних приложениях