Язык Python является универсальным языком, поддерживает выполнения кода на других языках таких как Java, C и C#. Подобная совместимость также позволяет работать и с кодом на языке Fore.NET. Для взаимодействия с Python в «Форсайт. Аналитическая платформа» был создан специальный набор внешних библиотек. Данные библиотеки позволяют работать с ядром «Форсайт. Аналитическая платформа».
В коде пропишите строку импорта типов из внешней сборки в одном из следующих форматов:
from foresight.<Имя модуля> import * #Импорт всех классов/интерфейсов библиотеки.
from foresight.<Имя модуля> import <имя класса> #Импорт конкретного класса/интерфейс.
import foresight.<Имя модуля> as <переменная> #Импорт класса под определенным именем.
При создании внешних сборок для использования в Python происходит специальное преобразование системных классов, интерфейсов, перечислений и других типов. При создании кода на Python с использованием ресурсов «Форсайт. Аналитическая платформа» необходимо учитывать следующие изменения:
Свойствам сопоставлены методы в следующих форматах: get_<имя свойства>([<параметры>]) и put_<имя свойства>(<значение>). Get возвращает значение свойства, а Put устанавливает указанное значение.
К именам классов добавлена буква C, например: классу MetabaseManagerFactory в Fore соответствует CMetabaseManagerFactory в Python.
Для создания объекта нужно класса используется конструкция <Имя класса>.Create() или <Имя класса>.Create<имя интерфейса>() без ключевого слова new.
Для приведения типов необходимо передавать имеющийся объект как параметр, например:
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()
См. также: