Это старая версия документа.


Сценарии работы с Business Studio через OLE

Пример синхронизации справочника сотрудников с внешним хранилищем

Список сотрудников будет находиться в файле MS Excel (Таблица 1). Пример приведен на языке программирования VBA.

Фамилия Имя Отчество Дата рождения р.тел e-mail
Иванов Иван Иванович 29.09.1969 202-19-00 name@firma.ru
Петров Петр Петрович 04.05.1978 202-19-01 name2@firma.ru
Таблица 1. Структура файла Excel со списком сотрудников
Sub СинхронизацияФизЛиц()
 
    Set appEx = Application
 
    Dim i As Integer
 
    Dim Фамилия, Имя, Отчество, ДатаРождения, РабочийТелефон As String
 
 
 
    e.OleApplication")
 
    ' Иницита приложения
 
    Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 
       Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("<Имя_сервера_БД>", "<Имя_базы>", "<Редакция_продтся имя сервера, название базы,  версия продукта
 
    Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("<Имя_сервера_БД>", "<Имя_базы>", "<Редакция_продукта>")
 
       
 
        ' Получение корневой группы класса Типуппы класса Физлиц
 
    Set ОПУ_ФЛ = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.ФизЛица")
 
    (0)
 
 
 
    i = 2
 
    While appEx.Cells(i, 1) <> ""ласса Контактов физлиц
 
    Set ОПУ_Контакты = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.КонтактыФизЛиц")
 
   
 
    , 5))
 
        ЭлектроннаяПочта = CStr(appEx.Cells(класса Типов контактов
 
    Set списокТипов = oleapp.ПолучитьОбъекты("БизнесМодель.ТипыКонтактов", "Название", "Рабочий телефон")
 
    Set типРабочийТелефон = списокТипов.ПолучитьЭлемент(0)
 
 
 
    i = 2
 
    While appEx.Cells(i, 1) <> ""
 
        Фамилия = CStr(appEx.Cells(i, 1))
 
        Имя = CStr(appEx.Cells(i, 2))
 
        Отчество = CStr(appEx.Cells(i, 3))
 
        ДатаРождения = CStr(appEx.Cells(i, 4))
 
        РабочийТелефон = CStr(appEx.Cells(i, 5))
 
        ЭлектроннаяПочта = CStr(appEx.Cells(i, 6))
 
       
 
        ОПУ_ФЛ)
 
            фл.Фамилия = Фао классу Физлиц
 
        Set фильтрФЛ = ОПУ_ФЛ.СоздатьФильтр
 
        
 
            пар.Значение = CDate(ДатаРождения)
 
        Else
 
            ' если фмилии, Имени, Отчеству, Дате рождения
 
        фильтрФЛ.Условия.Параметры.Фамилия.Значение = Фамилия
 
        фильтрФЛ.Условия.Параметры.Имя.Значение = Имя
 
        фильтрФЛ.Условия.Параметры.Отчество.Значение = Отчество
 
        фильтрФЛ.Условия.Параметры.ДатаРождения.Значение = CDate(ДатаРождения)
 
        у - владельцу контакта
 
            ФильтрКонтакты.Условия.Параметры.Владелец.ТипФильтрации = 3 ' по Фамилией, Именем, Отчеством, Датой рождения
 
        Set списокФЛ = фильтрФЛ.Выполнить
 
             Set списокКонтактов = ент Физлицо
 
        If списокФЛ.КоличествоЭлементов = 0 Then
 
            создаем новый элемент в списке контактов фо - создаем новое
 
            Set фл = oleapp.СоздатьОбъект(ОПУ_ФЛ)
 
            фл.Фамилия = Фамилия
 
            фл.Имя = Имя
 
            фл.Отчество = Отчество
 
            Set пар = фл.НайтиПараметр("ДатаРождения")
 
            пар.Значение = CDate(ДатаРождения)
 
      

Пример создание субъекта и работа с ним

Sub ДругиеПримеры()
 
    Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 
    ентского приложения, в качестве параметров передаются имя сервера, название базы,  версия продукта
 
    Set Client_appредаются имя сервера, название базы,  версия продукта
 
    Set Client_app = oleapp.ЗапуститьКлиентскоеПриложение("<Имя_сервера_БД>", "<Имя_базы>", "<Редакция_продукта>")
 
 
 
    
   Set НовыйСубъект = oleapp.СоздатьОбъеккта и работы с ним
 
   Set СубъектКорень = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.Субъекты")
 
   Set ВыбранныйСубъект = oleapp.ВыбратьОбъект(СубъектКорень)
 
   Set НовыйСубъект = oleapp.СоздатьОбъект(ВыбранныйСубъект)
 
    тПоGUID = СубъектКорень.СоздатьФильтр
 
    ФильтрСубъектПоGUID.Условия.Парамются обязательными для субъектов
 
   НовыйСубъект.Название = "НазваниеНовогоСубъекта"
 
   НовыйСубъект.ТипСубъекта = 1    атФильтра.ПолучитьЭлемент(0)
 
    Else
 
     MsgBox "Субъсм. Объектную модель)
 
   НовыйСубъект.Сохранить
 
 
 
  ‘Если названия субъектов повторяются - используем для идентификации guid
 
    а = НовыйСубъект.GUID
 
    Set ФильтрСубъектПоGUID = СубъектКорень.СоздатьФильтр
 
    ФильтрСубъектПоGUID.Условия.Параметры.GUID.Значение = а
 
    ФильтрСубъектПоGUID.ВключатьПодгруппы = True
 
    Set РезультатФильтра = ФильтрСубъектПоGUID.Выполнить
 
    If (РезультатФильтра.КоличествоЭлементов > 0) Then
 
        Set СубъектПоGUID = РезультатФильтра.ПолучитьЭлемент(0)
 
    Else
 
     MsgBox "Субъект с guid=а("БизнесМодель.usr_Класен."
 
    End If
 
 
 
.СоздатьФильтр 
 
    Set Объия константы
 
   Set конст = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.Константы")
 
   Руководитель = конст.РуководительОрганизации
 
 
 
звание"
 
    'Парам1 = Элемент.Название - так можно только длого создать группу и связь
 
    Set ГруппаПУ = oleapp.ПолучитьКорневуюГруппуКласса ("БизнесМодель.Группы")
 
    Set Группа = oleapp.СоздатьОбъект(ГруппаПУ)
 
    Группа.Название = "Группа_1"
 
    Группа.Сохранить
 
   Set СвязиГруппыАнализаПУ = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.СвязиГруппАнализа")
 
    Set ОбъектСвязь = oleapp.СоздатьОбъект(СвязиГруппыАнализаПУ)
 
    ОбъектСвязь.ГруппаАнализа = Группа
 
    ОбъектСвязь.Справочник = ВыбранныйСубъект
 
    ОбъектСвязь.Сохранить
 
 
 
.Значение
 
 
 
'Перебрать все параметры:
 
    Параметры = "Параметры: "
 
     For Each парам In Объект.Параметры
 
        Параметры = авочник  "БизнесМодель.usr_Класс" содержит несколько записей.
 
    Set Объект = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.usr_Класс")
 
    Set Фильтр = Объект.СоздатьФильтр 
 
    Set Объекты = Фильтр.Выполнить   Отчество.Значение = "Петросправочник
 
    col = Объекты.Count   сокФЛ.КоличествоЭлементов > 0) Then
 
      Sв этом справочнике
 
    Set Элемент = Объекты.Item(0) итьКорневуюГруппуКласса("БизнесМодель.Физлица_Субъе.ПолучитьЭлемент(0)
 
   p.СоздатьОбъект(ФизлицаСубъектов)
 
      ФизЛицоСй параметр "Название"
 
    оСубъекта.Физлицо = ФЛ
 
      ФизЛицоСубъекта.Сохранить
 
   Else
 
    лько для системых параметров
 
    Парам1 = Элемент.Параметры.Item("Название").Значение
 
    излицСубъектов.Условия.Параметры.Физлицо.Значение = ФЛ
 
    ФильтрФизлицСуитьЭлемент("Название").Значение
 
      Set СписокФизлицСубъектов = ФильтрФизлицСубъектов.Выполнить
 
     For Each ФизЛицоСубълеКласса" простого типа (вещественный)
 
    Парам2 = Элемент.Параметры.Item("usr_полеКласса").Значение
 
    
 
 
End Sub

 

Здесь <Имя_сервера_БД> - имя сервера базы данных, <Имя_базы> - название базы данных, <Редакция_продукта> - Enterprise, Professional или Cockpit. Редакция продукта должна соответствовать имеющейся лицензии, иначе запуск приложения не удастся.

Возможные сообщения об ошибках

Невозможность соединения с удаленным сервером

Одна из возможных причин, по которой может появиться сообщение вида "Ошибка при обращении к службе брокера: Невозможно соединиться с удаленным сервером", это отсутствие запущенной службы BS_PingHost на локальной машине (см. Работа с Business Studio через OLE, а также Доступ к службе сервера лицензий).

« ПредыдущаяНа уровень вышеСледующая »
Актуальные новости, публикации и практики для бизнес-архитекторов и аналитиков
Driven by DokuWiki