Определения для плана аналитики
Раздел предназначен для работы с объектами аналитики.
В модуле объявлен базовый тип АНАЛИТ_ОБЪЕКТ, который содержит поля, общие для всех объектов аналитики, а также методы для считывания, добавления и удаления объекта и метод для получения информации о правах доступа к объекту. Этот тип является родительским для типа АНАЛИТИКА, от которого в свою очередь наследуются все объекты в плане аналитики. Тип АНАЛИТИКА наследует все поля и методы типа АНАЛИТ_ОБЪЕКТ. Тип АНАЛИТИКА содержит поле для хранения времени актуальности объекта и поле для хранения свойств, определенных во время выполнения алгоритма, а также ряд методов для работы со свойствами объекта аналитики. Любой объект аналитики не последнего уровня можно представить во внутреннем языке как объектный тип времени выполнения. Свойства стандартного типа (не являющиеся контейнерами, алгоритмами, методами, бинарными объектами, и т.п.) представляются как поля объектного типа. Использование типов, определенных в плане аналитики, позволяет получить доступ к свойствам стандартных типов и ссылкам на объекты аналитики более низкого уровня.
Разберем на примере рисунка понятия абсолютных и относительных путей. Пусть Б, В и т.д. – коды соответствующих объектов, а ТБ, ТВ и т.д. – соответствующие им имена типов. Тогда абсолютный путь к объекту Л будет Г/Д/Л. Заметим, что корневой объект А не имеет кода, а его тип АНАЛИТИКА определен в модуле, т.е. всегда присутствует. Относительно объекта Г путь к объекту Л будет Д/Л, а к объекту Е – просто Е. Пустой относительный путь будет указывать на сам объект Г. Для считывания в переменную типа ТД объекта Л необходимо указать относительный путь: просто Л.
На рисунке объект Л (лист дерева), может быть считан из плана аналитики как объект одного из типов, соответствующим его объектам-предкам. Если используется тип объекта А (тип АНАЛИТИКА), то доступны только код, название и т.п. Когда используется объект типа Д, то доступны все свойства объекта А, Г и Д. Если объект Л имеет свои собственные свойства, то они не отображаются как поля объектного типа.
Методы для работы со свойствами, определенные в типе АНАЛИТИКА, предназначены для работы со свойствами объекта в плане аналитики. Если к объекту аналитики добавить новое свойство в редакторе плана аналитики или из внутреннего языка с помощью метода ДОБ_СВОЙСТВО, то после это свойство добавится к объекту в плане аналитики, а при проецировании объекта во внутренний язык будет отображаться как поле объектного типа. Любое изменение свойств объекта требует перекомпиляции проекта, чтобы эти изменения отображались во внутреннем языке. Но существует и другой сценарий работы со свойствами: в индексное поле "_свойства" можно добавлять свойства объекта и сразу работать с ними. Добавление нового свойства в это поле не требует перекомпиляции проекта. При этом свойства, добавленные в поле "свойства", не отображаются в редакторе плана аналитики.
Контейнерные свойства объектов, как уже было сказано, не проецируются во внутренний язык как поля объекта, но для работы с ними в модуле объявлен ряд типов (см. Определения контейнерных свойств).
С помощью методов типа МАССИВ_ОБЪЕКТОВ можно формировать выборку объектов аналитики, задавая условия фильтра, условия маски и условия сортировки объектов, и работать с объектами из этой выборки. Тип МАССИВ_ОБЪЕКТОВ является физическим, соответственно, объекты этого типа не могут передаваться как параметры алгоритмов и методов.
Объект аналитики можно связывать с другими объектами связью один ко многим.
Эти связи называются ассоциациями. Ассоциации дают возможность при работе с объектом отслеживать другие связанные с ним объекты. Например, имеется объект ОРГ_1, который описывает некую организацию. На ветке ЛЮДИ среди прочих имеются объекты, которые описывают сотрудников этой организации (СОТР1, СОТР2). Требуется, чтобы при удалении объекта ОРГ_1 удалялись также объекты СОТР1 и СОТР2 (которые находятся на другой ветке). Если связать объект ОРГ_1 с этими объектами, это требование легко реализовать: необходимо считать связи объекта ОРГ_1 с помощью соответствующего метода и удалить найденные объекты. Можно также отслеживать и обратные ассоциации, то есть получить объекты, с которыми связан объект.
Для работы с ассоциациями предназначен тип АССОЦ, который содержит методы для считывания и записи ассоциаций.
Методы типа КАТАЛОГ предназначены для работы с группами и объектами каталогизаторов.
Модуль содержит ряд функций для работы с объектами аналитики, функции для получения статических и динамических свойств объекта аналитики – СТАТ_СВОЙСТВА и ДИН_СВОЙСТВА.
Считанные свойства объекта аналитики сохраняются в типе СВОЙСТВА.
Модуль содержит несколько циклов для перебора объектов аналитики и каталогизаторов. При переборе объектов аналитики можно использовать маски. Для задания маски в модуле объявлен тип МАСКА_АН. Кроме того, у типа АНАЛИТ_ОБЪЕКТ существует метод СЧИТАТЬ_М, позволяющий получать объекты аналитики по маске.
Перечень типов:
МАСКА_АН | – | предназначен для задания маски объекта аналитики. |
СВОЙСТВО | – | служит для хранения информации об одном свойстве объекта аналитики. |
СВОЙСТВА | – | хранит информацию о свойствах объекта аналитики. |
СОРТ_ОБ_УСЛ | – | предназначен для задания условия сортировки объектов аналитики в выборке. |
СОРТ_ОБ | – | предназначен для задания способа сортировки объектов аналитики в выборке. |
АНАЛИТ_ОБЪЕКТ | – | является базовым объектом, содержащим поля, общие для всех объектов аналитики, и методы для считывания, записи, добавления и удаления объекта. |
АНАЛИТИКА | – | содержит поля и методы, общие для всех объектов аналитики. |
СПИСОК_ОБЪЕКТОВ | – | предназначен для передачи списка объектов аналитики в различные алгоритмы. |
МАССИВ_ОБЪЕКТОВ | – | позволяет получить доступ к объектам аналитики некоторой выборки. |
КОЛЛЕКЦИЯ_ОБЪЕКТОВ | – | позволяет построить обновляемую выборку объектов аналитики. |
АССОЦ | – | предназначен для работы с ассоциациями. |
ВЕКТОР_АССОЦ | – | описывает направленную ассоциацию между двумя объектами аналитики. |
Работа с историей свойств | ||
---|---|---|
ТОЧКА_ИСТОРИИ | – | служит для хранения значения свойства объекта аналитики в определенном моменте времени. |
ТОЧКИ_ИСТОРИИ | – | используется для получения истории значений свойств объекта аналитики. |
ИСТОРИЯ_СВОЙСТВА | – | используется для получения и изменения истории значений свойств объекта аналитики. |
Работа с каталогизаторами | ||
---|---|---|
КАТ_ИНФО | – | служит для хранения информации о каталогизаторе. |
КАТ_АВТО_СВ | – | служит для описания одного свойства автоматического каталогизатора. |
КАТ_ПАРАМ | – | может служить для описания каталогизатора любого типа. |
КАТ_СПИСОК | – | служит для хранения списка каталогизаторов. |
КАТАЛОГ | – | предназначен для работы с каталогизаторами из внутреннего языка. |
Типы для работы с контейнерными свойствами
Перечень функций:
Работа с объектами аналитики | ||
---|---|---|
ОТН_КОД | – | возвращает код объекта относительно некоторого корневого кода. |
АБС_КОД | – | возвращает абсолютный код объекта по коду корневого объекта и коду объекта относительно корневого. |
КОД_УРОВ | – | возвращает уровень кода объекта. |
КОД_ЭЛЕМ | – | возвращает фрагмент кода объекта по заданному уровню. |
КОД_РОД | – | возвращает код родительского объекта. |
КОД_ПОСЛ | – | возвращает код объекта последнего уровня. |
СУЩ_ОБЪЕКТ | – | проверяет существование объекта аналитики. |
ИСП_ОБЪЕКТ | – | проверяет, используется ли этот объект в базе данных. |
УДАЛИТЬ_ОБЪЕКТ | – | удаляет объект последнего уровня из плана аналитики. |
НАЗВ_ОБЪЕКТА | – | возвращает название объекта аналитики по его абсолютному коду. |
НАЗВ_ОБЪЕКТОВ | – | позволяет получить названия нескольких объектов аналитики. |
КОЛДОЧ_ОБЪЕКТОВ | – | возвращает количество дочерних объектов у объекта аналитики. |
БЛОК_ОБЪЕКТ | – | позволяет устанавливать и снимать логическую блокировку объекта аналитики. |
ЕСТЬ_БЛОК_ОБЪЕКТ | – | позволяет определить, может ли текущий клиент заблокировать заданный объект. |
КОЛ_БЛОК_ОБЪЕКТ | – | позволяет определить количество логических блокировок объекта. |
КОНВ_АНАЛИТИКА | – | позволяет преобразовать значения типа АНАЛИТИКА в значения производного типа времени выполнения. |
СЧИТАТЬ_ВЕКТОРА_АССОЦ | – | считывает направленные ассоциации объектов аналитики по заданным критериям. |
УДАЛИТЬ_МАССИВ_ОБЪЕКТОВ | – | удаляет именованную выборку объектов аналитики. |
УДАЛИТЬ_КОЛЛЕКЦИЮ_ОБЪЕКТОВ | – | удаляет именованную коллекцию объектов аналитики. |
Работа со свойствами объектов аналитики | ||
---|---|---|
СТАТ_СВОЙСТВА | – | служит для получения статических свойств объекта аналитики. |
ДИН_СВОЙСТВА | – | служит для получения динамических свойств объекта аналитики. |
ЗАП_ДИН_СВОЙСТВА | – | служит для изменения значений по умолчанию и/или набора динамических свойств объекта аналитики. |
УСТ_ЗНАЧ_СВОЙСТВА | – | задает значение свойства объекта аналитики в заданной временной точке. |
УСТ_ЗНАЧ_ДИН_СВОЙСТВА | – | задает значение динамического свойства объекта аналитики. |
МИН_СВОЙСТВО | – | позволяет получить минимальное значение указанного свойства на ветке объектов аналитики. |
МАКС_СВОЙСТВО | – | позволяет получить максимальное значение указанного свойства на ветке объектов аналитики. |
АНАЛИТ_НАБОР_ЗНАЧЕНИЙ | – | позволяет получить набор всех значений указанного свойства или фиксированного поля объекта на ветке объектов аналитики. |
АНАЛИТ_НАБОР_КОРТЕЖЕЙ | – | позволяет получить набор всех комбинаций значений (кортежей) указанных свойств или фиксированных полей объекта на ветке объектов аналитики. |