Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

ru:technical_manual:work_via_ole:oleapplication [2017/10/12 16:17]
ru:technical_manual:work_via_ole:oleapplication [2023/03/16 12:20] (текущий)
Строка 1: Строка 1:
 +====== Класс "Система.OleApplication" ======
  
 +===== Метод ЗапуститьКлиентскоеПриложение =====
 +
 +**Синтаксис:** ЗапуститьКлиентскоеПриложение(string "<Сервер>", string "<База>", string "<Редакция>") 
 +
 +**Возвращаемый результат**: Система.КлиентскоеПриложение.Приложение (см. [[ru/technical_manual/work_via_ole/client_app]]).
 +
 +Метод позволяет запустить клиентское приложение или получить уже запущенное. Используется для запуска элементов пользовательского интерфейса. В качестве параметров передаются три строки: имя сервера БД, название базы,  редакция продукта - Ultimate, Enterprise, Professional, Cockpit. Версия продукта должна соответствовать имеющейся лицензии.
 +
 +Замечание: в качестве имени сервера и/или базы данных могут быть переданы пустые строки. В этом случае при запуске появится стандартное окно выбора базы данных. При каждом запуске без параметров "<Сервер>" или "<База>" будет создан новый экземпляр приложения, который необходимо будет завершить явно, используя метод класса Система.OleApplication ЗавершитьПриложение().
 +
 +**Пример кода**.
 +
 +__Задача__: запустить приложение Business Studio.
 +
 +<code>
 +Sub ПримерOLE_ЗапускПриложения()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции "РедакцияПрограммы" с базой под именем "ИмяБазы" на 
 +    сервере "ИмяСервера".
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +End Sub
 +</code>
 +
 +===== Метод ПолучитьКорневуюГруппуКласса =====
 +
 +**Синтаксис**: ПолучитьКорневуюГруппуКласса(string "<ИмяКласса>")
 +
 +**Возвращаемый результат**: Система.МетаКласс (см. [[ru/technical_manual/work_via_ole/metaclass]])
 +
 +Метод возвращает корневую группу класса по имени класса.
 +
 +**Пример кода**. См. метод "ОткрытьФайл" ([[ru/technical_manual/work_via_ole/oleapplication#метод_открытьфайл|Mетод ОткрытьФайл]]).
 +
 +===== Метод ПолучитьОбъекты =====
 +
 +**Синтаксис**: ПолучитьОбъекты(string "<ИмяКласса>", string "<ИмяПараметра>", object <ЗначениеПараметра>)
 +
 +**Возвращаемый результат**: Система.Список (см. [[ru/technical_manual/work_via_ole/list]]).
 +
 +Возвращает список объектов класса, указанный параметр которых равен заданному значению.
 +
 +**Пример кода**. См. методы РедактироватьОбъект ([[ru/technical_manual/work_via_ole/oleapplication#метод_редактироватьобъект|Mетод РедактироватьОбъект]]) и СоздатьОбъект ([[ru/technical_manual/work_via_ole/oleapplication#метод_создатьобъект|Mетод СоздатьОбъект]]).
 +
 +===== Метод ВыбратьОбъект =====
 +
 +**Синтаксис**: ВыбратьОбъект(object <Объект>)
 +
 +**Возвращаемый результат**: Система.МетаКласс (см. [[ru/technical_manual/work_via_ole/metaclass]]).
 +
 +Метод для выбора объекта с использованием окна выбора.
 +
 +**Пример кода**. См. метод "ОткрытьФайл" ([[ru/technical_manual/work_via_ole/oleapplication#метод_открытьфайл|Mетод ОткрытьФайл]]).
 +
 +===== Метод РедактироватьОбъект =====
 +
 +**Синтаксис**: РедактироватьОбъект(object <Объект>)
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Метод для редактирования объекта с использованием окна редактирования. Окно редактирования при этом является модальным.
 +
 +**Пример кода.**
 +
 +__Задача__: открыть на редактирование окно свойств заданного показателя.
 +
 +<code>
 +Sub ПримерOLE_РедактированиеОбъекта()
 +
 +   'БД и редакция Business Studio, с которыми будем работать
 +
 +   СерверБД = "ИмяСервера"
 +
 +   База = "ИмяБазы"
 +
 +   Редакция = "РедакцияПрограммы"
 +
 + 
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 + 
 +
 +   'Запустить Business Studio в той редакции и с выбором того сервера и базы, какие указаны ранее.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение(СерверБД, База, Редакция)
 +
 +   'В панели задач появится приложение
 +
 +   'Данное действие приводится для наглядности и не является обязательным
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Получить список всех показателей с заданным названием
 +
 +   НазваниеПоказателя = "Процент запасов, запланированных к выдаче"
 +
 +   Set СписокПоказателей = oleapp.ПолучитьОбъекты("БизнесМодель.ПоказателиBSC", "Название", НазваниеПоказателя)
 +
 + 
 +
 +   'Если в списке полученных показателей всего один элемент
 +
 +   If(СписокПоказателей.КоличествоЭлементов = 1) Then
 +
 +         'Тогда взять первый элемент списка
 +
 +         Set НужныйПоказатель = СписокПоказателей.Item(0)
 +
 +         'И открыть на редактирование окно свойств выбранного показателя
 +
 +         oleapp.РедактироватьОбъект (НужныйПоказатель)
 +
 +      Else
 +
 +         'Иначе вывести сообщение, что таких показателей несколько
 +
 +         MsgBox "Существует несколько показателей '" + НазваниеПоказателя + "'."
 +
 +      End If
 +
 +End Sub
 +</code>
 +
 +===== Метод ВыполнитьКоманду =====
 +
 +**Синтаксис**: ВыполнитьКоманду(string "<Команда>", object <Аргументы>)
 +
 +**Возвращаемый результат**: object (в зависимости от выполняемой команды)
 +
 +Метод запускает команду на исполнение. Примеры команд см. [[ru/manual/manual]], глава [[ru/manual/administration/cmd_line]]. Если требуется выполнить команду, в которой нет аргументов, то на месте пустого аргумента следует вставлять значение с пустым значением - Null, Nothing или другие значения, предопределенные конкретным языком программирования.
 +
 +**Пример кода.**
 +
 +__Задача__: открыть окно объектной модели.
 +
 +<code>
 +Sub ПримерOLE_ВыполнитьКоманду()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 +   'Открыть окно объектной модели (Справочники → Объектная модель)
 +
 +   Set object_model = oleapp.ВыполнитьКоманду("База.КлиентскиеМетоды.ВыполнитьФорму", "База.ФормаОписаниеОбъектнойМодели")
 +  
 +End Sub
 +</code>
 +
 +
 +===== Метод ВыбратьКласс =====
 +
 +**Синтаксис**: ВыбратьКласс()
 +
 +**Возвращаемый результат**: string
 +
 +Метод для выбора класса с использованием окна выбора. Возвращает строкой системное название выбранного класса.
 +
 +**Пример кода.**
 +
 +__Задача__: открыть окно выбора справочников.
 +
 +<code>
 +Sub ПримерOLE_ВыбратьКласс()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 +   'Открыть окно для выбора справочников (Справочники -> Все справочники)
 +
 +   class_select = oleapp.ВыбратьКласс()
 +
 +End Sub
 +</code>
 +
 +===== Метод СоздатьОбъект =====
 +
 +**Синтаксис**: СоздатьОбъект(object <Группа>)
 +
 +**Возвращаемый результат**: Система.МетаКласс (см. [[ru/technical_manual/work_via_ole/metaclass]]).
 +
 +Метод создает объект - потомок по иерархии в группе. Для добавления элементов в списках нужно использовать метод "Добавить" класса "Система.Список" (см. [[ru/technical_manual/work_via_ole/list#метод_добавить|Mетод Добавить]]).
 +
 +Структуры объекта (например, "Параметры должности", "Параметры подразделения", "Параметры СМК") создаются только вместе с объектом. Обращаться к ним надо через объект.
 +
 +**Пример кода.**
 +
 +__Задача__: в папке "Функциональные объекты\Документы\Бумажный документ\Документы СМК" создать документ и заполнить некоторые его свойства, в том числе и параметры СМК.
 +
 +<code>
 +Sub ПримерOLE_СоздатьОбъект()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Указываем папку (не корневую), в которой будет создаваться объект
 +
 +   'В данном примере требуемая папка задается через guid, соответствующий папке "Документы СМК" в демо-базе
 +
 +   Set СписокПапкаБумДока = oleapp.ПолучитьОбъекты("БизнесМодель.БумажныйДокумент", "guid", "fb366191-6c0b-4e06-8ccf-ebe219dd2bfd")
 +
 +   Set ПапкаНужная = СписокПапкаБумДока.ПолучитьЭлемент(0)
 +
 + 
 +
 +   'Создать новый бумажный документ в заданной папке
 +
 +   Set НовБумДокумент = oleapp.СоздатьОбъект(ПапкаНужная)
 +
 + 
 +
 +      'Заполняем название документа и его параметры
 +
 +      НовБумДокумент.Название = "Документ через OLE"
 +
 +      НовБумДокумент.КодДокумента = "OLE-1"
 +
 +      НовБумДокумент.Комментарий = "Документ создан средствами OLE"
 +
 + 
 +
 +         'Заполняем объектный параметр "Тип документа"
 +
 +         ТребуемыйТипДока = "Запись"
 +
 +         Set ТипыДоковСТребуемымТипом = oleapp.ПолучитьОбъекты("БизнесМодель.ТипыДокумента", "Название", ТребуемыйТипДока)
 +
 +         НовБумДокумент.ТипДокумента = ТипыДоковСТребуемымТипом.ПолучитьЭлемент(0)
 +
 + 
 +
 +         'Заполняем параметры СМК, которые являются структурой
 +
 +         Set ПараметрыСМК = НовБумДокумент.ПараметрыСМК
 +
 +         ПараметрыСМК.ВерсияДокумента = "1.0"
 +
 +         ПараметрыСМК.ОбластьРаспространенияДокумента = 0 ' Внутренний
 +
 +         ПараметрыСМК.СтатусДокумента = 1 'Действующий
 +
 +         ПараметрыСМК.НеобходимостьАктуализации = True 'Логический параметр: True, False
 +
 + 
 +
 +         'Задаем параметры типа дата в Параметрах СМК
 +
 +         Set ДатаВВедения = ПараметрыСМК.НайтиПараметр("ДатаВведенияВДействие")
 +
 +         ДатаВВедения.Значение = CDate(Now) ' Сегодня
 +
 + 
 +
 +         Set ПересмотрПлан = ПараметрыСМК.НайтиПараметр("ДатаПересмотраПлан")
 +
 +         ПересмотрПлан.Значение = CDate("07.12.2012")
 +
 + 
 +
 +   'Сохранить созданный бумажный документ, иначе его не будет видно
 +
 +   НовБумДокумент.Сохранить
 +
 + 
 +
 +End Sub
 +</code>
 +
 +===== Метод СоздатьГруппу =====
 +
 +**Синтаксис**: СоздатьГруппу (или СоздатьПапкуИлиГруппу) (object <Группа>), 
 +
 +**Возвращаемый результат**: Система.МетаКласс (см. [[ru/technical_manual/work_via_ole/metaclass]])
 +
 +Метод создает группу - потомок по иерархии в группе. Если объект является папкой - он может содержать другие объекты ниже по иерархии.
 +
 +**Пример кода.**
 +
 +__Задача__: в бумажных документах создать папку. 
 +
 +<code>
 +Sub ПримерOLE_СоздатьГруппу()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Дальше обращение будет с бумажными документами
 +
 +   Set БумДокументы = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.БумажныйДокумент")
 +
 + 
 +
 +   'Создать группу (папку) в бумажных документах
 +
 +   Set НоваяГруппа = oleapp.СоздатьГруппу(БумДокументы)
 +
 +      'Заполняем название папки
 +
 +      НоваяГруппа.Название = "Папка через OLE"
 +
 + 
 +
 +   'Сохранить созданную папку, иначе её не будет видно
 +
 +   НоваяГруппа.Сохранить
 +
 + 
 +
 +End Sub
 +</code>
 +
 +===== Метод ОткрытьФайл =====
 +
 +**Синтаксис**: ОткрытьФайл(object <Объект>)
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Метод открытия файла закрепленного за объектом, если объект его содержит. В случае, если файла нет, то будет выдано соответствующее сообщение.
 +
 +**Пример кода.**
 +
 +__Задача 1__: открыть справочник бумажных документов и после выбора пользователем одного из документов открыть файл, закрепленный за ним.
 +
 +<code>
 +Sub ПримерOLE_ОткрытьФайлСУчастиемПользователя()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Дальнейшее обращение будет с бумажными документами
 +
 +   Set БумДокументы = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.БумажныйДокумент")
 +
 + 
 +
 +   'Открываем окно выбора бумажного документа и ждем выбор пользователя
 +
 +    Set Документ = oleapp.ВыбратьОбъект(БумДокументы)
 +
 +      'BS открывает файл выбранного объекта
 +
 +      'или выдает сообщение, что к объекту файл не прикреплен
 +
 +      oleapp.ОткрытьФайл (Документ)
 +
 + 
 +
 +End Sub
 +</code>
 +
 +__ __
 +
 +__Задача 2__: открыть файл бумажного документа "Акт выполненных работ".
 +
 +<code>
 +Sub ПримерOLE_ОткрытьФайлБезУчастияПользователя()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Получить список всех объектов, у которых guid = myguid
 +
 +   'myguid соответствует документу "Акт выполненных работ"
 +
 +   myguid = "6bc61f07-2181-4e26-94c0-8cc9d2b805a3"
 +
 +   Set СписокБумДокументы = oleapp.ПолучитьОбъекты("БизнесМодель.БумажныйДокумент", "guid", myguid)
 +
 + 
 +
 +   'Если в списке полученных объектов всего один элемент
 +
 +   If (СписокБумДокументы.КоличествоЭлементов = 1) Then
 +
 +         'Тогда взять первый элемент списка бумажных документов
 +
 +         Set НужныйБумДокумент = СписокБумДокументы.Item(0)
 +
 + 
 +
 +         'И открыть файл выбранного объекта
 +
 +         'или выдает сообщение, что к объекту файл не прикреплен
 +
 +         oleapp.ОткрытьФайл (НужныйБумДокумент)
 +
 + 
 +
 +       Else
 +
 + 
 +
 +         'Иначе выбрать вывести сообщение, что таких объектов несколько
 +
 +         MsgBox "Существует несколько объектов с guid = '" + myguid + "'."
 +
 +   End If
 +
 + 
 +
 +End Sub
 +</code>
 +
 +===== Метод ПоказатьКлиентскоеПриложение =====
 +
 +**Синтаксис**: ПоказатьКлиентскоеПриложение()
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Метод показывает текущий экземпляр Business Studio и отображает его в панели задач.
 +
 +**Пример кода**. См. код во всех методах данного класса.
 +
 +===== Метод ЗавершитьПриложение =====
 +
 +**Синтаксис**: ЗавершитьПриложение()
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Метод выгружает экземпляр Business Studio из памяти.
 +
 +**Пример кода**.
 +
 +__Задача__: открыть и закрыть Business Studio.
 +
 +<code>
 +Sub ПримерOLE_ЗавершитьКлиентскоеПриложение()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", " ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 +   'Закрыть окно Business Studio
 +
 +   app_exit = oleapp.ЗавершитьПриложение()
 +
 +End Sub
 +</code>
 +
 +
 +
 +
 +
 +[<contextnavigator>]
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +{(rater>id=ru_technical_manual_work_via_ole_oleapplication|name=Класс "Система.OleApplication"|type=vote|trace=ip|headline=off)}
Driven by DokuWiki