Интеграция DIRECTUM со сторонними системами 

Алексей Мельников
Дата создания: 21 июля 2011 в 16:55

Данная статья продолжает цикл статей для начинающего разработчика на ISBL.

Предыдущие статьи:

  1. Общие сведения о разработке на IS-Builder;
  2. Язык ISBL;
  3. Типовые варианты использования функций ISBL;
  4. Основы работы с объектной моделью IS-Builder;
  5. Разработка на ISBL. Постановка задачи;
  6. Разработка справочников в Directum;
  7. Работа с наборами данных справочников;
  8. Разработка новых типов карточек электронных документов;
  9. Поиски edms-объектов;
  10. Разработка сценариев.
  11. Разработка отчетов.
  12. Настройка типовых маршрутов.
  13. Настройка типовых маршрутов. Часть 2.

В этой статье вы узнаете о всех интеграционных возможностях системы DIRECTUM, каким-образом работать с объектной моделью системы DIRECTUM извне и как из ISBL обращаться к внешним COM-объектам.

Теория

Как уже говорилось в статье Язык ISBL большим преимуществом языка ISBL является возможность работы с внешними COM-объектами. Для этого достаточно вызвать функцию CreateObject() и передать ей имя объекта.

Пример:

  // Получить объект "1С: Предприятие 8.1"
  V81Application = CreateObject("V81.Application")

После этого с переменной V81Application можно работать как с объектом приложения «1С: Предприятия», вызывая его методы и свойства:

  // Параметры подключения к системе «1С: Предприятие 8.1»
  ConnectionParams = “File=D:\1c81\DB;Usr=User1;Pwd=12345”
  // Выполнить подключение к системе «1С: Предприятие 8.1»
  V81Application.Connect(ConnectionParams) 

Если же внешняя система не поддерживает технологию COM, то из DIRECTUM можно обращаться к функциям библиотек dll или вызывать внешнее приложение с указанием параметров командной строки.

Пример запуска командной строки:

  // Запустить файл в "блокноте"
  ExecuteProcess("C:\Windows\notepad.exe C:\Readme.txt")

С объектами IS-Builder тоже можно работать из внешних языков и сред, поддерживающих технологию COM.

Для доступа к DIRECTUM используются 2 библиотеки:

  • SBLogon Library. Используется для аутентификации и подключения к DIRECTUM;
  • Sbrte Library. Реализует все объекты DIRECTUM.

Общая схема подключения к DIRECTUM извне выглядит так:

  • Создаем объект SBlogon.LoginPoint.
  • Получаем объект IApplication, вызвав метод GetApplication или GetApplicationEx объекта SBlogon.LoginPoint.

Пример, как из 1С можно открыть карточку записи справочника DIRECTUM «Программное обеспечение» (данный справочник рассматривался в статье Разработка справочников в DIRECTUM):

  // Создать подключение к системе DIRECTUM
  LoginPoint = GetCOMObject("", "SBLogon.LoginPoint");
  DirectumApplication = LoginPoint.GetApplication("SystemCode=DIRECTUM");
  // Открыть запись справочника «Программное обеспечение» с ИД = 108729 (это запись "1С: Предприятие 8.1")
  Software = DirectumApplication.ReferencesFactory.ReferenceFactory("Software").GetObjectByID(108729)
  Software.Form.ShowNoModal

Если из внешней системы нельзя работать с COM-объектами, то существует возможность вызова компонент системы DIRECTUM (сценарии, отчеты и т.д.) через командную строку.

Весь этот функционал дает возможность интегрироваться системе DIRECTUM с другими системами.

Возможны следующие виды интеграции:

  • синхронизация справочников. Справочники заполняются в одной системе, затем синхронизируются в другую систему. Варианты реализации могут быть следующие:
    • периодическая синхронизация;
    • синхронизация при сохранении записи (realtime-синхронизация);
  • сохранение отчетов в качестве электронных документов DIRECTUM.
  • связывание записей справочников/учетных документов и электронных документов DIRECTUM для облегчения поиска.
  • отправка записей справочников/учетных документов как вложения в задачи DIRECTUM.

Для реализации этих возможностей можно воспользоваться набором средств интеграции DIRECTUM, который представляет собой инфраструктуру и набор готовых решений для интеграции с определенными системами сторонних производителей, например, с 1С:Предприятие, Dynamics AX и т.д.

Практика

В статье Настройка типовых маршрутов. Часть 2 рассматривали типовой маршрут «Согласование запроса на назначение прав доступа», в котором есть блок - задание администратору на создание пользователей в других системах.

Сейчас администратору при получении задания приходится заходить в необходимую систему, создавать там нового пользователя, заполнять его данные и выдавать права.

Этот процесс можно автоматизировать. Например, создавать пользователя в другой системе и заполнять некоторые данные автоматически.

Рассмотрим пример создания пользователя в системе 1С: Предприятие:

Добавим в карточке справочника «Права доступа работников на ПО» кнопку «Создать пользователя в 1С», при нажатии на которую будет создаваться новый пользователь в системе «1С: Предприятие» и открываться его карточка с заполненными полями «Краткое имя» и «Полное имя».

Тогда, когда администратору приходит задание для создания пользователя в других системах, он открывает из вложения запись справочника «Права доступа работников на ПО» и нажимает кнопку «Создать пользователя в 1С».

Такую кнопку можно сделать для создания пользователя в любой системе.

Итак, чтобы создать кнопку, откроем компоненту «Типы справочников». Найдем тип справочника «Права доступа работников на ПО» и откроем его карточку. В табличной части на закладке «Действия» добавим новую строку. Заполним имя и заголовок:

Теперь нужно задать вычисление этого действия.

Создание пользователя в 1С будет состоять из следующих этапов:

  1. Запрос параметров подключения к базе данных системы 1С.
  2. Подключение к базе данных системы 1С.
  3. Создание нового пользователя и заполнение необходимых реквизитов.
  4. Открытие карточки этого пользователя.

Рассмотрим каждый из этих этапов.

Запрос параметров подключения к базе данных системы 1С.

Для запроса параметров подключения используется функция InputDialogEx(), которая позволяет выдать диалог пользователю для ввода необходимых параметров:

  BASE_PATH_AUTH_INDEX = 1
  WINDOWS_AUTH_INDEX = 2
  USER_NAME_INDEX = 3
  PASSWORD_INDEX = 4
  BUTTON_INDEX = 5
  AUTHORIZATION_DELIMITER = "|"
  
  // Запросить пользователя 1С
  CaptionStr = LoadString('DIR6BFA9D8B_292B_4826_BEBE_57F956E92098'; 'COMMON') // Авторизация в системе 1С:Предприятие
  BasePathStr = "Каталог информационной базы 1С"
  WindowsAuthenticationStr = LoadString('DIRCCF42975_585F_4367_A20E_1B7764A7BD43'; 'COMMON') // Использовать windows-аутентификацию
  UserNameStr = LoadString('DIRF9F460C1_F1BC_4ACC_8D6B_9B4A9028EE5F'; 'COMMON') // Имя пользователя
  PasswordStr = LoadString('DIRC6964660_1084_4E06_AEA9_A380EA12F84A'; 'COMMON') // Пароль
  OKButtonStr = LoadString('DIRSTR_OK'; 'COMMON') // ОК
  CancelButtonStr = LoadString('DIRSTR_CANCEL_1'; 'COMMON') // Отмена

  // Запрос имени пользователя и пароля
  Buttons = Format("%s|%s"; ArrayOf(OKButtonStr; CancelButtonStr))
  Labels = Format("*%s|%s|%s|%s"; ArrayOf(BasePathStr; WindowsAuthenticationStr; UserNameStr; PasswordStr))
  Types = "Строка:100|Признак:Да,Нет:Ч|Строка:35|Строка:35"
  DefaultValues = Format("|%s||"; 
    IfThen(Application.Connection.OSAuthentification; YES_VALUE; NO_VALUE))
  AuthorizationResult = InputDialogEx(Labels; DefaultValues; Types; CaptionStr; ; ; ; Buttons; OKButtonStr; CancelButtonStr)
  BasePath = SubString(AuthorizationResult; AUTHORIZATION_DELIMITER; BASE_PATH_AUTH_INDEX) 
  WindowsAuth = SubString(AuthorizationResult; AUTHORIZATION_DELIMITER; WINDOWS_AUTH_INDEX) 
  UserName = SubString(AuthorizationResult; AUTHORIZATION_DELIMITER; USER_NAME_INDEX)
  Password = SubString(AuthorizationResult; AUTHORIZATION_DELIMITER; PASSWORD_INDEX)
  ButtonResult = SubString(AuthorizationResult; AUTHORIZATION_DELIMITER; BUTTON_INDEX) 

Диалог будет выглядеть следующим образом:

Подключение к базе данных системы 1С.

Для подключения к 1С создается соответствующий COM-объект:

  CONNECTION_PARAMS_DELIMITER = ";"
  ConnectionParams = Format("File=%s"; BasePath)
  if WindowsAuth == NO_VALUE 
    ConnectionParams = AddSubString(Format("Usr=%s;Pwd=%s"; ArrayOf(UserName; Password)); ConnectionParams; CONNECTION_PARAMS_DELIMITER)
  endif           
  // Подключиться к системе 1С: Предприятие 
  V81App = CreateObject("V81.Application")
  V81App.Connect(ConnectionParams)

Создание нового пользователя и заполнение необходимых реквизитов.

  // Создать нового пользователя
  UsersRef = V81App.Catalogs.Пользователи
  NewUser = UsersRef.CreateItem()
  // Заполнить поле "Краткое имя" значением поля "Логин" записи справочника Права доступа работников на ПО
  NewUser.Код = Object.Реквизит
  // Заполнить поле "Полное имя" значением поля "Фамилия И.О." работника
  NewUser.Наименование = GetRequisiteValueAsString("РАБ"; Object.Работник; "Дополнение")

Открытие карточки созданного пользователя.

  NewUser.GetForm().DoModal()

После этого добавляем новую кнопку на форму:

Теперь при нажатии на кнопку «Создать пользователя в 1С» будет создаваться пользователь в системе 1С и открываться его карточка, чтобы администратор мог назначить ему необходимые права в системе:

Пакет разработки для Directum  версии 4.7 прилагается:

Dev.zip (18,49 Кб)

понравилась 7 пользователям

Находится в рубриках:
Комментарии (2)
Комментарии доступны только для зарегистрированных пользователей.




Теги
4.7 4.8 awards isbl is-builder sql server бизнес-решение введение в is-builder видео дайджест документ интеграция клик настройка отчет разработка сообщество справочник сценарий функция
показать все теги