Различия

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

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

ru:technical_manual:work_via_ole:metaclass [2017/04/21 15:00]
ru:technical_manual:work_via_ole:metaclass [2023/03/16 12:20] (текущий)
Строка 1: Строка 1:
 +====== Класс "Система.МетаКласс" ======
  
 +К классу "Система.МетаКласс" относится любой объект системы.
 +
 +===== Свойство ИмяПараметра =====
 +
 +**Свойство**: <ИмяПараметра>
 +
 +**Тип параметра**: object (соответствует типу параметра в Объектной модели).
 +
 +Обращение к значениям (параметрам) объектов осуществляется по имени параметра из объектной модели Business Studio.
 +
 +**Пример кода**.
 +
 +__Задача__: вывести сообщение о заданном показателе, а также некоторые его параметры.
 +
 +<code>
 +Sub ПримерOLE_РаботаСПараметрами()
 +
 + 
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Обращаемся к показателю с заданным названием
 +
 +   ИмяПоказателя = "Издержки на запасы (% от общих издержек)"
 +
 +   Set СписокПоказателей = oleapp.ПолучитьОбъекты("БизнесМодель.ПоказателиBSC", "Название", ИмяПоказателя)
 +
 +   Set МойПоказатель = СписокПоказателей.ПолучитьЭлемент(0)
 +
 + 
 +
 +   'Считываем параметрам показателя
 +
 +   ЦельДата = МойПоказатель.ЦелеваяДата
 +
 +   ЦельЗначение = CStr(МойПоказатель.ЦелевоеЗначение) 'Вещественное значение сразу преобразовываем в строку
 +
 +   Измерение = МойПоказатель.ЕдиницаИзмерения
 +
 + 
 +
 +      'Определение периодичности измерения показателя. Периодичность - это перечисление
 +
 +      ПериодичностьТекст = _
 +
 +      МойПоказатель.Параметры.ПолучитьЭлемент("Периодичность").ЗначениеВСтроку
 +
 + 
 +
 +   'Выводим сообщение с данными показателя
 +
 +   MsgBox "Показатель: " + ИмяПоказателя + Chr(13) + _
 +
 +   "Периодичность измерения: " + ПериодичностьТекст + Chr(13) + _
 +
 +   "Единица измерения: " + Измерение + Chr(13) + _
 +
 +   "Целевое значение и дата: " + ЦельЗначение + " на " + ЦельДата
 +
 + 
 +
 +End Sub
 +</code>
 +
 +===== Свойство Группа =====
 +
 +**Свойство**: OLE_Группа 
 +
 +**Тип параметра**: object (соответствует типу параметра в Объектной модели). 
 +
 +Свойство позволяет переместить объект в другую папку. 
 +
 +**Пример кода**. 
 +
 +__Задача__: перенести заданный фильтр из папки "Фильтры правил получения объектов" в папку "Пользовательские фильтры". 
 +
 +<code>
 +Sub ПримерOLE_РаботаСОбъектами() 
 +
 +    
 +
 +'Получение объекта приложения 
 +
 +    Set oleapp = CreateObject("ByteEnterprise.OleApplication") 
 +
 +  
 +
 +'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных. 
 +
 +'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно. 
 +
 +    Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы") 
 +
 +  
 +
 +'В панели задач появится приложение 
 +
 +    oleapp.ПоказатьКлиентскоеПриложение 
 +
 +  
 +
 +'Обращаемся к фильтру с заданным названием 
 +
 +    ИмяФильтра = "Оргединицы" 
 +
 +    Set СписокФильтров = oleapp.ПолучитьОбъекты("База.ХранимыеФильтры", "Название", ИмяФильтра) 
 +
 +    Set МойФильтр = СписокФильтров.ПолучитьЭлемент(0) 
 +
 +  
 +
 +'Указываем папку, в которую будем перемещать объект 
 +
 +    Set СписокПапкаФильтр = oleapp.ПолучитьОбъекты("База.ХранимыеФильтры", "Название", "Пользовательские фильтры") 
 +
 +    Set ПапкаНужная = СписокПапкаФильтр.ПолучитьЭлемент(0) 
 +
 +  
 +
 +'Переносим требуемый объект в нужную папку 
 +
 +   МойФильтр.OLE_Группа = ПапкаНужная 
 +
 +   МойФильтр.Сохранить 
 +  
 +End Sub
 +</code>
 +
 +===== Метод НайтиПараметр =====
 +
 +**Синтаксис**: НайтиПараметр(string "<ИмяПараметра>")
 +
 +**Возвращаемый результат**: Система.Параметр (см. [[ru/technical_manual/work_via_ole/param]])
 +
 +Метод для получения параметра. Используется, если нет возможности обратиться к параметру напрямую, например, для обращения к параметрам типа "ДатаВремя" или к пользовательским параметрам.
 +
 +**Пример кода**. См. код в методе "СоздатьОбъект" ([[ru/technical_manual/work_via_ole/oleapplication#метод_создатьобъект|Mетод СоздатьОбъект]]).
 +
 +===== Метод СоздатьФильтр =====
 +
 +**Синтаксис**: СоздатьФильтр()
 +
 +**Возвращаемый результат**: Система.Фильтр (см. [[ru/technical_manual/work_via_ole/filter]]).
 +
 +Создает Фильтр по объекту-группе.
 +
 +== ==
 +**Внимание!** Рекомендуется использовать для корневых групп класса.
 +===== =====
 +\\
 +**Пример кода**.
 +
 +__Задача__: вывести сообщение, показывающее количество должностей в модели бизнес-архитектуры.
 +
 +<code>
 +Sub ПримерOLE_СоздатьФильтр()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +'Дальнейшая работа будет с Оргединицами
 +
 +Set ВсеСубъекты = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.Субъекты")
 +
 + 
 +
 +'Создать фильтр, отбирающий только должности
 +
 +Set ФильтрДолжности = ВсеСубъекты.СоздатьФильтр
 +
 +ФильтрДолжности.Условия.Параметры.ТипСубъекта.Значение = "Должность"
 +
 + 'строка выше может быть и такой:
 +
 + 'ФильтрДолжности.Условия.Параметры.ТипСубъекта.Значение = 2 ' 2 - Должность
 +
 + 
 +
 +'Выполняем фильтр и определяем количество записей
 +
 +Set РезультатФильтрДолжности = ФильтрДолжности.Выполнить
 +
 +КолвоДолжностей = РезультатФильтрДолжности.КоличествоЭлементов
 +
 + 
 +
 +'Выводим сообщение
 +
 +MsgBox "Количество должностей: " + CStr(КолвоДолжностей)
 +
 + 
 +
 +End Sub
 +</code>
 +
 +===== Метод Сохранить =====
 +
 +**Синтаксис**: Сохранить()
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Сохраняет изменения объекта в базу данных.
 +
 +**Пример кода**. См. код в методах "СоздатьОбъект" ([[ru/technical_manual/work_via_ole/oleapplication#метод_создатьобъект|Mетод СоздатьОбъект]]) и "СоздатьГруппу" ([[ru/technical_manual/work_via_ole/oleapplication#метод_создатьгруппу|Mетод СоздатьГруппу]]).
 +
 +===== Метод Обновить =====
 +
 +Синтаксис: Обновить()
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Обновляет текущий объект, зачитывает свойства объекта из базы данных, при этом все произведенные изменения будут утеряны. Актуализирует состояние класса при наличии сохраненных изменений в объекте, внесенных в другом экземпляре Business Studio. 
 +
 +**Пример кода**.
 +
 +
 +
 +<code>
 +Set Субъекты = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "Название", "Директор")
 +
 +Set НужныйСубъект = Субъекты.ПолучитьЭлемент(0)
 +
 +НужныйСубъект.Обновить
 +</code>
 +
 +
 +
 +===== Метод Удалить =====
 +
 +**Синтаксис**: Удалить()
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Помечает объект на удаление. Выполнение метода соответствует удалению объекта вручную, при котором не происходит очистки ссылок на удаляемый объект.
 +
 +**Пример кода**.
 +
 +__Задача__: из организационной структуры удалить юриста.
 +
 +<code>
 +Sub ПримерOLE_Удалить()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Определяем субъект для удаления
 +
 +   GuidСубъекта = "23e3bc1b-1b6b-46b6-80c1-3508d9d06b6f" 'Соответствует 'Юрист" в демо-базе
 +
 +   Set Субъект = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "guid", GuidСубъекта)
 +
 +   Set СубъектЮрист = Субъект.ПолучитьЭлемент(0)
 +
 + 
 +
 +   'Удаляем субъект
 +
 +   СубъектЮрист.Удалить
 +
 +End Sub
 +</code>
 +
 +===== Метод УдалитьСОчисткойСсылок =====
 +
 +**Синтаксис**: УдалитьСОчисткойСсылок ()
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Помечает объект на удаление. Выполнение метода соответствует удалению объекта вручную, при котором происходит очистка ссылок на удаляемый объект.
 +
 +**Пример кода**.
 +
 +__Задача__: из организационной структуры удалить заместителя директора по качеству.
 +
 +<code>
 +Sub ПримерOLE_УдалитьСОчисткойСсылок ()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Определяем оргединицу для удаления
 +
 +   GuidСубъекта = "6b5a65bd-b0b3-4395-997d-e317472eb116" 'Соответствует "Заместитель директора по качеству" в демо-базе
 +
 +   Set Субъект = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "guid", GuidСубъекта)
 +
 +   Set СубъектЗамДирКачество = Субъект.ПолучитьЭлемент(0)
 +
 + 
 +
 +   'Удаляем оргединицу
 +
 +   СубъектЗамДирКачество.УдалитьСОчисткойСсылок
 +
 +End Sub
 +</code>
 +
 +===== Метод УдалитьСЗаменойСсылок =====
 +
 +**Синтаксис**: УдалитьСЗаменойСсылок(object <Объект>)
 +
 +**Возвращаемый результат**: не возвращает.
 +
 +Помечает объект на удаление. Выполнение метода соответствует удалению объекта вручную, при котором происходит переназначение ссылок на другой объект.
 +
 +**Пример кода**.
 +
 +__Задача__: из организационной структуры удалить заместителя директора по качеству, переназначив ссылки на юриста.
 +
 +<code>
 +Sub ПримерOLE_УдалитьСЗаменойСсылок ()
 +
 +   'Получение объекта приложения
 +
 +   Set oleapp = CreateObject("ByteEnterprise.OleApplication")
 +
 +   'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
 +
 +   'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
 +
 +   Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
 +
 +   'В панели задач появится приложение
 +
 +   oleapp.ПоказатьКлиентскоеПриложение
 +
 + 
 +
 +   'Определяем орединицу для переназначения ссылок
 +
 +   GuidСубъекта1 = "23e3bc1b-1b6b-46b6-80c1-3508d9d06b6f" 'Соответствует 'Юрист" в демо-базе
 +
 +   Set Субъект1 = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "guid", GuidСубъекта1)
 +
 +   Set СубъектЮрист = Субъект1.ПолучитьЭлемент(0)
 +
 + 
 +
 +   'Определяем оргединицу для удаления
 +
 +   GuidСубъекта2 = "6b5a65bd-b0b3-4395-997d-e317472eb116" 'Соответствует "Заместитель директора по качеству" в демо-базе
 +
 +   Set Субъект2 = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "guid", GuidСубъекта2)
 +
 +   Set СубъектЗамДирКачество = Субъект2.ПолучитьЭлемент(0)
 +
 + 
 +
 +   'Удаляем оргединицу и переназначаем ссылки
 +
 +   СубъектЗамДирКачество.УдалитьСЗаменойСсылок (СубъектЮрист)
 +
 + 
 +
 +End Sub
 +</code>
 +
 +
 +
 +
 +
 +[<contextnavigator>]
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +{(rater>id=ru_technical_manual_work_via_ole_metaclass|name=Класс "Система.МетаКласс"|type=vote|trace=ip|headline=off)}
Driven by DokuWiki