К классу "Система.МетаКласс" относится любой объект системы.
Свойство: <ИмяПараметра>
Тип параметра: object (соответствует типу параметра в Объектной модели).
Обращение к значениям (параметрам) объектов осуществляется по имени параметра из объектной модели Business Studio.
Пример кода.
Задача: вывести сообщение о заданном показателе, а также некоторые его параметры.
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
Свойство: OLE_Группа
Тип параметра: object (соответствует типу параметра в Объектной модели).
Свойство позволяет переместить объект в другую папку.
Пример кода.
Задача: перенести заданный фильтр из папки "Фильтры правил получения объектов" в папку "Пользовательские фильтры".
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
Синтаксис: НайтиПараметр(string "<ИмяПараметра>")
Возвращаемый результат: Система.Параметр (см. Класс "Система.Параметр")
Метод для получения параметра. Используется, если нет возможности обратиться к параметру напрямую, например, для обращения к параметрам типа "ДатаВремя" или к пользовательским параметрам.
Пример кода. См. код в методе "СоздатьОбъект" (Mетод СоздатьОбъект).
Синтаксис: СоздатьФильтр()
Возвращаемый результат: Система.Фильтр (см. Класс "Система.Фильтр").
Создает Фильтр по объекту-группе.
Внимание! Рекомендуется использовать для корневых групп класса.
Пример кода.
Задача: вывести сообщение, показывающее количество целей с периодичностью месяц.
Sub ПримерOLE_СоздатьФильтр()
'Получение объекта приложения
Set oleapp = CreateObject("ByteEnterprise.OleApplication")
'Запустить Business Studio в указанной редакции с указанной базой и сервером баз данных.
'В Диспетчере задач появится Business Studio. В панели задач приложения не будет видно.
Set client_app = oleapp.ЗапуститьКлиентскоеПриложение("ИмяСервера", "ИмяБазы", "РедакцияПрограммы")
'В панели задач появится приложение
oleapp.ПоказатьКлиентскоеПриложение
'Дальнейшая работа будет с Целями
Set ВсеСубъекты = oleapp.ПолучитьКорневуюГруппуКласса("БизнесМодель.ЦелиBSC")
'Создать фильтр, отбирающий только цели с периодичностью месяц
Set ФильтрЦели = ВсеЦели.СоздатьФильтр
ФильтрЦели.Условия.Параметры.Периодичность.Значение = "Месяц"
'строка выше может быть и такой:
'ФильтрЦели.Условия.Параметры.Периодичность.Значение = 3 ' 3 - Месяц
'Выполняем фильтр и определяем количество записей
Set РезультатФильтрЦели = ФильтрЦели.Выполнить
КолвоЦелей = РезультатФильтрЦели.КоличествоЭлементов
'Выводим сообщение
MsgBox "Количество целей: " + CStr(КолвоЦелей)
End Sub
Синтаксис: Сохранить()
Возвращаемый результат: не возвращает.
Сохраняет изменения объекта в базу данных.
Пример кода. См. код в методах "СоздатьОбъект" (Mетод СоздатьОбъект) и "СоздатьГруппу" (Mетод СоздатьГруппу).
Синтаксис: Обновить()
Возвращаемый результат: не возвращает.
Обновляет текущий объект, зачитывает свойства объекта из базы данных, при этом все произведенные изменения будут утеряны. Актуализирует состояние класса при наличии сохраненных изменений в объекте, внесенных в другом экземпляре Business Studio.
Пример кода.
…
Set Субъекты = oleapp.ПолучитьОбъекты("БизнесМодель.Субъекты", "Название", "Директор")
Set НужныйСубъект = Субъекты.ПолучитьЭлемент(0)
НужныйСубъект.Обновить
…
Синтаксис: Удалить()
Возвращаемый результат: не возвращает.
Помечает объект на удаление. Выполнение метода соответствует удалению объекта вручную, при котором не происходит очистки ссылок на удаляемый объект.
Пример кода.
Задача: из организационной структуры удалить юриста.
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
Синтаксис: УдалитьСОчисткойСсылок ()
Возвращаемый результат: не возвращает.
Помечает объект на удаление. Выполнение метода соответствует удалению объекта вручную, при котором происходит очистка ссылок на удаляемый объект.
Пример кода.
Задача: из организационной структуры удалить заместителя директора по качеству.
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
Синтаксис: УдалитьСЗаменойСсылок(object <Объект>)
Возвращаемый результат: не возвращает.
Помечает объект на удаление. Выполнение метода соответствует удалению объекта вручную, при котором происходит переназначение ссылок на другой объект.
Пример кода.
Задача: из организационной структуры удалить заместителя директора по качеству, переназначив ссылки на юриста.
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