Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
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)} |