Мельница данных  (одним файлом)  (20.11.2017)
1. Технологическая платформа "Мельница Данных"
 

2. Руководство пользователя обозревателя данных

2.1. Запуск обозревателя данных

Для начала работы необходимо запустить исполняемый файл DataBrowser.exe. Это можно сделать посредством ярлыка, создаваемого инсталлятором Системы:

Ярлык обозревателя данных

При его запуске отобразится окно входа в систему:

Окно логина обозревателя данных

Для запуска системы необходимо заполнить поля формы входа в систему, после чего нажать кнопку ОК или клавишу Enter на клавиатуре. Если система ранее запускалась на Вашем локальном компьютере, то поля формы (за исключением поля Пароль) будут заполнены данными, введенными в прошлый раз. Если система на компьютере запускается впервые, то при открытии формы ее поля будут пустыми. Для заполнения полей формы необходимо знать, на каком типе сервера БД работает система, имя базы данных, с которой предстоит работать, имя пользователя и пароль. Если Вы не располагаете такой информацией, узнайте ее у администратора системы.

  • Источник данных - в этом поле из выпадающего списка выберите тип сервера баз данных, на котором функционирует система; возможен выбор из трех вариантов:
    • если система работает на сервере Interbase (Firebird), выберите пункт Interbase/FireBird Server;
    • если система работает на сервере Oracle, выберите пункт Oracle Database Server;
    • если система работает на сервере MSSQL, выберите пункт Microsoft SQL Server.
  • База данных - в этом поле необходимо указать имя базы данных.
  • Имя пользователя - в этом поле введите Ваше имя пользователя (логин).
  • Пароль - в это поле введите Ваш пароль.
Для удобства последующего запуска системы Вы можете воспользоваться флажками "Сохранить пароль" и "Входить автоматически".
  • Сохранить пароль - если установить этот флажок, то Ваш пароль будет запомнен и подставлен в поле Пароль при следующем запуске системы. В связи с тем, что информация о вводимом Вами пароле будет сохранена на Вашем локальном компьютере, пользоваться этим флажком рекомендуется только в том случае, если возможность несанкционированного доступа к Вашему компьютеру исключена.
  • Входить автоматически - этот флажок доступен только при установленном флажке "Сохранить пароль". Если установить этот флажок, то при следующем входе в систему Вам не придется заполнять поля формы и нажимать кнопку OK или клавишу Enter. Форма покажется на некоторое время, после чего произойдет автоматический вход в систему.

Если Вы установили флажок "Входить автоматически", но хотите изменить ранее введенную в поля информацию, необходимо выполнить щелчок мышью (здесь и далее "щелчок мышью" означает щелчок ЛЕВОЙ кнопкой мыши. Если необходим щелчок ПРАВОЙ кнопкой мыши, то будет указано "щелчок правой кнопкой мыши") на форме во время ее показа. После этого можно будет изменить ранее установленные в полях значения.


2.2. Элементы интерфейса пользователя

При входе в систему на экране отобразиться ее главное окно. Макет главного окна системы:

Макет главного окна обозревателя данных

В заголовке главного окна системы отображается имя запущенного приложения (Databrowser.exe), имя пользователя (sysdba) и имя базы данных (C:\project\databases\icecream.fdb). Интерфейс состоит из трех основных элементов:

  1. В верхней части экрана расположена Панель инструментов. На ней расположены иконки, соответствующие доступным в настоящее время действиям, а также доступным для текущего пользователя формам.
  2. В левой части экрана расположен Инспектор объектов, позволяющий просматривать и редактировать свойства объектов, выбранных в таблицах данных.
  3. Основную часть экрана занимают Формы с Таблицами данных. Таблицы данных используются для просмотра и редактирования объектов, учитываемых в системе.


2.3. Работа с формами и таблицами данных

Для отображения записей об учитываемых в системе объектах используются формы с таблицами данных. Каждая форма представляет собой отдельное окно с заголовком, на котором отображается ее наименование. Основную часть окна формы занимают таблицы данных. Переключаться между доступными формами можно либо при помощи щелчка мышью по иконке, соответствующей форме на Панели инструментов, либо при щелчке мышью на самом окне формы (если форма видна). В каждый момент времени активной является одна из форм (или ни одной). Окно формы можно "перетаскивать" (здесь и далее "перетащить" объект означает подвести к нему указатель мыши, нажать левую кнопку, удерживая кнопку переместить объект на новое место, после чего отпустить кнопку мыши) по экрану за заголовок, изменять его размеры, минимизировать, восстановить, раскрывать на весь экран или закрывать. Эти действия осуществляются стандартным для среды Windows образом. При закрытии формы соответствующая ей иконка на панели инструментов будет отображена неактивной. При щелчке мышью по такой иконке форма откроется, и иконка станет активной.

Таблицы данных в форме расположены на закладках с заголовками, соответствующими наименованиям таблиц данных. Например, на предыдущем рисунке активна форма "Продажи мороженого". В этой форме на первом уровне расположены таблицы данных "Регионы", "Сорта мороженого", "Сорта фруктового мороженого", "Представительства", "Все продажи". Активной в настоящее время является таблица данных "Представительства".


2.3.1. Подчиненные таблицы данных и взаимное расположение главной и подчиненных таблиц

Таблицы данных могут иметь подчиненные таблицы. Подчиненные таблицы по умолчанию отображаются в нижней части главной таблицы. Набор записей, отображаемых в подчиненной таблице, зависит от того, какие записи выбраны в главной таблице.

Например, на рисунке в главной таблице "Представительства" выбрано представительство ООО "Холод плюс". При этом в подчиненной таблице "Продажи представительства" отображаются только те продажи, которые осуществлены данным представительством.

Подчиненные таблицы могут располагаться двумя способами:

  • на закладках - в этом случае в нижней части главной таблицы отображаются закладки с наименованиями подчиненных таблиц; переключаться между подчиненными таблицами можно путем щелчка мышью по соответствующей закладке;
    Отображение подчиненных таблиц на закладках
  • в отдельных окнах - в этом случае каждая из подчиненных таблиц располагается в своем окне; окна имеют заголовки, соответствующие наименованиям таблиц; окна, в которых отображаются подчиненные таблицы, можно перетаскивать за заголовок в любое другое место экрана, минимизировать, восстанавливать, закрывать и т.д.
    Отображение подчиненных представлений в отдельных окнах

Изменять соотношение размера главной и подчиненных таблиц можно путем перетаскивания горизонтального разделителя мышью. Для этого необходимо подвести указатель мыши к границе раздела зон главной и подчиненных таблиц и когда курсор примет форму горизонтального разделителя (Горизонтальный разделитель) перетащить разделитель выше или ниже. При отображении подчиненных таблиц в отдельных окнах можно изменять соотношение ширины подчиненных таблиц. Для этого нужно подвести указатель мыши к вертикальной границе таблиц и когда указатель примет форму вертикального разделителя (Вертикальный разделитель), перетащить разделитель вправо или влево.

При отображении подчиненных таблиц на закладках занимаемая ими область также может быть минимизирована. Для этого необходимо подвести курсор к границе раздела зон главной и подчиненной таблиц и когда он примет форму горизонтального разделителя (Горизонтальный разделитель) выполнить двойной щелчок мышью.

Минимизация зоны подчиненных таблиц

Восстановить отображение подчиненных таблиц можно либо путем нажатия кнопки "Восстановить" (Кнопка восстановления размеров зоны подчиненных таблиц) в заголовке минимизированного окна, либо при помощи двойного щелчка мышью на этом заголовке.


2.3.2. Отображение учитываемых объектов в таблице данных

Таблица данных имеет строки и колонки. Строки таблицы (или записи) соответствуют учитываемым объектам. Колонки таблицы соответствуют свойствам объектов.

Макет таблицы данных

На рисунке представлен макет таблицы данных, в которой отображаются объекты, соответствующие сортам фруктового мороженого. Таблица данных имеет наименование "Сорта фруктового мороженого", которое отображается на соответствующей закладке (1). Таблица имеет пять строк (2), соответствующих пяти сортам фруктового мороженого. Выделенной в настоящее время является первая строка. Таблица имеет пять колонок, соответствующих свойствам учитываемых сортов мороженого. Каждая колонка имеет заголовок (4), отражающий отображаемое в этой колонке свойство. Активной в настоящее время является первая колонка. Активным элементом данных (3) является ячейка, расположенная в первой строке в первом столбце.

На рисунке активная строка и активный элемент данных выделяются оттенками синего цвета. Цвета, применяемые для выделения элементов данных, зависят от локальных настроек операционной системы Windows (стилей) на компьютере пользователя.

Под заголовком каждой колонки расположена строка фильтра (5). При помощи ввода в этой строке условия отбора или выбора значений из выпадающего списка можно осуществлять фильтрацию отображаемых в таблице данных.

Если отображаемые данные не помещаются в окно по ширине, то активной становится горизонтальная полоса прокрутки (7). С ее помощью можно пролистывать колонки таблицы вправо и влево. Если данные не помещаются в окно по вертикали, то активной становится вертикальная полоса прокрутки (8). С ее помощью можно пролистывать записи об объектах вверх и вниз. При щелчке правой кнопкой мыши на полосе прокрутки (если она активна) доступны действия по быстрой прокрутке содержимого таблицы.

При щелчке правой кнопкой мыши в области таблицы данных отображается контекстное меню. Контекстное меню отображает список действий, доступных над объектами, отображаемыми в таблице данных. Вызываемые действия выполняются для тех объектов, которые являются выделенными в таблице данных. Если ни одного объекта не выделено, некоторые действия контекстного меню могут быть недоступны. Набор действий, отображаемых в контекстном меню различен в разных таблицах данных.

Контекстное меню

  1. Заголовок закладки с именем таблицы данных.
  2. Выделенный объект.
  3. Выделенный элемент данных.
  4. Заголовок колонки.
  5. Строка фильтра.
  6. Флажок для выбора объектов.
  7. Горизонтальная полоса прокрутки.
  8. Вертикальная полоса прокрутки

2.3.2.1. Иерархические таблицы данных

Если отображаемые в таблице данные имеют иерархическую структуру (т.е. присутствует "вхождение" одних объектов в другие), то в таблице данных объекты могут отображаться в виде "дерева".

Иерархическая таблица данных

На рисунке представлена таблица данных, отображающая периоды обучения студентов. Эти данные имеют иерархическую структуру, которая отражает вхождение учебных модулей в состав семестров, а семестров в состав учебных годов. В первой колонке иерархической таблицы данных слева от элементов данных, имеющих подчиненные элементы, отображаются значки Свернутый узел дерева или Развернутый узел дерева. При щелчке мышью по значку Свернутый узел дерева отображаются подчиненные объекты. Значок Свернутый узел дерева при этом превращается в значок Развернутый узел дерева. При щелчке мышью по значку Развернутый узел дерева подчиненные объекты скрываются и значок Развернутый узел дерева превращается в Свернутый узел дерева. На рисунке для объектов "Учебный год 2005-2006" и его подчиненных объектов "I семестр" и "II семестр" подчиненные объекты отображены. Щелчком по значку Развернутый узел дерева подчиненные объекты можно скрыть. Для объектов "I семестр" и "II семестр" учебного года 2006-2007 подчиненные объекты скрыты. Щелчком по значку Свернутый узел дерева их можно отобразить. При горизонтальном пролистывании таблицы данных вправо или влево "дерево" объектов всегда отображается слева от самого левого столбца.

В иерархических таблицах данных доступны дополнительные действия по управлению отображением и выбору объектов, которые описаны в разделе 4.7.1.


2.3.3. Выбор объектов в таблице данных

Выбор одного объекта в таблице данных может осуществляться либо щелчком мышью в соответствующей строке, либо при помощи стрелок ("вверх" и "вниз") на клавиатуре. Выбор активной колонки и активного элемента данных также может производиться щелчком мышью или при помощи стрелок ("вправо" и "влево") на клавиатуре.

В таблице данных можно также осуществлять произвольный выбор нескольких объектов путем установки флажка в строке, отображающей объект. Установка или снятие флажка производится при помощи щелчка мышью.

При выборе нескольких объектов в главной таблице в подчиненной таблице будут отображены записи, соответствующие подчиненным объектам, отобранным для ВСЕХ объектов, выбранных в главной таблице.

Произвольный выбор объектов

На рисунке представлена таблица данных "Учащиеся", имеющая ряд подчиненных таблиц. На рисунке открыта подчиненная таблица "Родственники и контактные лица". В таблице данных "Учащиеся" путем установки флажка произвольным образом выбраны три учащихся с фамилиями Матвеева, Зимогляд и Анчевский. При этом в подчиненной таблице "Родственники и контактные лица" отображены родители всех троих учащихся.

При выборе объектов путем простановки флажков необходимо осуществлять щелчок мышью именно на флажке. Если выполнить щелчок мышью в любой другом месте записи, ранее установленные флажки будут сняты, и выбранной станет одна эта запись.

Для быстроты и удобства выбора объектов доступны дополнительные возможности:

  • для выделения нескольких объектов подряд можно щелкнуть мышью в любом месте записи, соответствующей первому объекту, а затем, удерживая клавишу Shift, щелкнуть по записи, соответствующей последнему объекту; все объекты между первым и последним, включая их, будут выделены;
  • осуществлять произвольный выбор объектов можно щелчком мышью в любом месте записи, удерживая клавишу Ctrl ;
  • можно воспользоваться действиями, доступными в подменю "Выбранные" на панели инструментов или в контекстном меню:
    • Выбрать все - все отображаемые в настоящий момент в таблице данных объекты будут выбраны;
    • Показать только выбранные - в таблице данных будут отображены только те объекты, которые помечены как выбранные; остальные объекты будут скрыты;
    • Показать все - если ранее было установлен отбор только выбранных объектов, этот отбор будет снят, и снова будут отображены все доступные в таблице объекты.

При выборе объектов изменяется информация, отображаемая Инспектором объектов. Если выбран один объект, то Инспектор объектов отображает и позволяет редактировать все доступные пользователю свойства этого объекта. Если выбрано несколько объектов, отображение и редактирование свойств Инспектором объектов происходит по правилам, описанным в разделе 5 "Работа с Инспектором объектов".

При выполнении действий над объектами выбранное действие будет выполнено для всех выбранных объектов. Если не выбрано ни одного объекта, некоторые действия могут быть недоступны.

При одновременном выборе большого числа объектов быстродействие системы может снижаться. При необходимости работы с большой выборкой объектов лучше воспользоваться возможностью фильтрации данных.


2.3.4. Изменение порядка отображения колонок

Порядок отображения колонок может быть изменен путем "перетаскивания" их заголовков. Для того чтобы переместить колонку правее или левее, подведите указатель мыши к заголовку колонки, нажмите левую кнопку мыши и, не отпуская ее, перетащите заголовок колонки вправо или влево. После того, как Вы отпустите кнопку мыши, порядок отображения колонок изменится.

Изменение порядка отображения колонок

На рисунке изображено перетаскивание заголовка колонки "Вид упаковки" в таблице данных "Сорта мороженого". После того, как кнопка мыши будет отпущена, колонка "Вид упаковки" станет третьей слева, а колонка "Число продаж" второй.


2.3.5. Скрытие и отображение колонок

Любая из видимых в таблице данных колонок может быть скрыта. Для этого необходимо выделить любой элемент данных в колонке, щелчком правой кнопкой мыши открыть контекстное меню и в нем в подменю "колонка" выбрать действие "Скрыть эту колонку".

Скрытие колонки

На рисунке показано как скрыть колонку "Вид упаковки" в таблице данных "Сорта мороженого". Описанным выше образом можно скрыть любое число колонок таблицы данных кроме последней. Если в таблице данных осталась одна колонка, то действие "Скрыть эту колонку" будет недоступно. Для отображения скрытых ранее колонок таблицы данных необходимо воспользоваться действием "Показать скрытые колонки" в подменю "колонка" контекстного меню. (На рис. 12. действие располагается ниже действия "Скрыть эту колонку"). Если ни одной колонки таблицы данных не скрыто, то действие "Показать скрытые колонки" будет недоступно. Действия, расположенные в подменю "колонка" доступны также на панели инструментов.


2.3.6. Сортировка данных в таблицах

Отображаемые в таблице данные могут быть отсортированы по возрастанию или по убыванию значений свойств, отображаемых в одной или нескольких колонках. Для сортировки данных по одной колонке необходимо выполнить щелчок мышью не ее заголовке. Данные будут отсортированы по возрастанию значения в этой колонке. Если щелкнуть мышью по заголовку колонки еще раз, то данные будут отсортированы по убыванию значения в этой колонке. В заголовке конке появится стрелочка, отображающая порядок сортировки (направленная вверх в случае сортировки по возрастанию и вниз в случае сортировки по убыванию). Если выполнить щелчок мышью по заголовку другой колонки, то данные будут отсортированы по значению в новой колонке.

Сортировка данных по одной колонке

На рисунке данные в таблице данных "Учащиеся" отсортированы по значению в колонке "Фамилия" по возрастанию. В заголовке колонки "Фамилия" отображается направленная вверх стрелочка. Для сортировки данных по значениям в нескольких колонках необходимо выполнить щелчок мышью на заголовке первой колонки, затем, удерживая клавишу Ctrl, выполнить щелчок по заголовку второй колонки и т.д. При этом в заголовках колонок будут отображаться стрелочки, соответствующие направлению сортировки и цифры, соответствующие порядку колонок в сортировке.

Сортировка данных по нескольким колонкам

На рисунке представлен пример сортировки данных таблицы данных "Учащиеся" по региону (по возрастанию), затем по полу (по убыванию) и затем по фамилии (по возрастанию). В заголовках колонок отображены соответствующие стрелочки с цифрами 1, 2 и 3.

В иерархических таблицах данные сортируются в пределах каждого уровня иерархии.

Сортировка данных в иерархической таблице

На рисунке данные в иерархической таблице данных "Направления и специальности" отсортированы по колонке "Наименование" по возрастанию.


2.3.7. Группировка данных в таблицах

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

Для осуществления группировки по значению в одной из колонок необходимо выделить любой элемент данных в этой колонке. Затем щелчком правой кнопки мыши открыть контекстное меню и в нем в подменю "колонка" выбрать действие "Группировать по этой колонке".

Осуществление группировки данных

На рисунке показано, как при помощи действия в контекстном меню осуществляется группировка данных в таблице данных "Все продажи" по значению в колонке "Представительство".

При отображении данных в сгруппированном виде для каждой группы будет отображен заголовок на более темном фоне. В заголовке группы будут отображены наименование и значение свойства, по которому осуществлена группировка, а слева от наименования будет расположен значок Развернутый узел дерева или Свернутый узел дерева. При нажатии на значок Развернутый узел дерева можно скрывать объекты группы (для группы будет отображен только ее заголовок). Значок Развернутый узел дерева при этом изменится на Свернутый узел дерева. При нажатии на значок Свернутый узел дерева объекты, входящие в группу, будут снова отображены.

Отображение данных в сгруппированном виде

На рисунке данные в таблице данных "Все продажи" сгруппированы по значению в колонке "Представительство". Группы объектов, соответствующие представительствам ЗАО "Айс девелопмент", ЗАО "Фрост интернешнл" и ООО "Заморозь соседа", раскрыты. Группы, соответствующие ОАО "Красный нос" и ООО "Дед мороз и лето", свернуты.

Данные могут группироваться и по нескольким колонкам. Для этого необходимо повторить описанные выше действия для всех колонок, которые должны быть включены в группировку.

Группировка данных по нескольким колонкам

На рисунке представлен пример группировки данных, отображаемых в таблице данных "Все продажи" по колонкам "Регион" и "Сорт мороженого".

Для снятия группировки и отображения данных в стандартном виде необходимо воспользоваться действием "Очистить группировку", которое также доступно в контекстном меню в подменю "колонка" (на рисунке расположено в выпадающем меню ниже действия "Группировать по этой колонке").

Действия, расположенные в подменю "колонка", доступны также на панели инструментов.


2.3.8. Фильтрация данных в таблицах

Фильтрация данных (отображение только тех данных, которые удовлетворяют некоторому условию) осуществляется по значениям, отображаемым в колонках, при помощи строки фильтра. Строка фильтра расположена ниже заголовка колонки. Фильтрация данных может осуществляться двумя способами:

  • путем выбора значения из выпадающего списка, доступного при нажатии кнопки Кнопка выпадающего списка в строке фильтра
  • путем записи условия фильтрации в строке фильтра

При нажатии кнопки Кнопка выпадающего списка в строке фильтра отображается выпадающий список значений, которые могут быть выбраны. Перечень отображаемых значений зависит от типа данных, отображаемых в колонке. В первой строке списка расположен пункт "(Все)". При выборе этого пункта фильтрация данных по этой колонке не осуществляется. При выборе одного из доступных значений в таблице данных будут отображены только те объекты, для которых значение свойства, отображаемого в данной колонке, равно выбранному. После осуществления фильтрации в строке фильтра будет отображено выбранное значение. Выбор значений можно осуществить в нескольких колонках. В этом случае условия отбора по каждой колонке будут объединены логическим "И".

Фильтрация данных путем выбора значения в строке фильтра

На рисунке показано, как осуществить фильтрацию данных по значению "эскимо" в колонке "Вид упаковки". После выполнения фильтрации эта таблица данных будет выглядеть следующим образом:

Отображение данных в отфильтрованном виде

В таблице данных на рисунке отображены записи только о тех сортах мороженого, которые продаются в виде эскимо. Значение "эскимо" отображено в строке фильтра в колонке "Вид упаковки".

Для фильтрации данных по более сложному условию можно воспользоваться вторым способом - записью условия фильтрации в строке фильтра. Условие фильтрации записывается по следующим правилам:

  1. Строка разделяется на части посредством системного разделителя (системный разделитель устанавливается в настройках операционной системы Windows). Обычно - точка с запятой, ";"
  2. Каждая часть строки интерпретируется самостоятельно, и эти части объединяются логическим "ИЛИ"
  3. При интерпретации каждой части проверяются следующие условия:
    Часть строкиПравило отбора объектов
    *
    Будут отобраны только те объекты, у которых значение в колонке не является пустым (установлено).
    !*
    Будут отобраны только те объекты, у которых значение в колонке является пустым (не установлено).
    начинается с символов '<=', '<', '>=', '>'
    Будут отобраны только те объекты, у которых значение в колонке удовлетворяет условию.
    включает в себя символы '*' и/или '?'
    Будут отобраны только те объекты, у которых значение в колонке удовлетворяет шаблону, в котором знак '?' соответствует одному любому символу, а знак '*' - любому количеству любых символов.
    начинается с символа '!'
    Будут отобраны только те объекты, у которых значение в колонке не удовлетворяет условию, переданному оставшейся частью строки (знак '!' означает отрицание).
    представляет собой строку в апострофах (одиночных кавычках)
    Содержание строки не анализируется по приведенным выше правилам. Будут отобраны только те объекты, у которых значение данного свойства соответствует строке, заключенной в апострофы.
    любая другая строка
    Будут отобраны только те объекты, у которых значение данного свойства соответствует введенной строке (строки чувствительны к регистру).
  4. Условия, указанные в разных колонках, объединяются логическим "И"

После ввода в строке фильтр требуемого условия необходимо нажать клавишу Enter.

Фильтрация данных по сложному условию

В таблице данных "Все продажи" на рисунке отобраны только те записи, для которых верно следующее: Продажи осуществлены в регионе "Москва" или "Тверская область"; при этом наименование проданного сорта мороженого начинается с "Б"; при этом число продаж данного сорта больше 100.

Сделать заключение о том, что отображаемые в таблице данные отфильтрованы, можно по наличию в строке фильтра записи отличной от "(Все)". Снять фильтрацию данных можно одним из двух способов:

  • выбрать в строке фильтра из выпадающего списка пункт "(Все)"
  • удалить все символы, записанные в строке фильтра и нажать клавишу Enter


2.3.9. Отображение итоговых значений (агрегатов) по колонкам

По любой из колонок таблицы данных может быть рассчитано и отображено итоговое значение (агрегат). В зависимости от типа отображаемого в колонке свойства могут быть вычислены следующие агрегаты:

  • количество объектов (для свойств любых типов)
  • сумма значений (для числовых значений)
  • наименьшее (минимальное) значение (для строковых, числовых, логических значений, перечислений, значений типа даты, времени, даты со временем)
  • наибольшее (максимальное) значение (аналогично наименьшему значению)
  • среднее значение (для числовых значений)

Для отображения агрегата по одной из колонок необходимо выделить элемент данных в этой колонке, при помощи щелчка правой кнопкой мыши отобразить контекстное меню и в нем в подменю "колонка" выбрать действие, соответствующее нужному агрегату. После выполнения этого действия таблица данных будет выглядеть следующим образом:

Таблица данных с агрегатом по одной из колонок

На рисунке в нижней части таблицы данных отображена строка на светло-желтом фоне, в которой в колонке "Число продаж" показана сумма числа всех продаж, отображаемых в таблице.

Агрегат может быть вычислен и показан по любой из колонок.

Если данные в таблице отфильтрованы, то агрегат будет рассчитан только по тем записям, которые отобраны по условию фильтрации.

Если данные в таблице сгруппированы, то агрегаты будут рассчитаны как для всех отображаемых в таблице данных, так и отдельно для каждой группы.

Отображение агрегатов для сгруппированных данных

На рисунке данные о продажах сгруппированы по региону. Суммы числа продаж и среднее значение выручки отображены как для каждого региона (в строках на ярко-желтом фоне), так и для всех продаж в целом (в строке на светло-желтом фоне внизу таблицы).

Если свернуть группы, то можно просматривать только итоговые значения агрегатов для групп и для всех объектов в целом. Агрегаты при этом будут видны только в случае, если они отображаются правее надписи с именем и значением параметра группировки.

Режим отображения только агрегатов для групп


2.3.10. Редактирование данных в таблице

В таблице данных может редактироваться значение одного свойства одного объекта. Для того чтобы изменить отображаемое в таблице данных значение необходимо выделить требуемый элемент данных щелчком мышью или клавишами со стрелками на клавиатуре, после чего перевести элемент данных в режим редактирования. Это можно сделать одним из двух способов:

  • выполнить двойной щелчок мышью на элементе данных
  • при выделенном активном элементе данных нажать клавишу Enter на клавиатуре

После перевода элемента данных в режим редактирования отображаемый в нем текст будет выделен. Текст может быть отображен на белом или на сером фоне. Справа от текста могут появиться кнопки.

Перевод элемента данных в режим редактирования

На рисунке элемент данных в пятой сверху строке в первой колонке (текст "Белоснежка") переведен в режим редактирования.

Отображение элемента данных в режиме редактирования зависит от типа отображаемого свойства, доступности свойства для изменения и допустимости установленного значения.


  1. Редактирование значения "только для чтения"
    Если текст отображается на сером фоне, это означает, что свойство доступно только для чтения. У Вас нет возможности изменять его значение. Такое значение (или его часть) можно выделить и скопировать при помощи сочетания клавиш Ctrl+Ins или Ctrl+C и затем вставить в доступном для ввода значений месте в этом или в любом другом приложении.

  2. Редактирование недопустимого значения
    Если текст отображается на зеленом фоне, это означает, что установленное в данный момент значение недопустимо. Значение считается недопустимым, в одном из следующих случаев:
    • значение, обязательное для заполнения, не установлено
    • для свойства установлено значение, не удовлетворяющее его типу (например, на приведенном выше рисунке для числового свойства установлено значение, включающее буквы). Форматы, допустимые для значений различных типов, соответствуют локальным настройкам операционной системы Windows
    • длина текста для свойства строкового типа превышает максимально допустимую длину
    • введенное значение больше максимально допустимого или меньше минимально допустимого
    • для свойства, предполагающего выбор из списка или из справочника, установлено значение, не соответствующее ни одному из допустимых значений из списка или справочника
    Пока для свойства не будет установлено допустимое значение, применить выполненное изменение не удастся.

  3. Редактирование значения
    Если в режиме редактирования в ячейке отображается обычный текст на белом фоне, то значение свойства доступно для изменения. Редактирование значения производится при помощи клавиш клавиатуры. Выделенное значение или его часть может быть скопирована и вставлена стандартным образом. При редактировании текста обращайте внимание на тип свойства (строковое, числовое, дата и т.п.). Если введенное значение не будет удовлетворять типу, то оно будет считаться недопустимым и станет отображаться на зеленом фоне. Форматы, допустимые для значений различных типов, соответствуют локальным настройкам операционной системы Windows. После изменения значения необходимо нажать клавишу Enter для того, чтобы применить сделанные изменения.
  4. Если слева от текста в ячейке отображается флажок, это означает, что свойство может иметь одно из двух возможных значений. Одно из значений соответствует установленному флажку, другое - снятому. Если для свойства допустимо пустое значение, то в случае его установки флажок будет отображен на сером фоне и справа от него будет отображен текст "(Нет)".
    Редактирование логического значения "истина"   Редактирование логического значения "ложь"
    Изменение значения такого свойства производится либо щелчком мыши по флажку, либо путем нажатия клавиши Пробел на клавиатуре.

  5. Редактирование значения в выпадающем списке
    Если справа от текста отображается кнопка с направленной вниз стрелкой, это означает, что значение свойства должно быть выбрано из списка допустимых значений. Изменять такое значение можно двумя способами:
    • Нажать на кнопку Кнопка выпадающего списка, расположенную справа от текста, в открывшемся выпадающем списке выбрать новое значение.

      Выбор значения из таблицы данных

      На рисунке показан выбор значения из выпадающего списка. Если Вы выбираете значение при помощи мыши, то достаточно выполнить щелчок мышью на нужном значении. Для выбора значения при помощи клавиатуры необходимо воспользоваться клавишами-стрелками "вверх" и "вниз", и когда нужное значение будет выделено, нажать клавишу Enter. Если для свойства допустимо пустое значение, то первым элементом выпадающего списка будет элемент "(Нет)". Если список включает больше восьми элементов, то в нем будет доступна вертикальная полоса прокрутки.

    • Ввести текст, соответствующий нужному элементу списка, с клавиатуры. В процессе ввода будут предлагаться допустимые для выбора значения. Если введенный с клавиатуры текст не будет удовлетворять ни одному из элементов списка, он будет отображен на зеленом фоне, и установить новое значение не удастся. При вводе значения с клавиатуры следите за регистром символов. После ввода нового значения необходимо нажать клавишу Enter.

  6. Редактирование значения с выбором
    Если справа от текста отображается кнопка с тремя точками, это означает, что данное свойство предполагает выбор значения из другой таблицы данных. Изменять такое значение можно двумя способами:
    • Нажать на кнопку Кнопка выбора, расположенную справа от текста; при этом откроется таблица данных, в которой нужно будет выбрать новое значение. В правом нижнем углу этой таблицы данных будут расположены кнопки OK и Отмена. Для выбора значения можно щелкнуть мышью по нужной записи или воспользоваться стрелками на клавиатуре. После выбора нужного значения нажмите кнопку OK. Если Вы не хотите менять ранее установленное значение, нажмите кнопку Отмена.

      Выбор значения из таблицы данных

      На рисунке представлена таблица данных, которая будет отображена для выбора значения свойства, представляющего собой сорт мороженого.

    • Ввести текст, соответствующий нужному значению, с клавиатуры. В процессе ввода будут предлагаться допустимые для выбора значения. Если введенный с клавиатуры текст не будет совпадать ни с одним из допустимых значений, он будет отображен на зеленом фоне, и установить новое значение не удастся. При вводе значения с клавиатуры следите за регистром символов. После ввода нового значения необходимо нажать клавишу Enter.

  7. Редактирование значения с выбором и выпадающим списком
    Если справа от текста отображаются две кнопки - кнопка со стрелкой и кнопка с тремя точками, то можно как выбирать значение из выпадающего списка, так и выбирать значение из таблицы данных (описано выше). В этом случае так же можно вводить текст, соответствующий допустимому значению с клавиатуры. После ввода значения с клавиатуры необходимо нажать клавишу Enter.

  8. Редактирование большого значения

    Если справа от текста отображены три кнопки, а сам текст представляет собой строку "(Данные)" или строку "(Нет)" это означает, что данное свойство представляет собой большой объект. Большой объект может быть текстом, файлом, содержащим изображение, xml-документ, исходный текст программных модулей или просто любые бинарные данные.

    При нажатии на кнопку Кнопка выбора отобразится окно, отображающее и позволяющее редактировать данные, представляющие собой большой объект.

    Окно для редактирования большого объекта

    На рисунке изображено окно, в котором может редактироваться исходный текст метода. После внесения изменений в текст окно редактирования нужно закрыть. Если в тексте действительно произошли изменения, то будет отображено предупреждение:

    Предупреждение окна редактирования большого объекта

    При нажатии кнопки Да окно редактирования будет закрыто, и изменения будут сохранены. При нажатии кнопки Нет окно редактирования будет закрыто, но произведенные изменения сохранены не будут. При нажатии кнопки Отмена окно редактирования останется открытым и работу с текстом можно будет продолжить.

    Копка Кнопка загрузки из файла позволяет загрузить содержимое большого объекта из файла. При нажатии этой кнопки отобразится стандартный диалог открытия файла Windows, в котором можно выбрать нужный файл, после чего нажать кнопку Открыть. При замене содержимого большого объекта новым будет отображено предупреждение:

    Предупреждение при загрузке из файла большого объекта

    Если нажать кнопку Да, то содержание большого объекта будет заменено новым, загруженным из указанного файла. Если нажать кнопку Нет, то содержание большого объекта не изменится

    Кнопка Кнопка сохранения в файл позволяет сохранить содержимое большого объекта в файл. При нажатии этой кнопки отобразится стандартный диалог сохранения файла Windows, в котором необходимо задать расположение и имя файла и нажать кнопку Сохранить. При сохранении файла необходимо явно указать его расширение. При сохранении файла никаких предупреждений не отображается.

    После изменения содержания большого объекта необходимо нажать клавишу Enter.


2.3.11. Выполнение действий над объектами

Все действия, которые могут быть произведены над объектами, могут быть выполнены одним из трех способов:

  • выбор действия в контекстном меню
  • вызов действия при помощи клавиш клавиатуры - "горячих клавиш" (доступно не для всех действий)
  • вызов действия при помощи иконки на панели инструментов (доступно не для всех действий)

При помощи действий производится добавление, удаление объектов, запуск различных процедур, выполняемых над данными, формирование отчетов.

Перечень всех действий, доступных в текущей таблице данных расположен в контекстном меню, которое отображается при нажатии правой кнопки мыши в зоне таблицы данных. Некоторые из действий выполняются для выбранных объектов (одного или нескольких), например, действие "Удалить". Для выполнения других действий выбор конкретного объекта не нужен, например, для действия "Добавить". Выбор действия в контекстном меню может производиться как при помощи мыши, так и при помощи стрелок на клавиатуре.

Если для действия установлены " горячие клавиши ", то из обозначения можно будет увидеть в правой части пункта контекстного меню. Действия могут вызываться как при нажатии одной клавиши, так и при помощи сочетания клавиш.

В некоторых пунктах контекстного меню может быть расположена стрелка Стрелка раскрытия контекстного меню. При выборе такого пункта никакого действия не выполняется, а открывается " подменю ", содержащее другие действия.

Выполнение действий над объектами при помощи контекстного меню

На рисунке изображено контекстное меню, отображающее все действия, доступные над объектом, соответствующим студенту Алехиной Елене Михайловне. Действиям "Добавить студента-специалиста", "Удалить" и "Обновить" соответствуют "горячие клавиши". Пункты меню "Перемещения", "Колонка", "Выбранные" имеют подменю. На рисунке открыто подменю пункта "Перемещения".

Для некоторых действий могут быть установлены изображения-иконки. В этом случае иконки отображаются на панели инструментов (подробнее в разделе 4.13. "Работа с панелью инструментов").

Если выполнение процедуры или отчета требует задания параметров, то при вызове действия отобразится форма задания параметров. Для выполнения действия необходимо заполнить поля формы и нажать кнопку OK (подробнее в разделе 6 "Работа с формой задания параметров").

Перед выполнением некоторых действий может быть отображено предупреждение. Например, перед удалением объекта может отображаться следующее окно:

Предупреждение при выполнении действия

Если в таком окне нажать кнопку Да, то действие будет выполнено. Если нажать кнопку Нет, то действие будет отменено.


2.3.12. Работа с панелью инструментов

На панели инструментов отображаются иконки, соответствующие доступным пользователю действиям и формам. Иконки могут иметь подписи, соответствующие наименованием действий или форм. Вызов действий или переключение между активными формами осуществляется при помощи щелчка мышью на одной из иконок. Если иконок много и они не помещаются на панели инструментов по ширине, то слева или справа отображаются кнопки прокрутки. Для прокрутки содержимого панели инструментов достаточно подвести указатель мыши к кнопке прокрутки.

Панель инструментов

На рисунке представлен пример панели инструментов. Иконки с подписями "Создать", "Удалить", "Колонка", "Выбранные", "Перенос в Excel" соответствуют доступным в текущей таблице данных действиям. Иконки с надписями "Системная форма" и "Продажи мороженого" соответствуют доступным пользователю формам. Справа от иконки "Продажи мороженого" расположена кнопка прокрутки. Подведя указатель мыши к этой кнопке, можно увидеть иконки, расположенные правее и не поместившиеся на панели инструментов.

Некоторые кнопки панели инструментов могут иметь выпадающие кнопки. Выпадающие кнопки соответствуют пунктам подменю контекстного меню. Справа от кнопок, имеющих выпадающие кнопки, расположена направленная вниз стрелочка. Если нажать мышью на эту стрелочку, то отобразится панель с выпадающими кнопками. На рисунке кнопки "Колонка" и "Выбранные" имеют выпадающие кнопки.

Панель выпадающих кнопок

Как и в контекстном меню, на панели инструментов некоторые кнопки могут быть недоступны. Доступность кнопки зависит от того, какие объекты в настоящий момент выделены, и от применимости действия к выделенным объектам.


2.3.13. Стандартные действия, доступные в любых таблицах данных

Ряд стандартных действий, доступных объектов любого типа, может быть вызван из любой таблицы данных. Разработчиком конкретной прикладной системы некоторые из перечисленных в данном разделе действий могут быть скрыты. Также перечень доступных стандартных действий зависит от прав доступа конкретного пользователя.

Стандартные действия

Взаимное расположение, наименования и доступность стандартных действий могут зависеть от реализации прикладной системы. В следующих разделах описаны все стандартные действия, реализованные средствами платформы.


2.3.13.1. Копирование и вставка объектов

Объекты, отображаемые в таблице данных, можно копировать и вставлять. Вставлять объекты можно как в ту же таблицу данных, из которой они были скопированы, так и в другую таблицу данных, отображающую объекты того же типа. Для этого необходимо выполнить следующие действия:

  1. Выбрать один или несколько объектов, которые Вы хотите скопировать (см. раздел 4.3. "Выбор объектов в таблице данных").
  2. Вызвать действие "Копировать" из контекстного меню или при помощи иконки на панели инструментов.
  3. Перейти в таблицу данных, в которую Вы хотите вставить скопированные объекты.
  4. Вызвать действие "Вставить" из контекстного меню или при помощи иконки на панели инструментов.

При копировании и вставке происходит создание копии объекта. Все свойства нового объекта, кроме свойства "Имя" (или замещающего его свойства), будут такими же, как у первичного объекта. Свойство имя будет равно строке, составленной из слова "Копия " и имени первичного объекта. После вставки объекта значение свойства "Имя" можно изменить.

Действия "Копировать" и "Вставить" имеют соответствующие иконки на панели инструментов:
Кнопка "копировать"  Кнопка "вставить"


2.3.13.2. Подменю "Колонка" - работа с колонкой

Действия, доступные в подменю "Колонка" в контекстном меню или на панели инструментов могут быть применены к колонкам любой таблицы данных. Доступность тех или иных действий над колонкой зависит от типа данных, отображаемых в колонке, и от того, какие действия над колонкой уже совершены (например, нельзя вычислить сумму значений строкового типа, или нельзя очистить группировку, если данные не сгруппированы).

Иконка "Колонка" на панели инструментов имеет выпадающие кнопки:
Кнопки подменю работы с колонкой

Действия, доступные в подменю "Колонка", описаны в разделах 4.6. "Скрытие и отображение колонок", 4.8. "Группировка данных в таблицах", 4.10. "Отображение итоговых значений (агрегатов) по колонкам".


2.3.13.3. Подменю "Выбранные" - работа с выбранными объектами

Действия, доступные в подменю "Выбранные" позволяют быстро отбирать и снимать отбор с объектов, а также устанавливать режим отображения в таблице данных только тех объектов, которые помечены как выбранные.

Иконка "Выбранные" на панели инструментов имеет выпадающие кнопки:
Кнопки подменю работы с выбранными объектами

Назначение этих действий описано в разделе 4.3. "Выбор объектов в таблице данных".


2.3.13.4. Перенос в Excel

Данные, отображаемые в любой из таблиц данных, могут быть перенесены в MS Excel. При этом в MS Excel будут сохранены все настройки отображения данных (сортировка по одной или нескольким колонкам, группировка, отображение итоговых значений). Действие "Перенос в Excel" может быть вызвано из контекстного меню или при помощи иконки на панели инструментов. С данными, перенесенными в MS Excel, далее могут производиться любые манипуляции средствами этого приложения.

Если в таблице много записей, то перенос данных в Excel может занять некоторое время. Если это время превышает 10 сек., то отобразится окно, сообщающая, что система находится в работе. В этом окне будет отображен индикатор процесса переноса данных:
Индикатор прогресса переноса данных в Excel

Действие "Перенос в Excel" имеет соответствующую иконку на панели инструментов:
Кнопка переноса в Excel


2.3.13.5. Экспорт данных

Отображаемые в таблицах данных объекты могут быть экспортированы в виде xml-документа. Для того, чтобы осуществить экспорт объектов, необходимо выполнить следующее:

  1. Выбрать объекты, подлежащие экспорту (см. раздел 4.3. "Выбор объектов в таблице данных").
  2. Вызвать действие "Экспортировать" из контекстного меню или при помощи иконки на панели инструментов.
  3. В открывшемся окне сохранения файла указать местоположение и имя файла. Дать файлу расширение .xml.


2.3.13.6. Обновление данных таблицы

После выполнения действий над различными объектами, хранящимися в системе, их новое состояние может сразу не отобразиться в таблице данных. Для того чтобы получить из базы данных последние актуальные данные необходимо воспользоваться действием "Обновить", которое доступно в контекстном меню, при помощи иконки на панели инструментов, а также может быть доступно при нажатии клавиши F5.

Действие "Обновить" имеет соответствующую иконку на панели инструментов:
Кнопка обновления набора данных


2.3.13.7. Доступ к настройкам системы

При наличии соответствующих прав доступа Вы можете просматривать и изменять настройки системы. Доступ к меню настроек осуществляется при помощи действия "Настройки", которое может быть вызвано из контекстного меню или при помощи иконки на панели инструментов. При вызове этого действия отобразится форма задания настроек. Эта форма аналогична форме задания параметров (см. раздел 6 "Работа с формой задания параметров"). Если Вы имеете права администратора системы, то форма задания настроек, кроме кнопок OK и Отмена, будет иметь кнопку "По умолчанию". При нажатии этой кнопки значения, установленные в полях формы станут значениями настроек по умолчанию.

Форма задания настроек системы

Если в системе нет доступных для текущего пользователя настроек, то при вызове действия "Настройки" отобразится окно:
Сообщение об отсутствии доступных настроек

Действие "Настройки" имеет соответствующую иконку на панели инструментов:
Кнопка формы настроек


2.3.13.8. Дополнительные действия, доступные в иерархических таблицах данных

В иерархических таблицах данных дополнительно доступны действия, позволяющие управлять раскрытием и свертыванием элементов иерархии. Эти действия расположены в подменю "Дерево". Иконка "Дерево" на панели инструментов имеет выпадающие кнопки:
Кнопки подменю работы с иерархией

При помощи этих действий можно управлять отображением дерева иерархически организованных объектов следующим образом:

  • Развернуть все - все элементы дерева будут раскрыты.
  • Свернуть все - все дочерние элементы будут свернуты. Отображенными останутся только элементы первого уровня (не имеющие родительских элементов).
  • Развернуть от выбранного - узел дерева, соответствующий выбранному объекту и все его дочерние узлы будут раскрыты.
  • Свернуть к выбранному - узел дерева, соответствующий выбранному объекту у все его дочерние узлы будут свернуты.
  • Свернуть к этому уровню - все узлы дерева, лежащие на том же уровне, что и выбранный объект или на более низких уровнях будут свернуты.
  • Выделить дочерние - все объекты, дочерние по отношению к выбранному, будут выделены.


2.4. Работа с Инспектором объектов

2.4.1. Отображение свойств Инспектором объектов

Инспектор объектов предназначен для просмотра и редактирования свойств одного или нескольких объектов, выбранных в активной таблице данных. Инспектор объектов имеет две колонки. В левой колонке отображаются наименования свойств, в правой колонке отображаются значения свойств. Набор отображаемых свойств и их значений зависит от того, сколько объектов каких типов выбрано в текущей таблице данных (подробнее о выборе объектов см. раздел 4.3. "Выбор объектов в таблице данных"). Свойства выбранных объектов отображаются Инспектором объектов по следующим правилам:

  1. Если в таблице данных выбран один объект, то в Инспекторе объектов отображаются все свойства этого объекта, видимые пользователю.
  2. Если в таблице данных выбрано несколько объектов, то
    • Инспектор объектов будет иметь строки, соответствующие только тем свойствам, которые есть у всех выделенных объектов;
    • если у всех выделенных объектов значение свойства одинаково, то это значение будет отображено в правой колонке; в противном случае в правой колонке будет отображено пустое значение.
  3. При изменении значения свойства в Инспекторе объектов новое значение будет установлено для всех выделенных объектов.

Выбран один объект - вид на инспектор объектов  Выбран один объект - вид на таблицу

На рисунке представлен пример таблицы данных, отображающей учитываемые в системе сорта мороженого. Среди сортов мороженого есть как обычные сорта, так и сорта фруктового мороженого, дополнительно обладающие свойством "Фрукт". В таблице данных выделен один объект, соответствующий сорту фруктового мороженого "Тропический рай". При этом Инспектор объектов отображает все свойства данного объекта (в том числе свойство "Фрукт").

Выбрано несколько объектов - вид на инспектор объектов  Выбрано несколько объектов - вид на таблицу

На рисунке в той же таблице данных выбрано два объекта: сорт мороженого "Тропический рай" (фруктовое мороженое) и сорт "Белый Бим черное ухо" (обычное мороженое). При этом в Инспекторе объектов отображаются только те свойства, которые являются общими для выделенных объектов (свойство "Фрукт" не отображается). Значения свойств "Вид упаковки" и "Вес" для выбранных объектов одинаковы, поэтому их значения отображены в правой колонке Инспектора объектов. Значения остальных свойств для данных объектов различны, поэтому для этих свойств отображаются пустые значения. Если изменить одно из свойств в Инспекторе объектов, то новое значение будет установлено как для сорта мороженого "Тропический рай", так и для сорта мороженого "Белый Бим черное ухо".

Порядок отображения свойств в Инспекторе объектов устанавливается разработчиком прикладной системы. Также разработчиком прикладной системы может быть установлено отнесение свойств к категориям. В этом случае свойства могут отображаться сгруппированными по категориям. Слева от наименования каждой категории будет отображен значок Свернутый узел дерева или Развернутый узел дерева. Нажатием мышью на значок Развернутый узел дерева свойства, входящие в категорию, можно свернуть, нажатием на значок Свернутый узел дерева их можно снова отобразить.

Отображение Инспектором объектов свойств, сгруппированных по категориям

На рисунке представлен пример отображения Инспектором объектов свойств объекта, соответствующего дисциплине учебного плана студентов. Свойства, отнесенные к категориям "Формы текущего контроля" и "Распределение аудиторных часов по модулям", свернуты. Свойства, отнесенные к категории "Учебные часы" раскрыты.

В связи с тем, что выбор свойств объектов для отображения, получение и сравнение их значений происходит по специальному алгоритму, в случае одновременного выбора большого числа объектов скорость работы Инспектора объектов может снижаться. Если на вычисление значения общего свойства группы объектов требуется значительное время, то такое свойство может отображаться как свойство с отложенным вычислением. Для такого свойства в правой колонке вместо значения может отображаться строка (...). При активизации этого свойства справа отобразится кнопка со знаком вопроса Кнопка вычисления отложенного свойства. Если нажать на эту кнопку, то значение свойства будет определено и отображено.

Свойство с отложенным вычислением


2.4.2. Управление положением Инспектора объектов на экране и порядком отображения свойств

Инспектор объектов отображается в отдельном окне. Это окно можно перетаскивать по экрану за заголовок, изменять его размеры стандартным для операционной системы Windows образом. На панели инструментов всегда присутствует иконка Инспектора объектов, при нажатии которой можно отобразить окно Инспектора (если оно не видимо) и сделать его активным:
Кнопка инспектора объектов

При нажатии правой кнопки мыши в левом столбце Инспектора объектов или в свободном нижнем поле доступно контекстное меню Инспектора объектов. При помощи действий, расположенных в этом меню можно управлять режимом работы окна Инспектора и порядком отображения свойств.

Контекстное меню инспектора объектов

Выбор одного из пунктов контекстного меню переводит Инспектор объектов в новый режим работы. После этого рядом с пунктом меню отображается галочка Флажок в контекстном меню или точка Радиокнопка в контекстном меню. При повторном выборе помеченного пункта меню соответствующий режим работы отменяется и отметка снимается. Доступные пункты контекстного меню позволяют устанавливать следующие режимы работы Инспектора объектов.

  • При выборе пункта меню Всегда наверху окно Инспектора объектов будет всегда отображаться на переднем плане независимо от переключения между активными таблицами данных.
  • Если выбрать пункт меню Прозрачное окно, то окно Инспектора объектов станет полупрозрачным.
  • Если выбрать пункт меню Показать скрытые свойства, то кроме свойств, отображаемых в обычном режиме (свойства, созданные разработчиком прикладной системы как " видимые ") будут отображены свойства объектов, " невидимые " пользователю.
  • Пункт меню Сортировать по алфавиту позволяет отображать свойства не в порядке, установленном разработчиком прикладной системы, а в алфавитном порядке их наименований. Такой режим работы удобен в случае, если необходимо найти свойство по его наименованию.
  • Пункты подменю Группировка позволяют:
    • Группировать по категории - свойства будут отображены сгруппированными по категориям (показано на рисунке);
    • Группировать по классу - свойства будут отображены сгруппированными по классу объектов, членами которого они являются;
    • Не группировать - свойства будут отображены без группировки.

2.4.3. Редактирование значений свойств при помощи Инспектора объектов

При помощи Инспектора объектов удобно изменять значения свойств одного или одновременно нескольких выбранных объектов (о выборе объектов см. раздел 4.3. "Выбор объектов в таблице данных"). Одно из свойств, отображаемых в Инспекторе объектов, всегда является активным. Активное значение выделяется в Инспекторе объектов рамкой, его значение отображается в режиме редактирования.

Отображение свойств в режиме редактирования и способы изменения значений свойств аналогичны редактированию данных в таблице данных (см. раздел 4.11. "Редактирование данных в таблицах"). Отличие работы Инспектора объектов заключается в том, что с его помощью можно изменять значение свойства сразу нескольких выбранных объектов.


2.5. Работа с формой задания параметров

Форма задания параметров используется для организации диалога с пользователем по заданию параметров, необходимых для выполнения метода или формирования отчета. Форма задания параметров открывается при вызове действия, для выполнения которого необходимо задать параметры.

Форма задания параметров представляет собой форму, содержащую поля различного вида. В правом нижнем углу формы расположены кнопки ОК и Отмена.

Форма задания параметров

Слева или сверху от каждого поля расположено его наименование. Наименования поля отражает, какие данные должны быть в него введены. Поля формы объединяются в группы. Группы полей могут располагаться в столбцах или на закладках. На рисунке выше поля формы расположены в двух столбцах. Если поля расположены на закладках, то в верхней части формы отображаются заголовки закладок с их наименованиями.

Расположение полей формы на закладках

На рисунке представлена та же форма, что и на рисунке выше, но с расположением параметров на закладках.

Порядок отображения полей на форме, а также способ их отображения (в столбцах или на закладках) задается разработчиком прикладной системы. Переход от одного поля к другому может осуществляться либо щелчком мышью на новом поле, либо при помощи клавиши Tab на клавиатуре. Переключаться между закладками можно путем нажатия мышью ни их заголовок.

Для выполнения действия, требующего задания параметров, необходимо заполнить все обязательные поля формы. После установления допустимых значений все поля формы должны приобрести белый фон. При этом условии кнопка OK станет доступной. После нажатия кнопки OK будет выполнен вызываемый метод или сформирован отчет. Если Вы хотите отменить выполнение действия, нажмите кнопку Отмена.

Поля формы могут иметь белый, зеленый или серый фон, а также могут иметь различный внешний вид. Цвет фона зависит от доступности для изменения и допустимости введенного в поле значения. Внешний вид поля зависит от типа данных, которые должны быть в него введены. Возможны следующие варианты внешнего вида полей и способ установления в них значений:

  1. Если поле имеет серый фон, то его значение недоступно для изменения. Такие поля используются для отображения дополнительной информации. Значения в таких полях могут изменяться автоматически при установке новых значений в других полях формы.
    Редактирование значения "только для чтения" на форме
  2. Обычное поле отображается в случае, когда в него должно быть введено строковое значение длиной до 128 символов, целочисленное, вещественное (с целой и дробной частью) значение, значение типа даты, времени, или даты со временем
    Редактирование недопустимого значения на форме
    В таком поле можно вводить текст с клавиатуры, копировать и вставлять его. Введенные в такое поле символы проверяются на соответствие типу данным (на основе локальных настроек компьютера) и на удовлетворение значения дополнительным условиям, которые могут быть установлены разработчиком прикладной системы. В случае если введенный набор символов соответствует недопустимому для данного поля значению, поле приобретет зеленый фон.
    Редактирование значения на форме - установлено допустимое значение
    Редактирование недопустимого значения даты на форме - установлено недопустимое значение.
  3. Для ввода строковых значений, длина которых может превышать 128 символов, отображаются расширенные поля ввода:
    Редактирование длинной строки на форме
    В таком поле можно вводить текст с клавиатуры, копировать его и вставлять. Также в таком поле может вводится многострочный текст. Перенос строки осуществляется нажатием клавиш Ctrl+Enter. Если текст имеет большое число строк, для его просмотра используется вертикальная полоса прокрутки.
  4. Для выбора значения из двух возможных вариантов используется поля, в котором отображается флажок и текстовое значение.
    Редактирование логического значения на форме
    Изменение значения в таком поле может производиться либо щелчком мыши по флажку, либо при помощи клавиши Пробел на клавиатуре. Если в данном поле пустое значение недопустимо, то переключение происходит между двумя возможными значениями (например, для поля "Пол" между значениями "Муж." и "Жен."). Если пустое значение допустимо, то переключение происходит между тремя вариантами: двумя значениями и пустым значением, для которого отображается строка "(Нет)".
  5. Если значение поля должно быть установлено путем выбора из списка допустимых значений, то в правой части поля отображается кнопка с направленной вниз стрелкой.
    Редактирование значения из выпадающего списка на форме
    Установление значения в таком поле может производиться либо при помощи выбора из выпадающего списка, открывающегося при нажатии на кнопку Кнопка выпадающего списка, либо путем ввода с клавиатуры текста, соответствующего выбираемому значению. В процессе ввода будут предлагаться допустимые варианты.
  6. Если поле предполагает ввод большого объекта, то оно отображается следующим образом:
    Редактирование большого значения на форме
    Если в поле значение не установлено, то отображается текст "(Нет)". Если значение установлено, то отображается текст "(Данные)". В правой части поля ввода расположено три кнопки:
    • Кнопка выбора при нажатии этой кнопки будет отображено окно редактирования текста большого объекта;
    • Кнопка загрузки из файла при нажатии этой кнопки большой объект можно загрузить из файла при помощи стандартного диалога открытия файла Windows;
    • Кнопка сохранения в файл при нажатии этой кнопки большой объект можно сохранить в файл при помощи стандартного диалога сохранения файла Windows.
  7. Если поле предполагает выбор объекта из другой таблицы данных, то в правой части поля отображается кнопка с тремя точками или кнопка со стрелкой и кнопка с тремя точками.
    Редактирование значения с выбором на форме
    Выбор значений в таком поле производится путем нажатия на одну из кнопок:
    • Кнопка выпадающего списка при нажатии данной кнопки отображается выпадающий список объектов которые могут быть выбраны в данном поле;
    • Кнопка выбора - при нажатии данной кнопки будет открыта таблица данных, и в ее правом нижнем углу будут расположены кнопки OK и Отмена. В открывшейся таблице нужно выбрать один объект, после чего нажать кнопку ОК.

При работе с формой задания параметров рекомендуется устанавливать в полях значения в порядке их следования на форме. Разработчиком прикладной системы может быть установлена зависимость между значениями полей. В этом случае при изменении значения в одном из полей, в других полях значения также могут автоматически измениться. Допустимость значений в одних полях может зависеть от того, какие значения установлены в других полях.

Также необходимо помнить о том, что кнопка ОК на форме задания параметров станет доступной только тогда, когда во всех полях будут установлены допустимые значения.


2.6. Формирование отчетов Microsoft Excel

Формирование отчетов, выгружаемых в MS Excel происходит при помощи вызова действий в таблицах данных (подробнее о вызове действий см. раздел 4.12 "Выполнение действий над объектами"). При вызове отчета на выполнение может отобразиться форма задания параметров отчета. Поля этой формы необходимо заполнить, после чего нажать кнопку ОК (подробнее о работе с формой задания параметров см. раздел 6. "Работа с формой задания параметров").

Отчеты, выгружаемые в MS Excel, как правило, имеют иконки на панели инструментов, характерные для рабочих книг Excel:
Кнопка формирования отчета Microsoft Excel

При запуске отчета на исполнение происходит создание рабочей книги Excel, в которую передаются данные, хранящиеся в базе данных. Рабочая книга может содержать данные, диаграммы, интерактивные элементы управления, и проч.. Далее средствами MS Excel могут осуществляться любые доступные действия с рабочей книгой.

Отчеты в MS Excel используются для вывода на печать документов и стандартных форм отчетности. Шаблоны отчетов создаются разработчиками прикладной системы.

Полученный в результате формирования отчета файл MS Excel может далее использоваться для дальнейшей работы с данными, может быть распечатан, сохранен, отправлен по электронной почте и т.п.


2.7. Формирование отчетов в виде HTML-документов

В целях публикации отчетной информации в Internet средствами системы могут формироваться отчеты в виде HTML-документов. Формирование таких отчетов происходит путем вызова действий в таблицах данных (подробнее о вызове действий см. раздел 4.12 "Выполнение действий над объектами"). При вызове отчета на выполнение может отобразиться форма задания параметров отчета. Поля этой формы необходимо заполнить, после чего нажать кнопку ОК (подробнее о работе с формой задания параметров см. раздел 6. "Работа с формой задания параметров").

Отчеты, формируемые в виде HTML-документов, как правило имеют иконки на панели инструментов, характерные для приложения MS Internet Explorer:
Кнопка формирования XSLT-отчета

В результате работы отчета создается HTML-документ, который может содержать таблицы с данными, рисунки, ссылки и проч. Сформированный документ показывается при помощи приложения Internet Explorer. Полученный html-файл может быть опубликован в Internet, сохранен, распечатан и т.д.

Сформированный html-документ сохраняет связь в базой данных. Если в ранее открытом документе выполнить процедуру обновления, по документ отобразит последнюю версию хранящихся на сервере БД данных.


2.8. Взаимодействие с разработчиком в случае ошибок, проблем, вопросов по работе системы

В ситуациях, когда в работе системы происходят ошибки, когда система ведет себя неожиданным для пользователя образом, наблюдаются проблемы с быстродействием или другими аспектами работы системы, если у пользователей возникают вопросы, не освещенные в Руководстве пользователя, возникает необходимость обратиться к разработчику. Для того, чтобы разработчик мог решить проблему или ответить на вопрос быстро, полно и компетентно, ему нужно предоставить информацию о среде работе системы, о решаемых пользователем задачах, последовательности действий пользователя, приведших к проблемной ситуации.

Общими принципами сбора информации для обращения к разработчику должны быть:

  1. Необходимо быть готовым изложить последовательность действий пользователя в системе, начиная с открытия системы до ситуации, приводящей к ошибке, проблемной ситуации или ситуации, вызывающей вопрос.
  2. Если ошибка или проблема имеет визуальное проявление, нужно сделать скриншот (снимок) экрана. Желательно предоставлять скриншот всего экрана компьютера, а не только активного окна приложения, это даст разработчику дополнительную полезную информацию. Скришот экрана при работе в операционной системе MS Windows можно получить путем одновременного нажатия клавиш Ctrl + Print Screen (PrtScr) и последующей вставки (сочетание клавиш Shift + Ins) в какое-либо графическое приложение, например, программу Paint.
  3. Если ошибка заключается не в отображении специального окна с сообщением об ошибке, а в том, что результат работы системы является, с точки зрения пользователя, некорректным, то нужно быть готовым изложить, каким должен быть корректный результат, и чем именно результат работы системы некорректен.
  4. Если ошибка, проблема или вопрос связаны с работой третьесторонних приложений (например, отчеты, формируемые в MS Excel или MS Word, работа web-приложений системы посредством интернет-браузеров), нужно быть готовым предоставить информацию о версии третьесторонних приложений.
  5. Нужно быть готовым предоставить информацию о конфигурации рабочего места пользователя, версии операционной системы, установленном программном обеспечении и его версии, включая средства анитивирусной защиты.

Для сбора информации, необходимой разработчику для решения проблем, система предоставляет ряд средств: Приложение Отладочный монитор, возможность получения файла, содержащего информацию об ошибке, также ниже приведены рекомендации по получению информации о третесторонних приложениях.


2.8.1. Приложение Отладочный монитор

Приложение Отладочный монитор (DebugView.exe) устанавливается при установке платформы в любой конфигурации, предусмотренной по умолчанию, включая конфигурацию "Рабочее место пользователя". Открыть приложение можно при помощи иконки:

Иконка Debug Monitor

Когда приложение Отладочный монитор запущено, приложение Обозреватель данных выводит в него поток сообщений о действиях и событиях, происходящих в системе. В Отладочный монитор попадают все sql-запросы, направляемые с рабочего места пользователя на сервер баз данных (в случае удаленного подключения - html-запросы, направляемые на сервер приложений), информационные сообщения, предупреждения, отладочная информация, сообщения об ошибках и прочие данные.

DebugView screenshot

Для того, чтобы собрать и передать разработчику информацию об ошибке или проблемной ситуации при помощи Отладочного монитора, нужно выполнить следующие действия:

  1. Закрыть приложение Обозреватель данных, если оно было открыто.
  2. Запустить приложение Отладочный монитор. Если это приложение уже было открыто, то выполнить очитку всех имеющихся в нем сообщений при помощи кнопки Очистить.
  3. В приложение Обозреватель данных выполнить всю последовательность действий, приводящих в появлению ошибки или проблемной ситуации.
  4. После возникновения ошибки или проблемной ситуации в приложении Отладочный монитор нажать кнопку Сохранить в файл, выбрать место сохранения и задать имя файла. Файл будет сохранен в формате.txt.
  5. Отправить полученный.txt-файл разработчику в составе других информационных материалов, которыми должны быть:
    • Словесное описание проблемы и способа ее воспроизведения
    • Один или несколько скриншотов экрана, иллюстрирующих проблему

После получения информации, состав которой описан в пункте 5, разработчик может запросить дополнительную информацию о проблеме.


2.8.2. Получение файла, содержащего информацию об ошибке

В ходе работы с системой могут отображаться специальные окна с информацией об ошибках. Эти окна могут быть двух видов:

  1. Окно с информацией о недопустимом действии пользователя (окно с шапкой синего цвета):

    Окно ошибки. Синяя шапка.

    Как правило, отображение такого окна с информацией об ошибке свидетельствует не об ошибке в функциональности системы, а о том, что пользователем выполнено недопустимое действие. Информация о том, в чем именно действие не допустимо, содержится в тексте, отображаемом в окне. Например, на приведенном выше скриншоте мы видим окно с ошибкой, отображено после попытки пользователя создать в справочнике "Уровни образования и курсы" второй записи с именем "1 курс", подчиненной родительской записи "Бакалавриат", что недопустимо. Поэтому сообщение об ошибке говорит о дублировании объекта по полю Имя.

    Информация, отображаемая в окне данного вида, предназначена для пользователя. Вы можете направить информацию о такой ошибке разработчику в случае, если сообщение об ошибке непонятно, либо если считаете, что выполненное пользователем действие должно быть допустимым, и ошибка системы в том, что действие было расценено как недопустимое.

    При отображении окна данного вида пользователь может продолжить работу, нажав на кнопку Продолжить. При необходимости обратиться в данной ситуации к разработчику до нажатия кнопки Продолжить необходимо получить и сохранить информацию, необходимую разработчику для анализа ситуации, при помощи ссылок "Показать информацию для службы поддержки" или "Сформировать файл для службы поддержки". Подробнее о сохранении этой информации написано ниже.

  2. Окно с информацией об ошибке системы (окно с шапкой красного цвета).

    Окно ошибки. Красная шапка.

    При возникновении ситуации, сопровождающейся появлением такого окна, необходимо получить и сохранить информацию, необходимую разработчику для анализа ситуации, при помощи ссылок "Показать информацию для службы поддержки" или "Сформировать файл для службы поддержки". Подробнее о сохранении этой информации написано ниже.

    После сохранения информации об ошибке можно попытаться продолжить работу, нажав кнопку Продолжить. В некоторых случаях, в зависимости от характера произошедшей ошибки, продолжение работы может оказаться невозможным, в таких случаях нужно нажать кнопку Закрыть приложение. После того, как приложение будет закрыто, его можно будет открыть снова и продолжить работу.

Сохранение информации для направления разработчику.

Информация, которая поможет разработчику решить проблему, не отображается в самом окне, поэтому направлять разработчику скриншот именно этого окна не имеет смысла. Для получения необходимой для разработчика информации в окнах с сообщением об ошибке обоих видов расположены ссылки "Показать информацию для службы поддержки" или "Сформировать файл для службы поддержки".

По ссылке Показать информацию для службы поддержки информация отображается в том же окне. Весь текст изначально выделен, его можно сразу скопировать и вставить в текстовый файл, в тело письма и т.д. Данный текст содержит сам текст ошибки, а также информацию об операционной системе пользователя и ее версии, загруженных модулях, переменных окружения и проч.

Информация для службы поддержки

При помощи ссылки Сформировать файл для службы поддержки можно собрать в удобном виде наиболее полную и полезную для разработчика информацию. После нажатия на ссылку будет предложен диалог сохранения файла. По умолчанию файлу будет дано имя ExceptionInfo.err. Это имя можно изменить, но расширение необходимо файла сохранить. После выбора места сохранения и имени файла и нажатия кнопки Сохранить, система отобразить предупреждение:

Предупреждение при сохранении файла для службы поддержки

К данному предупреждению нужно отнестись ответственно - отправлять полученный файл только на адреса службы поддержки системы в вашей организации или на официальный контактный адрес разработчика (если вы взаимодействуете с разработчиком напрямую). После отправки этот файл необходимо удалить.

Предоставление разработчику информации в виде.err-файла - это самый удобный и надежный вариант взаимодействия, который даст возможность разработчику решить проблему или ответить на вопрос наиболее эффективным и быстрым образом. Данный файл содержит все виды информации, которые могут быть собраны другими способами:

  • Информацию об ошибке, которая отображается по ссылке "Показать информацию для службы поддержки"
  • Сообщения Отладочного монитора, собранные за некоторое время до возникновения ошибки
  • Скриншоты экрана пользователя, включая скриншот окна с информацией об ошибке.

При отправке файла разработчику дополнительно нужно описать последовательность действий, приведших к ошибке или ситуации, вызывающей вопросы. После получения файла и дополнительной информации, разработчик может попросить предоставить дополнительную информацию о проблемной ситуации, о конфигурации рабочего места пользователя, прочем установленном на рабочем месте ПО и проч.

Если вы хотите обратиться к разработчику по поводу ситуации, которая не сопровождается отображением окна с ошибкой, то.err-файл можно получить следующим образом: нужно кликнуть левой кнопкой мыши по иконке с мельницей в левом углу заголовка окна текущей формы и из выпадающего меню выбрать пункт Сохранить файл для службы поддержки.

Получение файла для службы поддержки

2.8.3. Получение информации о третесторонних приложениях

В случае, если ошибка произошла при взаимодействии системы с третьесторонним приложением, например, при выполнении отчета MS Excel, MS Word, pdf, при работе web-приложений системы через интернет-браузер, разработчику, в дополнение к файлу с информацией об ошибке, понадобится информация о версии третьестороннего приложения, при взаимодействии с которым произошла ошибка.

Получить информацию о версии приложения можно, как правило, в окне О программе ("About box"), которое в большинстве программных продуктов представлено в пункте меню Справка.

Разработчику в составе информационных материалов нужно отправить скриншот этого окна.

В продуктах семейства Microsoft Office вызвать окно О программе можно разными способами в зависимости от версии MS Office. В программных продуктах версий до 2003 включительно это окно доступно в меню Справка / О программе. В программных продуктах версий 2007 и выше вызвать это окно можно следующим образом:

  1. В меню Файл открыть выпадающий список доступных действий и нажать кнопку Параметры Excel :
    Параметры Excel
  2. В открывшемся окне выбрать раздел Ресурсы, в правой части окна нажать кнопку О программе :
    Вызов окна О программе Excel

Окно О программе в случае MS Excel выглядит следующим образом:

Окно О программе Excel

В программе Acrobat Reader окно О программе можно вызвать из меню Справка / О программе :

Вызов окна О программе Acrobat Reader

В интернет-браузерах окно "О программе" (О Google Chrome, О FireFox, О Internet Explorer) также можно вызвать из меню Справка. Строка меню в интернет-браузерах часто бывает по умолчанию скрыта. Для того, чтобы ее отобразить, нужно нажать клавишу Alt на клавиатуре.


3. Руководство пользователя построителя запросов

4. Руководство администратора

4.1. Установка программного обеспечения СУБД

Прежде, чем устанавливать программноге обеспечение "Мельница данных" необходимо установить и настроить программное обеспечение СУБД.

Для конфигурирования сервера БД необходимо последовать советам раздела "Конфигурирование сервера". В этом разделе описаны шаги, которые необходимо предпринять для установки сервера "с нуля". Если сервер БД у вас уже установлен и настроен, то использовать рекомендации этого раздела нет необходимости. Раздел описывает установку сервера БД минимальной поддерживаемой версии в минимально необходимой для работы "Мельницы данных" конфигурации. Если вы собираетесь использовать сервер БД для более широкого круга задач, то пользуйтесь руководствами по соответствующим СУБД.
        Документация по СУБД, а также любая другая информация, полученная от производителей СУБД, имеет абсолютный приоритет перед утверждениями настоящего документа.

На каждой рабочей станции должно быть установлено и настроено программное обеспечение клиентской части СУБД. Это, как правило, некий набор библиотек и компонентов, наличие которых необходимо для соединения с сервером БД. Для обеспечения рабочей станции этими компонентами необходимо последовать советам раздела Конфигурирование клиента. В этом разделе описаны шаги, которые необходимо предпринять для установки клиентской части СУБД "с нуля". Если клиентская часть СУБД у вас уже установлена и настроена, то использовать рекомендации этого раздела нет необходимости. Раздел описывает установку клиентской части СУБД минимальной поддерживаемой версии в минимально необходимой для работы "Мельницы данных" конфигурации.

В настоящий момент поддерживаемые СУБД приведены в таблице:
СУБД Минимальная
требуемая версия
Разработчик Сопровождение в России
        Firebird
Open source
1.5.4.4910
        Oracle database
Коммерческое ПО
9.2.0.1


4.1.1. Конфигурирование сервера
       

Младшая тестированная на совместимость версия - 1.5.4.4910. Использование более младшей версии на сервере недопустимо. Шаги установки примерно следующие:

  1. Первая страница содержит логотип проекта Firebird
    Установка FireBird (первая страница)
  2. Вторая страница содержит лицензионное соглашение. Для продолжения установки необходимо установить кнопку "I accept the agreement".
    Установка FireBird (вторая страница)
  3. Третья страница содержит информацию, необходимую для установки.
    Установка FireBird (третья страница)
  4. Четвертая страница позволяет указать папку на диске, в которую будут установлены файлы Firebird.
    Установка FireBird (четвертая страница)
  5. На пятой странице определяется тип установки. Мы конфигурируем сервер БД, и, соответственно, выбираем из выпадающего списка пункт "Full installation of Server and development tools". Необходимо определиться с выбором между различными архитектурами сервера. Если вы затрудняетесь в выборе между вариантами архитектуры сервера, то помните, что для однопроцессорных систем предпочтительнее Super Server, для многопроцессорных используется только Classic Server. Подробности можно посмотреть на сайте сопровождающей компании или на сайте проекта. Особое внимание требуется обратить на работу сервера на процессоре в режиме HyperThreading.
    Установка серверной части FireBird - выбор типа установки
  6. На шестой странице предлагается выбрать имя папки меню "Пуск", в которой будут созданы полезные ярлыки. В нашем случае ярлыки будут созданы для файлов документации, бесполезной в конечном счете для конечного пользователя. Поэтому мы ставим флажок "Don't create any icons".
    Установка FireBird (шестая страница)
  7. На седьмой странице необходимо выбрать параметры установки. Настоятельно рекомендуется включить флажок "Use the Guardian to control the server" и запускать сервер в режиме службы, то есть выбрать кнопку "Run as a Service". Также настоятельно рекомендуется установить флажок "Start Firebird automatically everytime you boot up". Программное обеспечение "Мельница данных" использует в работе библиотеку gds32.dll , загружая ее из системного каталога Windows. Поэтому в целях обеспечения нормальной работы необходимо установить оба флажка - "Copy Firebird client library to <system> directory" и "Generate client library as GDS32.DLL for legacy app. support".
    Установка серверной части FireBird - параметры установки
  8. На восьмой странице необходимо подтвердить установку с выбранными параметрами.
    Установка серверной части FireBird - подтверждение установки
  9. После установки на девятой странице можно ознакомиться с информацией об установленной версии.
    Установка FireBird (девятая страница)
  10. Десятая страница информирует об успешном завершении установки и позволяет запустить сервер немедленно. Рекомендуется установить флажок "Start Firebird Service now".
    Установка серверной части FireBird - установка завершена

Убедиться в том, что сервер установлен и запущен, можно из окна служб (Start ® Control Panel ® Administrative Tools ® Services):

Установленный FireBird в списке сервисов

       

Использование embedded-сервера вполне допустимо, с учетом ограничений, налагаемых разработчиком. Для использования embedded-сервера необходимо положить файлы (с полным путем) из архива embedded-сервера рядом с исполняемыми файлами нашей системы, и переименовать файл FBEMBED.DLL в GDS32.DLL , примерно следующим образом:

Использование FireBird Embedded

Для работы с embedded-сервером имя сервера в строке соединения указывать нельзя. Кроме того, необходимо соблюдать рекомендации и требования разработчиков сервера.

       

Младшая тестированная на совместимость версия - 9.2.0.1. Использование более младшей версии недопустимо.

Если вы устанавливаете Oracle не с компакт-дисков, то не пользуйтесь программой автозапуска, лежащей в корне первого установочного диска, а запустите setup.exe из каталога install\win32 на первом установочном диске.

Шаги установки примерно следующие:

  1. Первая страница содержит логотип Oracle и командные кнопки. Для продолжения установки нажмите кнопку "Next".
    Установка Oracle (первая страница)
  2. На второй странице необходимо определиться с путями установки и источника, а также с именем "дома". Настоятельно рекомендуется принять значения, предлагаемые по умолчанию.
    Установка Oracle (вторая страница)
  3. На третьей странице необходимо выбрать устанавливаемый продукт. Для сервера БД необходимо выбрать продукт "Oracle9i Database 9.2.0.1.0".
    Установка серверной части Oracle
  4. На четвертой странице необходимо выбрать тип установки. Для обеспечения требуемой функциональности выберите тип "Standard Edition".
    Установка серверной части Oracle - выбор типа установки
  5. На пятой странице необходимо выбрать параметры базы данных, создаваемой автоматически при установке сервера. Рекомендуется никакой базы данных при установке не создавать, для чего выбрать пункт "Software Only".
    Установка серверной части Oracle - отказ от автоматического создания БД
  6. На шестой странице необходимо выбрать порт TCP/IP, используемый Oracle Services for MTS. По умолчанию 2030.
    Установка серверной части Oracle - порт MTS
  7. На седьмой странице необходимо подтвердить правильность параметров установки.
    Установка серверной части Oracle - подтверждение установки
  8. После окончания процесса вы увидете сообщение об успешном завершении установки. Нажмите кнопку "Exit".
    Установка серверной части Oracle - завершено
  9. После завршения работы инсталлятора автоматически будет запущено приложение "Enterprise Manager Console". Если по каким-либо причинам этого не произошло, запустите это приложение самостоятельно через меню "Пуск". В окне "Add Databases To Tree" нажмите кнопку "Cancel".
    Установка серверной части Oracle - отказ от использования Enterprise Manager Console
  10. Из меню выберите пункт Tools ® Service Management ® Oracle Net Manager.
    Установка серверной части Oracle - вызов Oracle Net Manager
  11. В появивщемся окне приложения "Oracle Net Manager" раскройте узел дерева "Local", встаньте на узел дерева "Listener" и нажмите на кнопку с большим зеленым плюсом в панели инструменов (слева).
    Установка серверной части Oracle - Oracle Net Manager
  12. В появивщемся окне добавления Listener'a введите имя (по умолчанию - LISTENER). Настоятельно рекомендуется принять умолчание.
    Установка серверной части Oracle - создание Listener'a
  13. Нажмите на кнопку "Add Address" в нижней части окна.
    Установка серверной части Oracle - создание адреса Listener'a
  14. В появившемся окне отображена информация о том, каким образом клиенты будут осуществлять соединение с сервером БД. Настоятельно рекомендуется принять умолчания - протокол TCP/IP, порт 1521.
    Установка серверной части Oracle - адрес Listener'a создан
  15. Из меню выберите пункт File ® Save Network Configuration
    Установка серверной части Oracle - сохранение конфигурации
  16. Служба Listener'a будет создана при первой попытке создать базу данных. Закройте приложения "Oracle Net Manager" и "Enterprise Manager Console".

4.1.2. Конфигурирование клиента
       

Младшая тестированная на совместимость версия - 1.5.4.4910. Использование более младшей версии на клиенте недопустимо. Шаги установки примерно следующие:

  1. Первая страница содержит логотип проекта Firebird
    Установка FireBird (первая страница)
  2. Вторая страница содержит лицензионное соглашение. Для продолжения установки необходимо установить кнопку "I accept the agreement".
    Установка FireBird (вторая страница)
  3. Третья страница содержит информацию, необходимую для установки.
    Установка FireBird (третья страница)
  4. Четвертая страница позволяет указать папку на диске, в которую будут установлены файлы Firebird.
    Установка FireBird (четвертая страница)
  5. На пятой странице определяется тип установки. Мы конфигурируем клиентскую часть, и, соответственно, выбираем из выпадающего списка пункт "Minimum client install - no server, no tools". Кнопки в списке устанавливаемых компонентов будут автоматически выставлены в правильное положение.
    Установка клиентской части FireBird - выбор типа установки
  6. На шестой странице предлагается выбрать имя папки меню "Пуск", в которой будут созданы полезные ярлыки. В нашем случае ярлыки будут созданы для файлов документации, бесполезной в конечном счете для конечного пользователя. Поэтому мы ставим флажок "Don't create any icons".
    Установка FireBird (шестая страница)
  7. На седьмой странице необходимо выбрать параметры установки. Программное обеспечение "Мельница данных" использует в работе библиотеку gds32.dll, загружая ее из системного каталога Windows. Поэтому в целях обеспечения нормальной работы необходимо установить оба флажка - "Copy Firebird client library to <system> directory" и "Generate client library as GDS32.DLL for legacy app. support".
    Установка клиентской части FireBird - параметры установки
  8. На восьмой странице необходимо подтвердить установку с выбранными параметрами.
    Установка клиентской части FireBird - подтверждение установки
  9. После установки на девятой странице можно ознакомиться с информацией об установленной версии.
    Установка FireBird (девятая страница)
  10. Десятая страница информирует об успешном завершении установки.
    Установка клиентской части FireBird - установка завершена
       

Младшая тестированная на совместимость версия - 9.2.0.1. Использование более младшей версии на клиенте недопустимо.

Если вы устанавливаете Oracle не с компакт-дисков, то не пользуйтесь программой автозапуска, лежащей в корне первого установочного диска, а запустите setup.exe из каталога install\win32 на первом установочном диске.

Шаги установки примерно следующие:

  1. Первая страница содержит логотип Oracle и командные кнопки. Для продолжения установки нажмите кнопку "Next".
    Установка Oracle (первая страница)
  2. На второй странице необходимо определиться с путями установки и источника, а также с именем "дома". Настоятельно рекомендуется принять значения, предлагаемые по умолчанию.
    Установка Oracle (вторая страница)
  3. На третьей странице необходимо выбрать устанавливаемый продукт. Для рабочей станции необходимо установить продукт "Oracle9i Client 9.2.0.1.0".
    Установка клиентской части Oracle
  4. На четвертой странице необходимо выбрать тип установки. Для обеспечения требуемой функциональности выберите тип "Runtime".
    Установка клиентской части Oracle - выбор типа установки
  5. На пятой странице необходимо подтвердить правильность параметров установки.
    Установка клиентской части Oracle - подтверждение установки
  6. В процессе установки инсталлятор потребует настроить параметры соединения с сервером БД. Для этого запустится отдельный мастер "Oracle Net Configuration Assistant", и процесс установки будет приостановлен на время работы этого мастера.
    Если этого по каким-либо причинам не произошло, то после завершнения установки необходимо запустить это приложение из меню "Пуск" и выполнить описанные в этом и следующих шагах действия.
    На этой (первой) странице мастера необходимо отказаться от использования службы каталогов, выбрав кнопку "No, I will create net service names myself...".
    Установка клиентской части Oracle - конфигурирование подключения к БД - не использовать directory service.
  7. На второй странице мастера необходимо выбрать версию базы данных. Базы данных версии Oracle8 в любом случае не поддерживаются "Мельницей данных", поэтому выберите кнопку "Oracle8i or later database or service".
    Установка клиентской части Oracle - конфигурирование подключения к БД - версия БД
  8. На третьей странице мастера необходимо ввести имя сервиса, идентифицирующего базу данных на сервере (в данном случае - "RTT"). Это имя устанавливается при создании базы данных.
    Установка клиентской части Oracle - конфигурирование подключения к БД - имя сервиса
  9. На четвертой странице мастера выберите из списка доступных для соединения с БД протоколов протокол "TCP".
    Установка клиентской части Oracle - конфигурирование подключения к БД - протокол
  10. На пятой странице мастера введите адрес сервера, на котором установлена БД. Можно вводить как символьное имя сервера, так и IP-адрес. На этой же странице выберите порт TCP/IP, по которому будет производиться соединение с сервером. Порт по умолчанию - 1521.
    Установка клиентской части Oracle - конфигурирование подключения к БД - сервер и порт
  11. На шестой странице мастер предлагает протестировать заданные на предыдущих шагах параметры. Выберите кнопку "Yes, perform a test".
    Установка клиентской части Oracle - конфигурирование подключения к БД - тестирование соединения
  12. Если введенные на предыдущих страницах параметры соединения с БД были заданы корректно, то мастер сообщит об этом:
    Установка клиентской части Oracle - конфигурирование подключения к БД - успешное соединение
  13. На восьмой странице введите имя псевдонима подключения, который будет использоваться в дальнейшем для установки соединения с БД приложениями "Мальницы данных". Во избежание путаницы настоятельно рекомендуется именовать псевдоним так же, как и службу на сервере (в данном случае - RTT). сообщит об этом:
    Установка клиентской части Oracle - конфигурирование подключения к БД - псевдоним соедиения
  14. На девятой странице мастера у вас есть возможность выбрать, настроить еще одно подключение или завершить работу с мастером. После завршения установки вы всегда сможете вернуться к процедуре создания псевдонима подключений, вызвав из меню "Пуск" приложение "Oracle Net Configuration Assistant".
    Установка клиентской части Oracle - конфигурирование подключения к БД - отказ от создания следующего соединения
  15. На десятой странице мастер сообщает об успешном создании псевдонима соединения с БД.
    Установка клиентской части Oracle - конфигурирование подключения к БД - завершено конфигурирование соединения
  16. На десятой странице мастер сообщает об успешном завершении своей работы.
    Установка клиентской части Oracle - конфигурирование подключения к БД - завершено
  17. После завршения работы мастера "Oracle Net Configuration Assistant" вы увидете сообщение об успешном завершении работы инсталлятора. Нажмите кнопку "Exit".
    Установка клиентской части Oracle - завершено

4.2. Установка программного обеспечения платформы "Мельница данных"

Для установки ПП "Мельница данных" необходимо запустить файл setup.exe, расположенный на поставляемом компакт диске. После запуска программы установки необходимо следовать указаниям мастера установки.

Шаг 1: Выбор языка

Установка Мельницы Выбор языка

Шаг 2: Информация о версии устанавливаемого ПП

Установка Мельницы. Версия ПП

Шаг3: Выбор каталога установки файлов ПП

Установка Мельницы. Папка установки.

Шаг 4: Выбор файла лицензии

Установка Мельницы. Выбор лицензии.

Файл лицензии также расположен на поставляемом компакт-диске или высылается по электронной почте. В случае если не выбран никакой файл лицензий, то программа будет установлена в демонстрационном режиме. В последующем после получения файла лицензий необходимо будет переустановить ПП. Подробнее с лицензионным соглашением можно ознакомится в одноименном разделе настоящей документации.

Шаг 5: Выбор компонентов для установки

Установка Мельницы. Выбор компонентов.

На данном шаге вам необходимо выбрать набор компонентов для установки на локальный компьютер. В зависимости от специфики использования рабочего места, на которое устанавливается ПО, необходимо выбрать тип установки. Предлагаемые типы установок:

  • Рабочее место пользователя
  • Рабочее место администратора
  • Рабочее место разработчика
  • Только построитель запросов
  • По выбору

Для каждого из типов установки по умолчанию устанавливается свой набор компонентов. Вы можете дополнительно отметить тот или иной необходимый вам компонент для установки. Для выбора будут отображены только те компоненты, которые влачены в указанном вами лицензионном файле.

Полный перечень компонентов для установки:

  1. Обозреватель данных
  2. Построитель запросов
  3. Утилита обслуживания баз данных
  4. Утилита слияния баз данных
  5. Инструменты разработчика / Инструмент поставки решений
  6. Отладочный монитор
  7. Документация

Для некоторых из вышеперечисленных компонентов также можно выбрать состав устанавливаемого компонента. Описание назначений поставляемых компонент описано в разделе "Поставляемые компоненты ПП" настоящей документации.

После указания всех параметров мастер установки скопирует файлы на локальный компьютер и создаст в меню программ папку с ярлыками к установленным компонентам:

Установка Мельницы. Ярлыки после установки.

4.2.1. Поставляемые компоненты ПП "Мельница данных"
Обозреватель данных
Обозреватель данных (DataBrowser) - Основное приложение позволяющее просматривать и модифицировать данные. Приложение используется для разработки прикладных решений. Позволяет описывать объекты БД, их свойства, методы, пользовательские формы и отчеты. Это же приложение используется для работы с разработанными прикладными решения пользователями на локальных рабочих местах.
Утилита обслуживания БД
Утилита обслуживания базы данных (DBSetupShell) - Приложение, позволяющее создавать и обслуживать выбранную базу данных любой из поддерживаемых СУБД. Также при помощи данной утилиты можно создавать и удалять пользователей БД, создавать и восстанавливать резервные копии БД, импортировать и экспортировать данные из/в БД, а также выполнять процедуры по контролю целостности БД.
Построитель запросов
Построитель запросов (QueryBuilder) - Приложение, позволяющее визуальными средствами создавать интерактивные запросы на основе данных хранящихся в используемой БД. Созданные запросы сохраняются в стандартный формате SQL и полностью удовлетворяют архитектуре клиент-сервер. Сохраненные в виде файла запросы могут быть открыты пользователем по необходимости. Полученная таким образом информация будет актуальна в любой момент времени. Также существует возможность создания статистического отчета на основе Excel шаблона.
Отладочный монитор
Отладочный монитор (DebugView) - Средство позволяющее отслеживать все запросы к БД генерируемые "клиентской частью" прикладного решения, а также результат их исполнения сервером СУБД. Используется для отладки в процессе разработки прикладного решения.
Утилита слияния баз данных
Утилита слияния баз данных (Merger) - Данная утилита позволяет сравнивать данные и метаданные 2х различных БД. При помощи данного приложения можно с легкостью перенести, например данные из резервной копии в рабочую БД в случае не преднамеренного удаления большого числа объектов, тем самым избежать необходимости восстановления резервной копии недельной давности. Также используется для обновления версии ПП.
Редактор файлов документации
Редактор файлов документации (HelpEditor) - Незаменимое средство создания электронной справки и файлов документации в стандартном формате chm.

4.3. Создание и начальная инициализация базы данных

Для создания БД необходимо вопрользоваться утилитой обслуживания базы данных, поставляемой в комплекте ПП. После запуска одноименного приложения откроется окно панели управления утилиты:

После запуска одноименного приложения откроется окно панели управления утилиты:

Создание БД. Утилита обслуживания БД.

Для доступа к задачам необходимо заполнить параметры работы с базой данных:

  1. Источник данных : Необходимо указать используемую СУБД.
  2. База данных : Необходимо указать наименование создаваемого файла БД и его месторасположение. (Пример: c:\databases\base.fdb)
  3. Пользователь : Указать имя пользователя (Администратора) для используемой СУБД. Для Interbase/FireBird - SYSDBA, для Oracle - SYS.
  4. Пароль : Указать пароль пользователя (Администратора) для используемой СУБД. Для Interbase/FireBird - masterkey, для Oracle - SYS.

После заполнения полей параметров можно приступать к созданию БД. Для создания новой базы данных необходимо воспользоваться задачей "Создать новую БД". После нажатия кнопки "Выполнить" будут выполнены команды отображенные в окне "Командная строка".

        Днные команды можно выполнить самостоятельно из командной строки операционой системы или из любого другого приложения. Также создать пустую БД можно средствами входящими в комплекты поставок соответствуеющих СУБД.
Создание БД. Вывод консольного приложения.

В окне "Вывод консольного приложения" будет отображен результат выполнения команд по созданию БД. В случае успешного выполнения всех необходимых команд, БД будет создана по указанному в параметрах месторасположению.

После создания пустой БД необходимо наполнить ее системными объектами (метаданными) для последующей работы с ПП "Мельница данных". Для этого необходимо выполнить задачу "Синхронизировать базу данных". После нажатия кнопки "Выполнить" будет автоматически запущен отладочный монитор отображающий процесс наполнения БД необходимыми метаданными. Данный процесс может занять от одной до нескольких минут в зависимости от используемой СУБД и производительности сервера. (Обычно около минуты) По окончании процесса в окне "Вывод консольного приложения" будет отображен результат выполнения инициализации базы данных.

Инициализация БД. Вывод консольного приложения.

Все действия по созданию и инициализации БД выполнены. БД готова к эксплуатации.


4.4. Управление доступом пользователей

После того, как база данных создана и инициализирована метаданными платформы, доступ к системе будет иметь один пользователь - администратор созданной БД. Добавление других пользователей, ролей пользователей и включение пользователей в роли выполняется в представлениях Пользователи и Роли в Системной форме. После начальной инициализации БД на вкладке Пользователи можно увидеть одного пользователя с именем, соответствующим логину администратора БД (Например, для FireBird пользователь SYSDBA), на вкладке Роли можно увидеть одну роль с наименованием Администраторы. На подчиненных вкладках этих представлений можно увидеть, что пользователь - администратор включен в роль Администраторы.

Профиль пользователя формируется путем определения для него:

  1. Перечня доступных форм
  2. Перечня доступных визуальных групп
  3. Перечня групп запретов

Формирование профиля происходит одинаково как для роли, так и для отдельного пользователя. Однако рекомендуется формировать профили для ролей, а не для отдельных пользователей. В этом случае при подключении к системе новых пользователей, изменении параметров доступа для существующего пользователя достаточно будет включить пользователя в одну из ролей, или исключить его из роли. Роли рекомендуется формировать содержательным образом на основе распределения обязанностей реальных пользователей, работающих с прикладным решением.


4.4.1. Создание пользователей

Создание пользователя системы включает в себя два этапа:

  1. Создание пользователя БД средствами используемой СУБД. Для этого наряду с возможностями каждой из СУБД Утилитой обслуживания БД предлагается действие Создать пользователя. Предлагаемые Утилитой по умолчанию пути к БД и параметры доступа требуют уточнения в зависимости от условий функционирования реальной БД. Задавать права доступа пользователя к объектам БД на данном этапе не надо.
  2. В Системной форме на вкладке Пользователи создать нового пользователя при помощи соответствующего действия контекстного меню.
            В поле Имя нужно вветси строку, строго соответствующую логину пользователя БД в вернем регистре.
    Особых требований к полю Наименование не предъявляется. Однако рекомендуется вводить в это поле фамилию и имя реального пользователя системы, например, Смирнов Иван Николаевич, что позволить в последующем получать информативные данных об активности пользователей системы.

4.4.2. Создание ролей

Создание ролей производится на вкладке Роли Системной формы при помощи действия Создать, вызываемого из контекстного меню. Имя и наименование роли могут быть любыми строками. Однако именовать роли по названиям соответствющих функциональных участков системы, например,

  • Начальник отдела кадров
  • Инспектора по работе с личными данными персонала
  • Инспектора по социальным вопросам
В случаях, когда реальные пользователи совмещают несколько ролей, роли лучше формировать отдельно, после чего одного пользователя можно влючить одновременно в несколько ролей.


4.4.3. Включение пользователей в роли

В роль могут включаться как пользователи, так и другие роли. Для добавления в роль нового члена роли нужно выбрать роль на вкладке Роли, отрыть подчиненную вкладку Члены роли и вызвать на ней действие Создать. Поля формы параметров заполняются следующим образом:

  • Пользователь - в этом поле необходимо выбрать либо одного из пользователей, либо одну из ролей. В зависимости от того, выбран ли пользователь или роль, будет меняться доступность следующих ниже полей.
  • Основная роль - в этом поле можно установить значение Да или Нет. Если пользователь включен в нескольно ролей, то среди них можно выделить одну основную. Разработчик прикладного решения на платформе сможет использовать это значение для управления доступом к объектам системы. Поле доступно для выбора значения только в том случае, если в поле Пользователь выбран именно пользователь, а не роль.
  • Добавить связанные роли - в этом поле можно установить значение Да или Нет. Поле доступно для выбора значения только в том случае, если в поле Пользователь выбрана роль. При установке значения Да в роль будут включены также все роли, входящие в выбранную. при установке значения Нет будет включена только одна роль без подчиненных ролей.

После включения пользователя в роль он получает права доступа ко всем визуальным группам и формам, а также к группам запретов, заданным для роли.


4.4.4. Формирование перечня доступных визуальных групп

Визуальные группы создаются разработчиком прикладного решения. Работа с визуальными группами ведется в Системной форме на вкладке Визуальные группы. Каждая визуальная группа содержит набор форм и также может быть снабжена иконкой. Визуальные группы отображаются на Консоли управления, которая показывается при запуске системы.

Для каждой роли (или для отдельного пользователя) формируется перечень визуальных групп, которые будут ему доступны на Консоли управления. Если визуальных групп в прикладном решение не создано, или если пользователю не доступно ни одной визуальной группы, консоль управления не будет отображена. В этом случае при открытии системы пользователь увидит первую из доступных ему форм, которая открывается автоматически.

Для добавления новой визуальной группы, доступной роли или пользователю, необходимо выбрать роль или пользователя на соответствующей вкладке (Роли или Пользователи), отрыть подчиненное представление Доступные визуальные группы и выполнить в нем действие Создать. В форме параметров нужно выбрать одну из существующих визуальных групп. Если необходимо дать доступ к нескольким визуальным группам, действие создания нужно повторить.

        Если пользователь включен в несколько ролей, то достаточно наличия доступа к визуальной группе в одной из этих ролей.

4.4.5. Формирование перечня доступных форм

Формы создаются разработчиком прикладного решения. Работа с визуальными группами ведется в Системной форме на вкладке Формы. Каждая форма представляет собой набор представлений, связанных друг с другом определенным образом. Иконки всех форм, доступных пользователю, отображаются на Панели инструментов в верхней части экрана. Нажимая на одну из иконок форм, пользователь может переключаться между ними. Если форма входит в одну из доступных пользователю визуальных групп, она отобразится на консоли управления. В этом случае переключаться между формами пользователь сможет как на Панели инструментов, так и на Консоли управления.

Для каждой роли (или для отдельного пользователя) формируется перечень форм, которые будут ему доступны на Консоли управления. При открытии системы пользователь видит первую из доступных ему форм, открываемую автоматически.

Для добавления новой формы, доступной роли или пользователю, необходимо выбрать роль или пользователя на соответствующей вкладке (Роли или Пользователи), отрыть подчиненное представление Доступные формы и выполнить в нем действие Создать. В форме параметров нужно выбрать одну из существующих форм. Если необходимо дать доступ к нескольким формам, действие создания нужно повторить.

        Если пользователь включен в несколько ролей, то достаточно наличия доступа к форме в одной из этих ролей.

4.4.6. Формирование перечня групп запретов

Группы запретов могут формироваться как разработчиком прикладного решения, так и администратором системы. Работа с группами запретов ведется на соответствующей вкладке Системной формы. В каждую группу запретов включаются запреты трех видов:

  • Запрет на класс
  • Запрет на свойство
  • Запрет на подпрограмму

Запреты на класс и свойство могут даваться как только на запись, так и на чтение и запись объектов. Наличие запретов для определенной роли или пользователя приводит к тому, что пользователь не видит или не имеет прав на модификацю объетов определенных классов или отдельных их свойств. Запреты на подпрограммы выражаются в том, что для пользователя не отображаются действия, вызывающие ряд подпрограмм.


5. Руководство разработчика на платформе

5.1. Решения, предлагаемые технологией "Мельница данных"

Технология "Мельница данных" предлагает решения традиционных проблем разработки и сопровождения учетных систем за счет следующих инноваций:

  1. Объектная модель хранится в системе по тем же принципам, что и модель бизнес-данных, т.е. объекты классов, описывающих метаданные системы (классы, поля, методы, свойства, пользовательские формы) хранятся в базе данных и отображаются при помощи стандартного пользовательского интерфейса. Моделирование системного слоя метаданных системы произведено разработчиками платформы. Модель системного слоя документирована и доступна для просмотра и использования разработчикам прикладных систем.
  2. Разработка прикладных учетных систем ведется в той же среде, что и работа конечных пользователей. Текущая модель прикладной системы доступна для просмотра и использования всеми разработчиками.
  3. На основе заложенной объектной модели прикладной системы автоматически генерируется SQL-код (как DML, так и DDL составляющие), что полностью освобождает разработчика прикладной системы от SQL-программирования.
  4. Пользовательские интерфейсы (формы, представления) также описываются при помощи объектной модели и хранятся в базе данных. Это позволяет автоматически генерировать формы просмотра данных и формы задания параметров методов, что освобождает разработчика прикладной системы от написания кода клиентского приложения. Для тонкого управления поведением форм задания параметров может использоваться язык VB-script.
  5. При внесении изменений в объектную модель:
    • новое состояние модели отображается в пользовательском интерфейсе в доступной для всех разработчиков форме;
    • текущая объектная модель в виде диаграммы классов может быть выгружена в HTML-отчет, что является базовой возможностью платформы;
    • внесение изменений в структуру базы данных и пользовательские интерфейсы производится автоматически средствами платформы.

Основными элементами стандартизованного пользовательского интерфейса являются развитые элементы управления, работающие с данными:

  • Таблицы данных - отображают списки объектов в табличной форме, удобной для восприятия пользователя. Таблицы данных позволяют производить сортировку, группировку объектов, фильтрацию данных по ряду условий, подведение агрегатов (количества объектов, наибольшего, наименьшего значения, суммы, среднего и т.д.), отображение и скрытие групп, подведение итогов по группе. Таблицы данных имеют функционал, позволяющий отображать иерархические структуры, а также производить произвольный отбор отображаемых объектов пользователем. Используемые таблицы данных позволяют работать с большими объемами данных без потери производительности.
  • Инспектор объектов - отображает все свойства выбранных (одного или нескольких) объектов в двух колонках: имя свойства - значение свойства. Инспектор объектов позволяет просматривать все свойства объектов, а также изменять значения свойств как одного объекта, так и для всех выделенных объектов одним действием.
  • Форма задания параметров - отображается при вызове пользователем одного из методов. На форме расположены элементы управления Поле ввода, соответствующие описанным для метода параметрам. Внешний вид и поведение элементов управления зависят от типа описанных параметров. Поведением элементов управления на форме можно управлять при помощи скрипта формы, разрабатываемого на языке VB-script.
  • Поле ввода - используется для задания значений свойств и параметров как в Таблице данных, так и в Инспекторе объектов и на формах задания параметров. Имеет функционал, позволяющий редактировать значения различных типов. Использование стандартизованного пользовательского интерфейса позволяет снизить издержки как на его сопровождение, так и на обучение пользователей работе на новых участках.

Реализованы развитые возможности интеграции с третьесторонними системами. Они обеспечиваются следующими механизмами:

  1. Возможность переноса в Microsoft Excel любого видимого представления "as-is" с сохранением всех группировок, сортировок, агрегатов и т. п.
  2. Возможность вывода отчетов в виде документов Microsoft Office с передачей в среду функционирования Office соединения с БД, что позволяет строить отчеты любой степени сложности.
  3. Возможность использования в системе любого внешнего Ole-объекта как метода любого класса без ограничений.
  4. Возможность использования скриптлетов (фрагментов кода на скриптовом языке VBScript и/или JScript) как методов системы, фактически - возможность реализации на этих языках сколь угодно сложного поведения.
  5. Возможность формирования отчетов непосредственно в виде html-документов для последующей публикации их в сети Internet.

5.2. Системный слой объектной модели "Мельница данных"

Технология разработки и сопровождения учетных систем "Мельница данных" требует для своего функционирования объектную модель бизнес-сущностей. Технология диктует ряд дополнительных требований к объектной модели.

  1. Все классы наследуются от единого корня, класса TObject. Класс TObject вводит ряд элементов состояния, поведения и представления, которые наследуются всеми учитываемыми объектами в обязательном порядке.
  2. Множественное наследование не поддерживается (т.е. у каждого класса может быть один и только один родитель).
  3. Множественная инкапсуляция не поддерживается (т.е. у каждого объекта может быть один либо ни одного инкапсулирующего объекта).
  4. Простые типы данных вводятся посредством доменов. Домены определяют обязательность своих значений, а также другие характеристики, зависящие от класса домена. Домены бывают:
    • строковые (определяют максимальную длину строки);
    • целочисленные (определяют максимальное и минимальное значение целого числа);
    • вещественные (определяют максимальное и минимальное значение числа, количество значащих цифр);
    • логические;
    • значения типа "дата";
    • значения типа "время";
    • значения типа "дата со временем";
    • перечисления (определяют список возможных значений);
    • ссылка (определяют класс-приемник ссылки);
    • большие двоичные объекты (текст, изображение, файл, и т.д.).

5.3. Наследование и переопределение членов класса и параметров подпрограмм

Все члены родительского класса наследуются дочерним классом следующим образом:

Поля

Все поля родительского класса доступны в дочернем классе. При создании в дочернем классе поля с тем же именем, что и в родительском классе, класс-наследник теряет возможность напрямую манипулировать полем родительского класса и получает поле с тем же именем. Можно сказать, что новое поле "закрывает" старое, но не "замещает" его.

Методы

Все методы родительского класса наследуются дочерним классом. При создании в дочернем классе метода с тем же именем, что и в родительском классе, метод переопределяется, т.е. вместо старого метода будет существовать новый. Единственный способом обратиться к старому (унаследованному) методу является использование в теле метода оператора унаследованного вызова inherited (см. раздел 5.3.14.). Переопределенный метод имеет все параметры родительского метода и может расширять список параметров, а также переопределять унаследованные параметры (создавая параметры с тем же именем и изменяя любой другой атрибут параметра по своему усмотрению). Скрипты форм задания параметров не наследуются и должны быть полностью заданы в переопределенном методе. Изображения-иконки методов наследуются и могут не переопределяться явно.

Свойства

Все свойства родительского класса доступны в дочернем классе. При создании в дочернем классе свойства с тем же именем, что и в родительском классе, класс-наследник теряет возможность напрямую манипулировать свойством родительского класса и получает свойство с тем же именем. Можно сказать, что новое свойство "закрывает" старое, но не "замещает" его. На практике часто бывает необходимо в унаследованном методе (особенно в конструкторе) скрыть часть параметров от пользователя, либо сузить область выбора значений для каких либо параметров. В этом случае необходимо переопределить параметры в унаследованном методе с новыми значениями свойства Scope ("Область видимости") или Domain ("Домен"). Это нормальная рекомендуемая практика. Необходимо понимать, что скрыв с формы элемент управления, соответствующий параметру, значение которого обязательно, необходимо предусмотреть, чтобы этот параметр получил значение до вызова унаследованного метода, либо из скрипта формы задания параметров, либо в теле самого метода.

        В конструкторе класса, унаследованного от класса TObject, переопределен параметр Name, таким образом, что в свойстве "Область видимости" установлено значение "Не видимо пользователям". При этом тело метода конструктора должно выглядеть следующим образом:
begin
  Name := UniqueValue;                    (1)
  inherited;                         (2)
  // инициализация собственных полей
end;
  
Параметр конструктора Description, унаследованный от конструктора класса TObject останется видимым и его значение будет в обязательном порядке установлено пользователем при помощи формы задания параметров. Значения параметров Parent и Master будут определены из контекста вызова или запрошены у пользователя. Параметр Name не будет отображен на форме задания параметров и в начале выполнения тела метода его значение будет пустым (nil). В связи с этим в строке (1) тела метода производится установка значения параметра Name при помощи функции UniqueValue. Если этого не сделать, то вызов унаследованного метода при помощи оператора inherited вернет ошибку, связанную с тем, что параметр Name имеет недопустимое значение.

5.4. Средства моделирования пользовательского интерфейса

5.4.1. Представления

5.4.2. Визуальные группы

5.4.3. Формы, связь представлений в формах

5.5. Объектно-реляционное отображение

5.6. Обзор возможностей Платформы

5.7. Этапы разработки прикладных решений

5.7.1. Формирование видения модели

5.7.2. Создание структур хранения и средств обработки данных

5.7.2.1. Класс TObject, члены класса TОbject

5.7.2.2. Создание классов

5.7.2.3. Создание полей

5.7.2.4. Создание свойств

5.7.2.5. Создание методов

5.7.3. Синхронизаци базы данных

5.7.4. Создание пользователей и ролей

5.7.5. Средства моделирования пользовательских интерфейсов

5.7.5.1. Представления

5.7.5.2. Формы. Включение представлений в формы

5.7.5.3. Визуальные группы. Включение форм в визуальные группы

5.7.5.4. Организация доступа пользователей к формам и визуальным группам

5.7.6. Разработка отчетов

5.7.6.1. Создание шаблонов PDF-отчетов

5.7.6.1.1. Описание

Portable Document Format (PDF) — кроссплатформенный формат электронных документов, созданный фирмой Adobe Systems с использованием ряда возможностей языка PostScript. В первую очередь предназначен для представления в электронном виде полиграфической продукции, — значительное количество современного профессионального печатного оборудования может обрабатывать PDF непосредственно. Для просмотра можно использовать официальную бесплатную программу Adobe Reader, а также программы сторонних разработчиков. Традиционным способом создания PDF-документов является виртуальный принтер, то есть документ как таковой готовится в своей специализированной программе — графической программе или текстовом редакторе, САПР и т. д., а затем экспортируется в формат PDF для распространения в электронном виде, передачи в типографию и т. п. Формат PDF позволяет внедрять необходимые шрифты (построчный текст), векторные и растровые изображения, формы и мультимедиа-вставки. Поддерживает RGB, CMYK, Grayscale, Lab, Duotone, Bitmap, несколько типов сжатия растровой информации. Имеет собственные технические форматы для полиграфии: PDF/X-1, PDF/X-3. Включает механизм электронных подписей для защиты и проверки подлинности документов. В этом формате распространяется большое количество сопутствующей документации. Чаще всего PDF-файл является комбинацией текста с растровой и векторной графикой, реже — текста с формами, JavaScript'ом, 3D-графикой и другими типами элементов.

В приложениях Платформы "Мельница данных" для создания PDF-документов используется собственная библиотека PDFCreator.dll. С помощью библиотеки возможно прямое создание документов версии 1.3 . Создание PDF-документов осуществляется путем ввода предопределенных в библиотеке команд, которые в дальнейшем интерпретируются на основе языка описания страниц POSTSCRIPT.

        Все размеры графических объектов, размеры страниц, шрифтов и т.п. по умолчанию заданы в миллиметрах.
        Для удобства построения шаблона PDF-документа создана функция DrawGrid. При ее включении при отладке при создании шаблона будет отображена визуальная сетка с шагом 5 миллиметров.
C гридом

5.7.6.1.2. Методы

5.7.6.1.2.1. Свойства документа

Для создания и описания свойств PDF-документа в библиотеке PDFCreator.dll используется класс IPDFDocument, обладающий следующими свойствами:

  • Title (WideString) - заголовок документа. По умолчанию - пустая строка.
           
    Title = "DOC1"
  • CanEmbedFonts (WordBool) - Признак возможности построения PDF- документа со встроенными шрифтами (Embedded Fonts). В случае включения признака, все объявленные в скрипте шрифты будут включены в сборку документа и будут передаваться целиком вместе с документом. По умолчанию - False.
           
    CanEmbedFonts = True 
    CanEmbedFonts = False
  • CanCompress (WordBool) - признак сжатия документа при создании по собственным алгоритмам. По умолчанию - True.
           
    CanCompress = False 
    CanCompress = True
  • Author (WideString) - автор документа. По умолчанию - текущий пользователь ОС.
  • Subject (WideString) - описание документа. По умолчанию - пустая строка.
  • Keywords (WideString) - ключевые слова для поиска по документу. По умолчанию - пустая строка.
  • Creator (WideString) - приложение-родитель документа. Указывается в том случае, если документ был сконвертирован из другого формата.
  • PageCount (Integer) - свойство, содержащее общее количество страниц в документе.
  • Pages[Index: Integer]: IPDFPage - свойство документа, предназначенное для перебора страниц документа для совершения над ними однотипных действий.
           

    Пример использования:

    for I = 0 to PageCount - 1
      Pages(I).rectangle 10,10,10,10, false
    next
    Save "c:\pdf.pdf"

    Результат: На всех страницах документа будут нарисованы квадраты 10х10 мм.
  • procedure Save(Target: OleVariant) - процедура для сохранения документа PDF на жесткий диск сразу после создания.
           
    Save "c:\pdf.pdf"
    - сохранит документ в файл c:\pdf.pdf


5.7.6.1.2.2. Свойства страницы

Для создания страницы используется функция

function CreatePage(Parent: OleVariant): IPDFPage;

Параметр Parent указывает страницу-родителя для данной страницы. Если страницы- родителя быть не должно - формат вызова функции примет вид:

set page = CreatePage(Null)

Параметры страницы:

  • Title - заголовок страницы.
           
    page.Title = "Page name"
  • Width - ширина страницы, миллиметры
           
    page.Width = 80
  • Height - высота страницы, миллиметры
           
    page.Height = 80
  • DrawGrid - процедура, выводящая на страницу сетку с шагом 5 миллиметров для удобства отладки вида документа.
  • Perform - процедура, позволяющая выполнить дополнительные команды PostScript на странице.
            page.perform "1 0.7 0 0 k"
    page.perform "0 0 m"

5.7.6.1.2.2.1. Объявление цвета

Для объявления цвета объектов на странице используется цветовая модель R:G:B (Red:Green:Blue). Объявление цвета для выполнения последующих операций (цвет шрифта, цвет линии/фигуры) осуществляется процедурой

procedure SetColor(R: Integer; G: Integer; B: Integer);
Где параметры R, G, B - значения базисных цветов для выбранного цвета (от 0 до 255).

       
Цвет
R
G
B
Белый
255
255
255
+++
Черный
0
0
0
+++
Серый
190
190
190
+++
Синий
0
0
255
+++
Красный
255
0
0
+++
Зеленый
0
255
0
+++
       

Если предварительно цвет не был объявлен, используется цвет по умолчанию - черный (0,0,0)


5.7.6.1.2.3. Графика

5.7.6.1.2.3.1. Линии

Для отрисовки линий используется процедура

procedure Line(X1: Double; Y1: Double; X2: Double; Y2: Double);
Здесь:

  • X1 - координата начала линии по горизонтали в миллиметрах от верхнего левого угла листа.
  • Y1 - координата начала линии по вертикали в миллиметрах от верхнего левого угла листа.
  • X2 - координата конца линии по горизонтали в миллиметрах от верхнего левого угла листа.
  • Y2 - координата Конца линии по вертикали в миллиметрах от верхнего левого угла листа.

Для задания толщины линии используется свойство

property LineWidth: Double
Значение толщины задается в миллиметрах. Значение по умолчанию - минимально возможная единица рисования для устройства. Так для монитора - 1 pixel, для принтера - 1 dot (точка)

Для задания стиля отрисовки начала/окончания линии используется свойство property LineCap: TPDFLineCap
Возможные стили:
Значение свойства:
Отображение:
Описание:
0
Линия 0
Прямой срез точно по точкам начала и окончания линии (по умолчанию)
1
Линия 1
С закруглением
2
Линия 2
Прямой срез с продолжением линии на половину толщины линии

Объявление цвета линии.

        Две линии разной толщины, с разными окончаниями и цветами:
set page = CreatePage(Null)

page.DrawGrid

page.LineCap = 1

page.LineWidth = 2

page.Line 10, 10, 30, 30

page.LineWidth = 4

page.SetColor 255, 0, 0

page.LineCap = 2

page.Line 10, 30, 30, 10."I 


Результат:
2 линии

При необходимости соединения линий под углом в определенной точке можно задать тип соединения. Для объявления типа соединения используется свойство property LineJoin: TPDFLineJoin;
Типы соединения двух линий:
Значение свойства
Отображение
Описание
0
2 линии 0
С острым углом
1
2 линии 1
С закруглением
2
2 линии 2
С обрезанным углом

Пунктир

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

Процедура procedure SetDash(DashArray: OleVariant; Phase: Integer); Здесь DashArray - массив значений в миллиметрах, указывающий последовательность чередования штрихов и пропусков на линии, Phase - смещение в миллиметрах по линии.

        Пример 1. Штрих 10 мм, Промежуток 5 мм, Смещения нет
Пример 2. Штрих 10 мм, Промежуток 5 мм, Смещение 5 мм
Пример 3. Различные значения штрихов и промежутков, Смещения нет
set page = CreatePage(Null)

page.DrawGrid

page.LineWidth = 3

page.SetDash Array(10, 5), 0

page.Line 10, 10, 100, 10

page.SetDash Array(10, 5), 5

page.Line 10, 20, 100, 20

page.SetDash Array(10, 5, 3, 2, 12, 20), 0

page.Line 10, 30, 100, 30

Результат:
Пунктир 1

Ломанная линия - здесь непрерывная линия, состоящая из нескольких прямых. Для отображения ломанной используется процедура procedure Poly(Points: OleVariant; Fill: WordBool), где Points - массив координат точек соединяемых прямыми, а Fill - признак заливки полученной замкнутой фигуры (если замкнута).

        Пример Звезда без заливки
set page = CreatePage(Null)

page.DrawGrid

page.LineWidth = 3

page.Poly  Array(10, 45, 100, 45, 27, 103, 55, 10, 82, 103, 10, 45), false

Результат:
Звезда
        Пример Звезда с заливкой
set page = CreatePage(Null)

page.DrawGrid

page.LineWidth = 3

page.Poly  Array(10, 45, 100, 45, 27, 103, 55, 10, 82, 103, 10, 45), true

Результат:
Звезда заливка

5.7.6.1.2.3.2. Прямоугольник

Rectangle (Прямоугольник) - для создания используется процедура:

procedure Rectangle(X1: Double; Y1: Double; Width: Double; Height: Double; Fill: WordBool);
Здесь:

  • X1 - координата верхнего левого угла прямоугольника по горизонтали в миллиметрах от верхнего левого угла листа шаблона.
  • Y1 - координата верхнего левого угла прямоугольника по вертикали в миллиметрах от верхнего левого угла листа шаблона.
  • Width - ширина прямоугольника с миллиметрах.
  • Height - высота прямоугольника с миллиметрах.
  • Fill - признак заливки прямоугольника (True/False). Если значение True то заливка производится объявленным заранее цветом (см. Объявление цвета). Если False - заливка не производится. Прямоугольник отрисовывается линиями с предварительно заданной толщиной. См. Линии
        Пример 1. Создание красного прямоугольника:
set page = CreatePage(Null)

page.SetColor 255, 0, 0

page.Rectangle 10, 15, 40, 20, True

page.DrawGrid
Результат:
Прямоугольник
Пример 2. Пустой прямоугольник без задания цвета:
set page = CreatePage(Null)

page.DrawGrid

page.Rectangle 12, 17, 42, 25, false

page.DrawGrid

Результат:
Прямоугольник false

Также существует возможность изменения стиля отображения углов прямоугольника. Для этого нужно использовать свойство property LineJoin: TPDFLineJoin;

Значение свойства
Отображение
Описание
0
2 линии 0
С острым углом
1
2 линии 1
С закруглением
2
2 линии 2
С обрезанным углом

Пример построения прямоугольников с различными типами соединения сторон:

       
set page = CreatePage(Null)

page.DrawGrid

page.LineWidth = 4

page.LineJoin = 0

page.Rectangle 10, 10, 20, 10, false

page.LineJoin = 1

page.Rectangle 40, 10, 20, 10, false

page.LineJoin = 2

page.Rectangle 70, 10, 20, 10, false


Результат:
3 прямоугольника

5.7.6.1.2.3.3. Вставка готовых изображений

Для вставки на создаваемую страницу готового изображения используется процедура procedure Image(const FileName: WideString; X: Double; Y: Double; Width: Double; Height: Double)

Параметры:

  • const FileName - имя файла изображения и путь к нему на жестком диске. Задается в кавычках.
  • X - координата левой верхней точки изображения по отношению к верхнему левому углу страницы по горизонтали в миллиметрах
  • Y - координата левой верхней точки изображения по отношению к верхнему левому углу страницы по вертикали в миллиметрах
  • Width - ширина изображения в миллиметрах
  • Height - высота изображения в миллиметрах.
       
set page = CreatePage(Null)
page.drawgrid
page.Image "c:\mill.bmp", 10,10, 30, 30

Результат:
Картинка

Вне зависимости от размера исходного изображения, при вставке изображения на создаваемую страницу оно будет растянуто по размерам, прописанным в процедуре.


5.7.6.1.2.3.4. Векторная графика

Язык PostScript, с помощью которого создаются векторные изображения для PDF-документа, поддерживает создание типичных примитивных объектов, таких как:

  • Прямые и ломанные линии
  • Многоугольники
  • Окружности и эллипсы
  • Кривые Безье
  • Текст

При создании векторного изображения на странице PDF-документа в приложениях Платформы, команды построения примитивных объектов PostScript передаются на исполнение при помощи процедуры Perform. Подробнее об операторах и командах PostScript для создания PDF-документов можно узнать на сайте Adobe


5.7.6.1.2.4. Шрифты

Шрифты, которые должны использоваться в создаваемом документе, должны быть предварительно объявлены. Для объявления используемых шрифтов используется функция
function CreateFont(const FontName: WideString; Size: Double; Bold: WordBool; Italic: WordBool): IPDFFont; где:

  • const FontName - имя шрифта, аналогичное имени объявляемого шрифта в операционной системе. В Функции объявляется в кавычках.
  • Size - размер шрифта в пунктах
  • Bold - признак начертания шрифта "жирный". Значения - True или False
  • Italic - признак начертания шрифта "курсив". Значения - True или False
        Примеры объявления шрифтов:
set font = page.createFont("Arial", 20, False, False)
set labelFont = page.createFont("Times New Roman", 16, False, True)
set dataFont = page.createFont("Tahoma", 18, True, False)
  

Для вывода текстовой информации на страницу используются процедуры:

  • procedure WriteLine(const LineText: WideString; X: Double; Y: Double);
    - используется для вывода текстовой строки
  • function WriteText(const AText: WideString; X: Double; Y: Double; Width: Double; Alignment: TPDFTextAlignment): Double;
    - используется для вывода текстового блока.

Параметры для procedure WriteLine :

  • const LineText - текстовая строка для вывода. Прописывается в кавычках. Будет выведена на страницу одной строкой.
  • X - координата верхней левой точки текстовой строки по горизонтали в миллиметрах.
  • Y - координата верхней левой точки текстовой строки по вертикали в миллиметрах.
        Примеры вывода текстов на страницу:
set page = CreatePage(Null)
page.DrawGrid
set font = page.createFont("Arial", 20, False, False)
set labelFont = page.createFont("Times New Roman", 16, False, True)
set dataFont = page.createFont("Tahoma", 18, True, False)
Font.WriteLine "Фамилия", 5, 2
Font.WriteLine "Имя", 5, 10
Font.WriteLine "Отчество", 5, 18
labelFont.WriteLine "Дата рождения", 5, 26
dataFont.WriteLine "Национальность", 5, 34
  

Результат:
Разные шрифты

Параметры для function WriteText :

  • const AText - текст для вывода на страницу. Прописывается в кавычках. Будет выведена на страницу в виде текстового блока.
  • X - координата верхней левой точки текстового блока по горизонтали в миллиметрах.
  • Y - координата верхней левой точки текстового блока по вертикали в миллиметрах.
  • Width - ширина текстового блока в миллиметрах
  • Alignment - тип выравнивания текста в текстовом блоке.
    Значение параметра
    Тип выравнивания
    0
    По левому краю
    1
    По правому краю
    2
    По центру
    3
    Выравнивание по ширине
        Примеры вывода текстовых блоков на страницу:
set page = CreatePage(Null)
page.DrawGrid
set font = page.createFont("Arial", 14, False, False)
set labelFont = page.createFont("Times New Roman", 12, False, True)
set dataFont = page.createFont("Tahoma", 11, True, False)
Q = font.WriteText ("Тест работы свойства для выравнивания текста в текстовом блоке для документа PDF, создаваемого на Платформе Мельница Данных", 5, 5, 100, 0)
Q = labelFont.WriteText ("Тест работы свойства для выравнивания текста в текстовом блоке для документа PDF, создаваемого на Платформе Мельница Данных", 5, 35, 100, 1)
Q = dataFont.WriteText ("Тест работы свойства для выравнивания текста в текстовом блоке для документа PDF, создаваемого на Платформе Мельница Данных", 5, 55, 100, 2)
Q = dataFont.WriteText ("Тест работы свойства для выравнивания текста в текстовом блоке для документа PDF, создаваемого на Платформе Мельница Данных", 5, 80, 100, 3)
  

Результат:
Выравнивание

Свойства шрифтов:

property Spacing: Double; - свойство, отвечающее за величину промежутка между буквами в слове. Задается в виде отклонения от промежутка между буквами по умолчанию для выбранного шрифта по горизонтальной оси в миллиметрах. Значение свойства равное "0" соответствует значению по умолчанию.

        Пример:
set page = CreatePage(Null)
page.DrawGrid
set font = page.createFont("Arial", 14, False, False)
set labelFont = page.createFont("Arial", 14, False, False)
set dataFont = page.createFont("Arial", 14, False, False)
font.Spacing = 0
labelFont.Spacing = 1
dataFont.Spacing = 2
font.WriteLine "Промежуток по умолчанию (0)", 5, 5
labelFont.WriteLine "Промежуток с отклонением (1 мм)", 5, 10
dataFont.WriteLine "Промежуток с отклонением (2 мм)", 5, 15
  

Результат:
Промежуток букв

property WordSpacing: Double; - свойство, отвечающее за величину промежутка между соседними словами. Задается в виде отклонения от промежутка между словами по умолчанию для выбранного шрифта по горизонтальной оси в миллиметрах. Значение свойства равное "0" соответствует значению по умолчанию.

        Пример:
set page = CreatePage(Null)
page.DrawGrid
set font = page.createFont("Arial", 14, False, False)
set labelFont = page.createFont("Arial", 14, False, False)
set dataFont = page.createFont("Arial", 14, False, False)
font.WordSpacing = 0
labelFont.WordSpacing = 2
dataFont.WordSpacing = 5
font.WriteLine "Промежуток по умолчанию (0)", 5, 5
labelFont.WriteLine "Промежуток с отклонением (2 мм)", 5, 10
dataFont.WriteLine "Промежуток с отклонением (5 мм)", 5, 15
  

Результат:
Промежуток слов

property Scaling: Double; - свойство, отвечающее за горизонтальное масштабирование букв используемого шрифта. Устанавливается в процентах. Горизонтальный масштаб по умолчанию - 100%.

        Пример:
set page = CreatePage(Null)
page.DrawGrid
set font = page.createFont("Arial", 14, False, False)
set labelFont = page.createFont("Arial", 14, False, False)
set dataFont = page.createFont("Arial", 14, False, False)
font.Scaling = 50
labelFont.Scaling = 100
dataFont.Scaling = 200
font.WriteLine "Сжатие (50)", 5, 5
labelFont.WriteLine "По умолчанию (100)", 5, 10
dataFont.WriteLine "Растягивание (150)", 5, 15
  

Результат:
Scaling

property RenderingMode: TPDFFontRenderingMode; - свойство, отвечающее за заливку букв используемого шрифта.
Типы заливки:
Значение параметра:
Отображение:
Описание:
0
Font Fill
Сплошная заливка (по умолчанию). Буква заливается сплошным цветом,
объявленным на данный момент.
1
Font Stroke
Только граница. Прорисовывается граница буквы. Тело остается незалитым.
2
Font FillStroke
Сначала заливка, потом граница. Граница прорисовывается всегда черным цветом.
Заливка осуществляется сплошным цветом, объявленным на данный момент.
3
Inv
Невидимый шрифт.

        Пример:
set page = CreatePage(Null)
set font = page.createFont("Arial", 20, False, False)
set labelFont = page.createFont("Arial", 20, False, False)
set dataFont = page.createFont("Arial", 20, False, False)
font.RenderingMode = 0
labelFont.RenderingMode = 1
dataFont.RenderingMode = 2
page.setColor 255, 0, 0
Q = font.WriteText ("Олимпиада", 5, 5, 50, 0)
Q = labelFont.WriteText ("Олимпиада", 5, 15, 50, 0)
Q = dataFont.WriteText ("Олимпиада", 5, 25, 50, 0)
  

Результат:
Заливка букв

property Rise: Double; - свойство, отвечающее за перемещение текста по вертикали.

       
set page = CreatePage(Null)
page.DrawGrid
set font = page.createFont("Arial", 20, False, False)
set labelFont = page.createFont("Arial", 7, False, False)
set dataFont = page.createFont("Arial", 7, False, False)
labelFont.rise = -17
dataFont.rise = -2
Q = font.WriteText ("Олимпиада", 5, 5, 50, 0)
Q = labelFont.WriteText ("Олимпиада", 44, 5, 50, 0)
Q = dataFont.WriteText ("Олимпиада", 44, 5, 50, 0)
  

Результат:
Rise

Для определения размеров текстовой строки используется процедура MeasureLine(const LineText: WideString; out Width: OleVariant; out Height: OleVariant);

Здесь:

  • LineText - исходный текст для размещения на странице
  • Width - возвращаемый параметр ширины текстового блока на странице
  • Height - возвращаемый параметр высоты текстового блока на странице
       
S = "шифр"
font.MeasureLine S, W, H
Q = font.WriteText(S, 139, 244 + ((23 - H) / 2), 40, 2)
  


Здесь для текста "Шифр" замеряется ширина и высота получившегося текстового блока. Затем полученные данные используются для корректного размещения текста на странице.

Для определения высоты текстового блока используется функция MeasureText(const AText: WideString; Width: Double): Double; safecall;

Функция распределит текст по задаваемому значению ширины текстового блока и вернет значение высоты текстового блока в милиметрах.

Здесь:

  • AText - исходный текст для размещения на странице. Прописывается в кавычках.
  • Width - задаваемая ширина текстового блока на странице в милиметрах.
       
S = "Текст для размещения на странице..."
Q = font.MeasureText(S, 139)
  
Здесь для текста "Текст для размещения на странице..." замеряется высота получившегося текстового блока. Затем полученные данные могут использоваться для корректного размещения текста на странице.

5.7.6.1.3. Порядок создания

Для создания шаблона PDF-документа необходимо в системной форме Платформы выбрать класс, к которому будет строиться документ. В подменю "Подпрограммы" вызвать контекстное меню и выбрать пункт "Создать шаблон отчета PDF". Заполнить необходимые поля и приступить к созданию скрипта в окне "Скрипт шаблона".

Конструктор
  1. Объявляем все переменные.
  2. Создаем страницы
  3. Устанавливаем все свойства документа и страниц
  4. Рисуем простые графические объекты
  5. Объявляем все используемые шрифты
  6. Расставляем постоянный текст на странице
  7. Расставляем переменный текст на странице
  8. Вставляем или создаем сложные графические объекты
        Пример документа PDF:
set LDataSet = createDataSet("TRoundAbiturSt")
'Объявление переменных
LDataSet.AddQueryItem 1, "ID", ID
LDataSet.AddQueryItem 0, "RoundComp$N"
LDataSet.AddQueryItem 0, "BachRound$N"
LDataSet.AddQueryItem 0, "LastName"
LDataSet.AddQueryItem 0, "FirstName"
LDataSet.AddQueryItem 0, "MiddleName"
LDataSet.AddQueryItem 0, "BirthDate"
LDataSet.AddQueryItem 0, "RegNumber"
LDataSet.AddQueryItem 0, "SecondStageCity$D"
LDataSet.AddQueryItem 0, "PhoneList"

'Присваивание переменным значений
OlympName = LDataSet.Field("RoundComp$N")
OlympClass = LDataSet.Field("BachRound$N")
LastName = LDataSet.Field("LastName")
FirstName = LDataSet.Field("FirstName")
MiddleName = LDataSet.Field("MiddleName")
if not IsNull(LDataSet.Field("BirthDate")) then
  BirthDate = LDataSet.Field("BirthDate")
else
  BirthDate = "(не задана)"
end if
RegNo = LDataSet.Field("RegNumber")
if not IsNull(LDataSet.Field("SecondStageCity$D")) then
  OlympCity = LDataSet.Field("SecondStageCity$D")
else
  OlympCity = "(не выбран город участия)"
end if
if not IsNull(LDataSet.Field("PhoneList")) then
  Phone = LDataSet.Field("PhoneList")
else
  Phone = ""
end if

'CanCompress = False - признак сжатия файла
set page = CreatePage(Null) ' создаем страницу
'Объявляем используемые шрифты
set font = page.createFont("Arial", 20, False, False)
set labelFont = page.createFont("Arial", 16, False, False)
set dataFont = page.createFont("Arial", 18, True, False)
set bigFont = page.createFont("Arial", 24, False, False)

'page.DrawGrid  - рисуем сетку для удобства отладки

page.LineWidth = 0.5 ' Установка толщины линии

' Рисуем прямоугольники
page.Rectangle 8, 12, 4, 4, True
page.Rectangle 190, 12, 4, 4, True

page.Rectangle 8, 273, 4, 4, True
page.Rectangle 105, 273, 4, 4, True
page.Rectangle 190, 273, 4, 4, True

'Выводим постоянный и переменный текст
Q = font.WriteText ("Межрегиональная олимпиада школьников", 12, 20, 178, 2)
Q = bigFont.WriteText (OlympName, 12, 45, 178, 2)
Q = bigFont.WriteText (OlympClass, 12, 56, 178, 2)

Q = font.WriteText ("Титульный лист", 12, 72, 178, 2)

labelFont.WriteLine "Фамилия", 25, 115 - 23
labelFont.WriteLine "Имя", 25, 123 - 23
labelFont.WriteLine "Отчество", 25, 131 - 23
labelFont.WriteLine "Дата", 25, 139 - 23
labelFont.WriteLine "рождения", 25, 145 - 23

labelFont.WriteLine "Регистрационный номер", 25, 169 - 30
labelFont.WriteLine "Город проведения", 25, 177 - 30
labelFont.WriteLine "Аудитория", 25, 185 - 30


labelFont.WriteLine "Дата", 25, 211
labelFont.WriteLine "Подпись", 25, 219
labelFont.WriteLine "Телефон", 25, 227


dataFont.WriteLine LastName, 63, 114 - 23
dataFont.WriteLine FirstName, 63, 122 - 23
dataFont.WriteLine MiddleName, 63, 130 - 23
dataFont.WriteLine BirthDate, 63, 141 - 23

dataFont.WriteLine RegNo, 100, 168 - 30
dataFont.WriteLine OlympCity, 100, 176 - 30

' Рисуем линии
page.line 100, 192 - 30, 150, 192 - 30
page.line 58, 218, 108, 218
page.line 58, 226, 108, 226
Q = dataFont.WriteText(Phone, 58, 226, 65, 0)



' Устанавливаем новый цвет
page.setColor 192, 192, 192

S = "шифр"
font.MeasureLine S, W, H  ' измеряем текстовый блок
Q = font.WriteText(S, 139, 244 + ((23 - H) / 2), 40, 2) ' располагаем текстовый
блок на странице

' Устанавливаем новый цвет
page.setColor 255, 0, 0
' Устанавливаем толщину линий в 1 пиксель
page.LineWidth = 0
' Рисуем линии по координатам
X = 139
Y = 267

page.line X, Y - 3, X, Y + 3
page.line X - 3, Y, X + 3, Y

X = X + 40
page.line X, Y - 3, X, Y + 3
page.line X - 3, Y, X + 3, Y


Y = Y - 23
page.line X, Y - 3, X, Y + 3
page.line X - 3, Y, X + 3, Y

X = X - 40
page.line X, Y - 3, X, Y + 3
page.line X - 3, Y, X + 3, Y

Результат:

Титул

5.7.7. Поставка решений

5.8. Интеграция

Интеграция - комплекс работ по настройке механизмов взаимодействия между различными учетными системами, которые функционируют независимо друг от друга в одной организационной структуре ("лоскутная" автоматизация).

Концептуально реализация интеграции может быть осуществлена двумя способами (рассмотрены более подробно далее):

  • Интеграция на базе интеграционной платформы (некоего ядра, которое осуществляет взаимодействие между учетными системами)
  • Интеграция без внедрения интеграционной платформы, с использованием связей между учетными системами только там где это необходимо.

Практически, реализация интеграции может быть осуществлена слежующими способами:

Пути интеграции


5.8.1. Интеграция данных

В свою очередь интеграцию данных можно разделить на два типа:


5.8.1.1. Репликативная интеграция

Репликативная интеграция - передающая сторона формирует реплику, передает ее принимающей стороне, которая в свою очередь загружает в себя реплику. В этом случае стандартами формата реплики являются двоичный формат и  XML-схема. Платформа Мельница Данных имеет готовые механизмы для реализации обоих форматов. 

Варианты реализации репликационной интеграции:

1. Данные должны быть переданы из сторонней учетной системы и загружены в Платформу Мельница данных:

УС-МД Реплика

В Платформе уже реализованы механизмы загрузки реплик в двоичном (бинарном) формате, а также в формате XML-схемы. В случае, если разработчики или сопровождающие сотрудники сторонней учетной системы имеют возможность выгрузки реплики в данных форматах, взаимодействие производится стандартными средствами Платформы. В противном случае создается конвертер для перевода данных реплики в один из стандартных форматов для дальнейшей загрузки реплики в Мельницу Данных.

2. Данные должны быть переданы из Платформы Мельница Данных и загружены в стороннюю учетную систему:

МД-УС Репликация

При необходимости выгрузки данных из Платформы Мельница Данных используются стандартные механизмы выгрузки реплики в двоичном (бинарном) формате или в формате XML-схемы. В случае, если эти варианты не являются приемлемыми для принимающей стороны (сторонней учетной системы), можно выполнить выгрузку данных через скриптлет, Microsoft Excel-файл, отчет или любыми механизмами просто выгрузить требуемый файл для дальнейшей обработки (загрузки) принимающей стороной. В этом случае необходимо четкое согласование протоколов и форматов обмена данными.

3. Данные должны быть переданы из одной сторонней учетной системы в другую. При этом Платформа Мельница Данных выступает в качестве интеграционной платформы:

МД - интеграционное ядро

Если Платформа выступает в качестве интеграционного ядра, в ней необходимо объявить структуры для хранения тех элементов данных, которые в Платформе по умолчанию не хранятся, но загружаются в нее из сторонних учетных систем и в дальнейшем подлежат какому-либо анализу. При этом нет необходимости обеспечивать функционирование бизнес-процессов над этими данными в рамках Платформы, данные просто хранятся.

Подобная интеграция осуществляется простыми готовыми средствами платформы в самые сжатые сроки.


5.8.1.2. On-Line доступ

Второй путь интеграции данных - Интеграция с использованием доступа к данным в режиме On-Line.

1. В том случае когда Платформа является серверной стороной, то есть стороной-поставщиком данных для других систем, возможны следующие варианты предоставления данных:

OnLine

- СУБД, то есть база данных, которая хранит все данные Платформы. На данный момент поддерживаются Oracle, Firebird, MS SQL. Возможна реализация поддержки и других систем управления базами данных. Для указанных баз данных доступны стандартные протоколы доступа, с помощью которых осуществляются запросы к данным Платформы непосредственно. Запросы формируются при помощи стандартизированного языка запросов Structured Query Language (SQL).  

- RESTful-сервис используется для реализации более сложной механики предоставления доступа к данным и входит в состав поставки сервера приложений Платформы. С его помощью, в частности, осуществляется удаленный доступ и доступ к данным через SOAP (Simple Object Access Protocol — простой протокол доступа к объектам) с автоматическим формированием по данным Платформы WSDL-документа, описывающего сервисы. Таким образом реализуется продвинутый функционал по отбору объекта по критериям, а также в части доступа ко всем данным Платформы по протоколу SOAP/

В случае если требуются какие-либо специфические протоколы для обмена данными, они реализовываются на уровне обработчика сервера-приложения. То есть осуществляется "надстройка"  сервера приложений Платформы для работы с данными в том виде, в котором это необходимо и по тому протоколу, который требуется в каждом конкретном случае. Таким образом, Сервер приложений Платформы востребован в большинстве случаев организации взаимодействия между системами.

       

  Практический пример реализации:

Компания "Мельница технологий" в одном из московских ВУЗов осуществяла интеграцию с тестирующей системой по проведению олимпиад. С использованием протокола SOAP в тестирующую систему из Платформы предоставлялась информация о реквизитах олимпиад, которые были выбраны каждым школьником-участником. Был реализован обработчик-"переходник", через который передавалсь информация. 

Для системы LMS (Learning Management System) компании Asteros данные также предоставляются по протоколу SOAP.

2. В случае когда Платформе необходим доступ к данным сторонних систем, используется готовый RESTful-"обработчик". Частными случаями данной ситуции являются взаимодействия Платформы с различными собственными web-приложениями, а также с "Обозревателем данных", работающим через удаленный доступ.

RESTful

Для получения данных в режиме On-Line от сторонних систем используются те же стандартные протоколы. При необходимости создаются "обработчики", которые отображают для конечного пользователя в визуальных формах Платформы данные, полученные из сторонних систем.

3. При использовании Платформы в качестве платформы интеграции различных сторонних систем, данные предварительно загруженные по описанным выше протоколам могут передаваться средствами Платформы. Однако, может быть реализован и механизм прозрачной передачи данных между сторонними системами.

RESTFUL интеграция


5.8.2. Интеграция функций
Данный тип развития интеграции в свою очередь можно разделить на 2 пути:

5.8.2.1. Взаимные вызовы

В данном случае подразумевается, что какая-либо учетная система открывает возможность вызова своих встроенных функций из сторонних систем.

Доступ к функциям возможен с помощью выполнения хранимых процедур (каждое бизнес-действие, которое производит пользователь, обязательно оформляется в виде хранимой процедуры на уровне СУБД Платформы). Процедуру можно вызывать, получив доступ к СУБД. Аналогично тому, как создаются select-запросы, запросы к данным, можно делать запросы, вызывающие бизнес-функции. Все методы, отчеты, и все, что доступно пользователю, может быть вызвано и через RESTful-сервис. При этом методы будут выполняться, отчеты будут формироваться в виде Excel, Word, PDF, HTML, в соответствии с запросом вызывающей стороны. Данный функционал обеспечивается готовым "обработчиком", входящим в состав поставки Платформы.

С помощью протокола SOAP можно вызывать любой метод любого объекта, получать результаты его выполнения без ограничений. 

В случае когда необходимо в Платформе использовать чужие функции, набор действий по вызову такой функции оформляется в виде скриптлета.

       

 Пример реализации:

В ВУЗе при формировании приказа о зачислении студента в Платформе, также автоматически создается объект "Приказ" в системе документооборота ВУЗа. В дальнейшем, передвижение приказа по маршруту согласования в решении на Платформе аналогично отображается в системе документооборота. 

Если для сторонней системы существуют какие-либо стандартные протоколы, по которым можно вызывать функцию, то средствами Платформы не составляет труда вызов данной функции.


5.8.2.2. Встраивание

Данный путь интеграции функций представляет собой ситуацию, когда сторонняя система непосредственно "встраивается" в решения на Платформе и код сторонней системы исполняется с использованием данных Платформы.

Существуют разные способы реализации данного пути:

- В open-source системах, как правило, слой доступа к данным вынесен в некий отдельный модуль. Характерный пример - это LMS eFront. Это Open-Source разработка, содержащая в себе большой объем php-кода, с развитым web-интерфейсом, и, в том числе, содержащая модуль доступа к данным. В процессе работы создается база MySQL база достаточно примитивной структуры. В этом случае можно изменить модуль доступа, так, чтобы вместо запросов к MySQL-базе механика делала бы запросы к базе данных Платформы. Тогда исполнение php-кода, его интерпретация происходит в рамках сервера приложений Платформы.

       

  Пример реализации:

Так как в базе данных Платформы уже хранятся данные о студентах, преподавателях, курсах и т.д., то при взаимодействии с системой обучения LMS, естественным, удобным и надежным решением является хранение все этих данных в одной базе данных

- В тех случаях, когда решения Платформы сами являются частью какой-либо более общей системы, и должны предоставлять свои функции, то это решается на уровне СУБД. То есть, сгенерированный Платформой прикладной код (код на соответствующем диалекте SQL) может быть интегрирован в код более масштабного хранилища, функционировать там, исполняться там, если в этом есть необходимость.

         Прикладные системы на базе СУБД Teradata позволяют использовать PL/SQL-код для каких-либо наборов данных, притом, что сама база гораздо имеет продвинутые возможности автоматического контроля версий, хроникальности, аналитики.


5.9. Положения и определения

5.9.1. Работа с типами данных

5.9.1.1. Домены

5.9.2. Язык PascalScript

На языке PascalScript на платформе "Мельница данных" описываются тела методов и выражения. Выражения используются в условиях отбора объектов определенного класса при их отображении в представлениях, а также как встраиваемые выражения, которые могут служить членами класса для чтения свойств.

Здесь и далее зарезервированные слова выделены жирным шрифтом.


5.9.2.1. Структура программного блока тела метода
  [Описание переменных]
  begin
    //Операторы
  end;

Комментарии расположены между символами { и } либо от символов // до конца строки.


5.9.2.2. Описание переменных
var
    Имя переменной[, Имя переменной…]: Тип;
    Имя переменной[, Имя переменной…]: Тип;
    ...
Имя переменной должно быть идентификатором (последовательность символов a-z, A-Z, 0-9, _). "Тип" может быть одним из следующих:
  • integer - определяет переменные целочисленного типа;
  • string[целое_число] - определяет переменные строкового типа с заданной максимальной длиной; максимальная длина задается в квадратных скобках и обязательна для задания;
  • float - определяет переменные вещественного типа;
  • date - определяет переменные типа "дата";
  • time - определяет переменные типа "время";
  • datetime - определяет переменные типа "дата со временем";
  • boolean - определяет переменные логического типа;
  • blob - определяет переменные типа больших двоичных объектов;
  • Имя класса - определяет переменные-ссылки на экземпляры соответствующих классов;
       
  var
   I: integer;
   LSomeObject: TObject;
   LStart, LStop: datetime;
   LNewName: string[64];

5.9.2.3. Операторы PascalScript

Операторы разделяются точкой с запятой (;). Операторы могут быть одним из следующих:


5.9.2.3.1. Составной оператор
begin
  //Другие операторы
end
Операторы, размещенные внутри составного оператора, разделяются точкой с запятой. Никаких ограничений на состав операторов и количество уровней вложенности не накладывается.
       
begin
  Result := LCurrentValue;
  Exit;
end;

5.9.2.3.2. Оператор присваивания
Выражение1 := Выражение2

Присваивает значение выражения Выражение2 выражению Выражение1. Типы Выражения1 и Выражения2 должны быть совместимы (совпадать по классу домена либо оба быть числовыми). Для этого на Выражение1 (стоящее слева от знака равенства, lvalue) накладывается ряд ограничений. Это выражение должно быть:

  • Полем или свойством экземпляра класса
  • Локальной переменной
  • Параметром
  • Зарезервированной переменной Result
       
LObject.Name := 'Новое имя';
       
Result := 25;
       
LStartTime := StrToDateTime('01.01.2006 00:00:30'); 
       
var
  LObject: TObject;
  LClass: TClass;
  I: Integer; 
  F: Float;
begin
  I := F;  //неверно
  F := I;  //верно
  LObject := LClass; //верно
  LClass := LObject; //неверно. Должно быть LClass := (LObject as TClass);
end;  

5.9.2.3.3. Оператор вызова
ИмяПроцедуры [(Параметр1, Параметр2 ...)]

"ИмяПроцедуры" должно быть:

  • Именем метода класса и вызываться с указанием класса либо экземпляра;
  • Именем метода экземпляра и вызываться с указанием экземпляра;
  • Именем метода своего класса либо предка и вызываться без указания спецификаторов.
Порядок и количество параметров в операторе вызова должны строго совпадать с описанием метода.

       
  //метод класса, указан класс
  LList := TObjectList.Create(Name, Description, TObjectList, nil, nil, Folder);    

  //метод экземпляра, указан экземпляр. Метод не имеет параметров.
  LList.Destroy;

  //свой либо унаследованный метод
  BuildDefaultActions(Name, True); 

5.9.2.3.4. Оператор ветвления
if Выражение then
  //Оператор1
[else
  //Оператор2]

Выражение должно быть логического типа. В случае если значение Выражения истинно, выполняется Оператор1. Часть else является необязательной и относится к последнему оператору if, не имеющему таковой. В случае ее наличия Оператор2 выполняется, если значение Выражения ложно.

       
if LIndex > 25 then
  raise 'Индекс слишком большой.';
       
if LMonth = 'январь' then
  January
else if LMonth = 'февраль' then
  February
else   
  OtherMonth;  //обратите внимание на точки с запятой.

5.9.2.3.5. Оператор выбора
case Выражение of
  Значение1: //Оператор1
  Значение2: //Оператор2
  ...
[else
  //Оператор ]
end

Заменяет каскад операторов if. Значение Выражения должно быть числового типа. Часть else выполняется в случае, если Выражение не равно ни одному из перечисленных вариантов. Эта часть не является обязательной.

       
сase LIndex of
  0: ZeroIndex;
  1,2,3: SmallIndex;
  4,5,6,7,8,9,10: BigIndex;
else
  raise 'Слишком большой или отрицательный индекс.';
end;

5.9.2.3.6. Цикл с предусловием
while Выражение do
  //Оператор

Оператор выполняется до тех пор, пока значение Выражения истинно. Выражение должно быть логического типа. Если при входе в цикл Выражение не истинно, то тело цикла не будет выполнено ни одного раза.

       
while LList.Count > 0 do
  LList.GetItem(0).Destroy;

while True do
begin
  LValue := LValue.NextValue;
  if LValue.Value > 10 then
  begin
    Result := LValue.Value;
    exit;
  end;
end;

5.9.2.3.7. Цикл с постусловием
repeat
  //Операторы
until Выражение

Операторы выполняются до тех пор, пока значение Выражения ложно. Выражение должно быть логического типа. Обратите внимание, что внутри себя оператор может содержать несколько операторов, разделенных точкой с запятой. Тело цикла обязательно будет выполнено хотя бы один раз.

       
repeat
  Result := Result + 1;
  LObject := LObject.Parent;
until LObject = nil;

5.9.2.3.8. Цикл с параметром
for Параметр := Выражение1 (to|downto) Выражение2 do
  //Оператор

Параметр цикла обязан быть простой локальной переменной. Функционально цикл с параметром эквивалентен циклам:

  • Для формы to
    Параметр := Выражение1;
    while Параметр <= Выражение2 do
    begin Оператор; Параметр := Параметр + 1; end;
  • Для формы downto
    Параметр := Выражение1;
    while Параметр >= Выражение2 do
    begin Оператор; Параметр := Параметр - 1; end;
Если Выражение1 равно Выражению2, тело цикла будет выполнено один раз.

       
for I := LList.Length - 1 downto 0 do
// если LList.Length = 0, тело цикла ни разу не будет выполнено.
begin
  LClass := LList.GetItem(I);
  LMethod := any(TMethod with (Name = LName) and (Master = LClass));
  LParamList.Add(any(TMethod with (Name = LName) and (Master = LClass)));
end; 

5.9.2.3.9. Цикл по экземплярам
for each Параметр of ИмяКласса [with Выражение]
       [by [-] Выражение [, [-] Выражение]] do
         //Оператор

Цикл осуществляется по выборке среди экземпляров класса ИмяКласса, для которых истинно Выражение. Если Выражение не задано, то по всем экземплярам. Ссылка на текущий в рамках цикла экземпляр присваивается в локальную переменную Параметр. Выражение должно определяться относительно переменной Параметр. Выраженния, следующие за ключевым словом by, определяют порядок обхода экземпляров. Знак "-" перед выражением (любого типа) определяет обратный порядок обхода.

       
for each LOption of TOption with LOption.Domain.Required do
    // для каждой настройки, домен которой обязателен
  LOption.SetDefaultValue;

5.9.2.3.10. Оператор прекращения цикла
break

Происходит немедленный выход из цикла. Выполняется финализация операторов защиты завершения, которыми защищено тело цикла. Допустим только в теле цикла с предусловием, цикла с постусловием, цикла с параметром или цикла по экземплярам.


5.9.2.3.11. Оператор выхода из подпрограммы
exit

Происходит немедленный выход из программного блока. Выполняется финализация операторов защиты завершения.


5.9.2.3.12. Оператор защиты завершения
try
  //Операторы1
finally
  //Операторы2
end

Выполняются операторы Операторы1, разделенные точкой с запятой. В случае возникновения исключительной ситуации управление сразу передается на Операторы2, и после их выполнения исключение остается активным. Если исключения не произошло, выполняются Операторы2. Если среди Операторов1 встречается оператор exit, то Операторы2 все равно выполняются.

       
//создание временного объекта-списка
LList := TObjectList.Create(Name, Description, TObjectList, nil, nil, Folder);    
try
  LList.Add(LValue);
  Exit;
finally
  //гарантированное уничтожение созданного объекта независимо от исключений.
  LList.Destroy;
end;

5.9.2.3.13. Оператор обработки исключительных ситуаций
try
  //Операторы1
except
  //Операторы2
end

Выполняются операторы Операторы1. В случае возникновения исключительной ситуации управление передается на Операторы2. Если исключительных ситуаций не возникло, Операторы2 не выполняются никогда. При передаче управления на Операторы2 исключительная ситуация деактивирована. Для ее повторного возбуждения можно воспользоваться оператором возбуждения исключения без указания текстовой строки сообщения.

       
try
  LObject.NeverTouch := True;
  LObject.ExecuteCoolMethod; //если метод выполнен неудачно
except
  LObject.NeverTouch := True;  //установить флаг и ничего не сообщать пользователю.
end;
       
try
   LObject.ExecuteCoolMethod; //если метод выполнен неудачно
except
   LObject.Destroy; //удалить неудачный объект
   raise;           // продолжить обработку исключения.
end;

5.9.2.3.14. Оператор возбуждения исключения
raise [Выражение]
Возбуждает исключение, которое, если не было обработано блоком except оператора обработки, дойдет до пользователя. Пользователь увидит сообщение, определяемое Выражением. Выражение должно иметь строковый тип и является обязательным для всех случаев, кроме части except оператора обработки исключений.

5.9.2.3.15. Оператор унаследованного вызова
inherited

Работает только в унаследованном переопределенном методе. Вызывается метод предка с параметрами, заданными в параметрах к моменту вызова. Если программный блок представляет собой тело функции, то в псевдопеременной Result будет результат выполнения метода предка.

       
// в теле конструктора
Name := 'Object name';
Description := 'Object description';
inherited; //вызов предка с параметрами Name и Description, 
           //заданными двумя предыдущими операторами. Ссылка на 
           //созданный объект лежит в 
           //псевдопеременной Result
Result.Name := 'New name';

5.9.2.4. Выражения и операции

5.9.2.4.1. Состав выражения
Любое выражение имеет тип. Выражения состоят из следующих элементов:
  • Целая числовая константа (0 3 234);
  • Вещественная числовая константа. Дробная часть отделяется от целой точкой (".") (3.14 2.71);
  • Строковая константа. Заключается в апострофы. ('Some string' '10', '01.01.2006' 'now');
  • Логическая константа (True False);
  • Безтиповая (любого типа) константа nil;
  • Зарезервированное слово Self. Обозначает разный объект в зависимости от контекста:
    • В методах класса кроме конструктора - использование запрещено.
    • В методах экземпляра - всегда экземпляр, для которого вызван метод.
    • В конструкторе - до вызова унаследованного метода значение не определено. После вызова - ссылка на сконструированный объект.
    • В выражениях условий отбора - объект, для которого принимается решение о его вхождении в отбор.
  • Квалификатор.
  • Агрегат.

5.9.2.4.2. Квалификатор

Квалификатор обозначает объект, переменную, параметр, свойство, поле, вызов функции. Квалификатор состоит из идентификаторов, разделенных точкой.

        Result
        AName
        Caption
        LObject.Name
        LObject.Parent.Name
        LObject.ChildCount
        LObject.HasAsParent(LOtherObject)

При интерпретации квалификатора используется следующий порядок разбора идентификатора:

  1. Контекстная переменная (для выражений условий отбора доменов)
  2. Локальная переменная
  3. Параметр
  4. Имя элемента перечисления
  5. Имя класса. Вне контекста означает ссылку на соответствующий объект класса TClass
  6. Имя поля
  7. Имя метода
  8. Имя свойства

При интерпретации квалификатора внутри выражения агрегата правила разбора идентификатора изменяются:

  1. Контекстная переменная (для выражений условий отбора доменов)
  2. Имя элемента перечисления
  3. Имя класса. Если это имя агрегируемого класса, то дальнейшие разыменования относятся к агрегируемому объекту
  4. Имя поля
  5. Имя метода
  6. Имя свойства
  7. Локальная переменная
  8. Параметр


5.9.2.4.3. Агрегат

Агрегат определяет агрегированное значение над экземплярами определенного класса, удовлетворяющими условиям агрегации. Агрегаты бывают следующих типов:

  • any - первый попавшийся объект. Результат имеет тип ссылки на объект агрегируемого класса.
           
    any(TObject with Master = Self.Parent)  
    //первый попавшийся объект, имеющий значение 
    //свойства Master равным значению свойства 
    //Parent текущего (контекстного) объекта.
    
  • count - количество объектов. Результат имеет целочисленный тип.
           
    count(TObject with Master = Self.Parent) 
    //количество объектов, имеющих значение свойства 
    //Master равным значению свойства Parent 
    //текущего объекта.
    
  • sum - сумма значений свойства, поля или функции объектов. Результат имеет тип суммируемого поля, свойства или функции
           
    sum(TExam.Mark with Master = LStudent) //сумма 
    //баллов студента по его испытаниям
    
  • max, min - соответственно максимальное и минимальное значений свойства, поля или функции объектов. Результат имеет тип агрегируемого поля, свойства или функции
           
    min(TObject.Created) // момент создания первого 
    //объекта Системы.
    

Внутри выражения агрегата правила разбора идентификатора изменяются на следующие:

  1. Контекстная переменная (для выражений условий отбора доменов)
  2. Имя элемента перечисления
  3. Имя класса. Если это имя агрегируемого класса, то дальнейшие разыменования относятся к агрегируемому объекту
  4. Имя поля
  5. Имя метода
  6. Имя свойства
  7. Локальная переменная
  8. Параметр


5.9.2.4.4. Операции

Операции связывают элементы выражений.

Таблица операций в порядке приоритета:
Левый
операнд
Правый операнд
Целый Вещест-
венный
Дата Время Дата со временем Логи-
ческий
Строковый Объект nil
not
Нет
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
* (звездочка)
Целый
Целый
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Вещест-
венный
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Время
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
/ (слэш, дробь)
Целый
Вещест-
венный
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Вещест-
венный
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Время
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
div
Целый
Целый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Время
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
and
Целый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Время
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
or
Целый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Время
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
+ (плюс)
Целый
Целый
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Вещест-
венный
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Дата
Дата со временем
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Время
Время
Время
Дата со временем
Время
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Дата со временем
Дата со временем
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
- (минус)
Целый
Целый
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Вещест-
венный
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Дата
Дата со временем
Целый
Дата со временем
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Время
Время
Время
Дата со временем
Время
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Дата со временем
Дата со временем
Вещест-
венный
Дата со временем
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
=, <> (равно, не равно)
Целый
Логи-
ческий
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Вещест-
венный
Логи-
ческий
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Дата
Запрещено
Запрещено
Логи-
ческий
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Логи-
ческий
Время
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Дата со временем
Запрещено
Запрещено
Логи-
ческий
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Логи-
ческий
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Логи-
ческий
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Логи-
ческий
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Логи-
ческий
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
<, >, <=, >= (меньше, больше, меньше либо равно, больше либо равно)
Целый
Логи-
ческий
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Логи-
ческий
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Запрещено
Запрещено
Логи-
ческий
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Время
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Запрещено
Запрещено
Логи-
ческий
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
is
Целый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Время
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
as
Целый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Вещест-
венный
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Время
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Дата со временем
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Логи-
ческий
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Строковый
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Объект
Запрещено
nil
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено
Запрещено


5.9.2.4.4.1. Особенности применения операций
  1. Приоритет сравнений ниже приоритета операций булевой логики. Поэтому выражение
    LObject.Master = LMaster and LObject.Parent = LParent
    будет интерпретироваться следующим образом:
    LObject.Master = (LMaster  and LObject.Parent) = LParent
    и вызовет ошибку компиляции из-за применения операции and к объектам. Необходимо писать:
    (LObject.Master = LMaster) and (LObject.Parent = LParent)
  2. Любое значение (выражение любого типа) сравнивается с безтиповой константой nil:
          LObject := any(TObject with Name = 'Some name');
          if LObject = nil then
             .....
          
  3. Операции "Унарный минус" не существует. Для задания отрицательных констант пользуйтесь конструкцией 0-Значение:
    Result := 0-1;

5.9.2.5. Формальная грамматика
Goal: MethodBody | Expression;

MethodBody: [ConstantDeclaration] [VariableDeclaration] CompoundStatement ";";

ConstantDeclaration: "const" Ident ":" DomainSpecification ";" 
  [{Ident ":" DomainSpecification ";"}];

VariableDeclaration: "var" DomainDefinition [{DomainDefinition}];

DomainDefinition: Ident ":" DomainSpecification ";";

DomainSpecification: IntegerDomainDefinition
  | StringDomainDefinition
  | FloatDomainDefinition
  | DateDomainDefinition
  | TimeDomainDefinition
  | DateTimeDomainDefinition
  | BooleanDomainDefinition
  | BlobDomainDefinition
  | EnumerationDomainDefinition
  | Ident;

IntegerDomainDefinition: "integer";
StringDomainDefinition: "string" "[" Number "]";
FloatDomainDefinition: "float" ["(" Number ["." Number] ")"];
DateDomainDefinition: "date";
TimeDomainDefinition: "time";
DateTimeDomainDefinition: "datetime";
BooleanDomainDefinition: "boolean";
BlobDomainDefinition: "blob" | "clob";
EnumerationDomainDefinition: "(" Ident {"," Ident} ")";

CompoundStatement: "begin" Statement [{";" Statement}] "end";

Statement:
  | CompoundStatement
  | AssignmentStatement
  | InheritedStatement
  | CallStatement
  | IfStatement
  | CaseStatement
  | ForStatement
  | WhileStatement
  | RepeatStatement
  | TryFinallyStatement
  | TryExceptStatement
  | RaiseStatement
  | ForEachStatement
  | ExitStatement;

AssignmentStatement:  Qualifier ":=" Expression;

CallStatement: Qualifier;

InheritedStatement: "inherited";

IfStatement: "if" Expression "then" Statement ["else" Statement];

CaseStatement: "case" Expression "of" {CaseBranch} ["else" Statement ";"] "end";

CaseBranch: CaseLabel [{',' CaseLabel}] ":" Statement ";";

CaseLabel: Number | Ident;

ForStatement: "for" Ident ":=" Expression ("to"|"downto") 
  Expression "do" Statement;

WhileStatement: "while" Expression "do" Statement;

RepeatStatement: "repeat" Statement [{";" Statement}] "until" Expression;

TryFinallyStatement: "try" Statement [{";" Statement}] "finally" 
  Statement [{";" Statement}] "end";

TryExceptStatement: "try" Statement [{";" Statement}] "except" 
  Statement [{";" Statement}] "end";

RaiseStatement: "raise" [Expression];

ForEachStatement: "for" "each" Ident "of" Ident ["with" Expression] 
  ["by" Expression] "do" Statement;

ExitStatement: "exit";

Expression: ComparedExpression [{RelationOperation Expression}];

ComparedExpression: Addon [{AdditionOperaton ComparedExpression}];

Addon: Factor [{MultiplicativeOperation Addon}];

Factor: "(" Expression ")"
  | "not" Expression
  | Number ["." Number]
  | StringConstant
  | Qualifier
  | "nil"
  | "True"
  | "False"
  | "(" Expression "is" Ident ")"
  | "any" Aggregate
  | "count" Aggregate
  | "sum" Aggregate
  | "max" Aggregate
  | "min" Aggregate;

Aggregate: "(" Ident ["." Ident] ["with" Expression] ")";

Qualifier: QualifierPart [{"." QualifierPart}];

QualifierPart: Ident ["(" Expression [{", " Expression}] ")"]
  | "self"
  | "(" Qualifier "as" Ident ")";

RelationOperation: "<"
  | ">"
  | "<="
  | ">="
  | "="
  | "<>";

AdditionOperaton: "+"
  | "-"
  | "or";

MultiplicativeOperation: "*"
  | "/"
  | "div"
  | "and";

5.9.2.6. Соглашения

5.9.2.6.1. Соглашения о наименованиях

В качестве вводимых (объявляемых) идентификаторов необходимо использовать так называемую нотацию InfixCaps. Если при создании имени используется несколько слов, то необходимо использовать заглавную букву для каждого слова в имени. Для разделения слов нельзя использовать символ подчеркивания. Все сущности именуются на английском языке, при этом использование сокращений является оправданным только в случае, если длина образуемого имени не согласуется с внешними по отношению к соображениям бизнес-логики ограничениям.

  • Имя класса должно начинаться с латинской буквы 'T'.
           
    Имя Наименование
    TObjectList
    Список объектов
    TLearnPlan
    Учебный план
  • Имя поля должно начинаться с латинской буквы 'F'.
           
    Имя Наименование
    FLearnPeriod
    Период обучения
    FExamMark
    Оценка за экзамен
  • Имя свойства не имеет префикса.
           
    Имя Наименование
    ExamKind
    Вид рубежного испытания
    ContactPhone
    Контактный телефон
    Если членом класса для чтения свойства является поля, то имя свойства должно повторять имя поля без префикса 'F'. Если членом класса для чтения свойства является метод, то имя поля должно повторять имя метода без слова 'Get'.
  • Имя параметра не имеет префикса.
           
    Имя Наименование
    OrderNumber
    Номер приказа
    ExamDate
    Дата проведения экзамена
    Параметры, используемые для инициализации значений полей, должны иметь имя, повторяющее имя поля без префикса 'F'. При компиляции тела метода, написанного на языке PascalScript имена параметров и имена свойств будут распознаваться в соответствии с порядком разбора идентификаторов, как это описано здесь и здесь.
  • Имена методов должны представлять собой императивный глагол на английском языке, выражающий смысл того, что метод делает. Имена методов не имеют префикса. Имена методов, используемых для получения значений свойств должны (как члены класса для чтения), должны начинаться со слова Get. Имена методов, используемых для установки значений свойств должны (как члены класса для записи), должны начинаться со слова Set.
           
    Имя Наименование
    CountMarkSumm
    Вычислить сумму баллов
    GetAge
    Получить значение возраста
    SetMark
    Установить значение оценки
  • Имена локальных переменных должны начинаться с латинской буквы 'L'.
            LMarkSumm (сумма баллов), LObjectCount (количество объектов).
  • Имена доменов должны начинаться с латинской буквы 'T'. В именах доменов допустимы пробелы. Рекомендуется к имени домена добавлять слово 'domain' (через пробел), а для обязательных доменов 'required domain' (через пробел) тогда, когда необходимо исключить возможность использования этих доменов в текстах на PascalScript. Первым словом в имени домена-ссылки должно быть имя класса домена. Исключением являются имена доменов, соответствующих простым типам данных без дополнительных ограничений. Имена таких доменов могут повторять имена типов языка PascalScript (Integer, Boolean, Float).
           
    Имя Класс домена Наименование
    TPrice domain
    Вещественный
    домен Цена
    TWeight required domain
    Целочисленный
    домен Вес (обязательный)
    Boolean
    Логический
    Логический
    TClassMember required domain
    Ссылка
    домен Член класса
  • Имена элементов перечислений должны иметь префикс из двух или трех символов, идентифицирующий соответствующий домен-перечисление. Префикс записывается строчными буквами. Например,
           
    Имя Наименование
    для домена TExamKind (вид испытания)
    ekTest
    зачет
    ekExam
    экзамен
    ekDifTest
    дифференцированный зачет
    для домена TAggregateKind (вид агрегата)
    agCount
    количество
    agSumm
    сумма
    agAverage
    среднее значение
    Настоятельно рекомендуется давать уникальные имена элементов перечислений в пределах всей системы.

5.9.2.6.2. Cтилевое оформление исходного кода

Код на языке PascalScript, являющийся частью поставляемого решения, должен быть оформлен в соответствии с изложенными правилами.


5.9.2.6.2.1. Использование строк, пробелов и отступов

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

Пробелы, запрещенные к использованию:

  • До или после точки "."
  • Между именем вызываемого метода и открывающей скобкой "("
  • После открывающей скобки "(" или перед закрывающей ")"
  • Перед точкой с запятой ";"
  • Перед двоеточием ":"
  • Перед запятой ","

Двоеточие для всех объявлений переменных не должно содержать перед собой пробелов и иметь один пробел после перед именем типа.

Всегда необходимо использовать два пробела для всех уровней отступа. Другими словами, первый уровень отступает на два пробела, второй на четыре и так далее. Никогда не используйте символы табуляции.

Существует несколько исключений из этого правила. Зарезервированные слова var, begin и end, относящиеся к программному блоку вцелом, всегда должны примыкать к левой границе. Код внутри блока begin..end должен иметь отступ два символа.

Все строки должны быть ограничены 80 столбцами. Строки, длиннее чем 80 столбцов должны быть разделены и перенесены. Все перенесенные строки должны быть выровнены по первой строке и иметь отступ в два символа. Зарезервированное слово begin всегда должно находиться на своей отдельной строке.

Нельзя переносить строки в тех местах, где не допускаются пробелы, например между именем метода и открывающей скобкой. Никогда нельзя помещать зарезервированное слово begin на строку, содержащую другой код.


5.9.2.6.2.2. Оформление объявлений и операторов

Все переменные с их типами должны быть объявлены на различных строках.

Простые операторы содержат одну точку с запятой. Если Вам необходимо разделить оператор, то перенесите продолжение оператора на следующую строку с отступом в два пробела.
       
  MyValue :=
    MyValue + (SomeVeryLongStatement / OtherLongStatement);

Составные операторы всегда заканчиваются точкой с запятой.
       
begin
  MyStatement;
  MyNext Statement;
  MyLastStatement;
end;

Каждое присвоение и каждое выражение должно располагаться на разных строках.

Оператор if

Оператор if всегда должен располагаться по крайней мере на двух строках
       
if A < B then DoSomething; 
       
if A < B then 
  DoSomething;
В случае составного оператора необходимо поместить каждый оператор на новую строку.
       
  if A < B then begin
    DoSomething;
    DoSomethingElse;
  end else begin
    DoThis;
    DoThat;
  end;
       
  if A < B then
  begin
    DoSomething;
    DoSomethingElse;
  end
  else
  begin
    DoThis;
    DoThat;
  end;
Все остальные варианты расположения операторов не рекомендуются и не одобряются, хотя и являются синтаксически правильными.

Оператор for

       
  for i := 0 to 10 do begin
    DoSomething; 
    DoSomethingElse;
  end;
       
  for i := 0 to 10 do
  begin
    DoSomething;
    DoSomethingElse;
  end;

  for I := 0 to 10 do
    DoSomething;

Оператор while

       
  while x < j  do begin
    DoSomething;
    DoSomethingElse;
  end;
       
  while x < j do
  begin
    DoSomething;
    DoSomethingElse;
  end;  
    
  while x < j do
    Something;

Оператор repeat..until

       
  repeat
    x := j;
    j := UpdateValue;
  until j > 25;

Оператор case

Несмотря на то, что существует множество синтаксически правильных конструкций, одобренной и рекомендованной считается следующая:
       
  case LCode of
    1, 3:
      begin
        Incr := FIncrement + 1;
        FinalIncr := FIncrement div FLineDiv;
        Count := FLineDiv;
      end;
    2, 4:
      begin
        Incr := FPageIncrement;
        FinalIncr := Incr + 1;
        Incr := Incr div FPageDiv;
        Count := FPageDiv;
      end;
  else
    begin
      Count := 0;
      Incr := 0;
      FinalIncr := 0;
    end;
  end;

Оператор try

Несмотря на то, что существует множество синтаксически правильных конструкций, одобренной и рекомендованной считается следующая:
       
try
  try
    EnumItems(CurrentThreadID, LDisable, 0);
    Result := TaskList;
  except 
    EnableItems(TaskList);
    raise;
  end; 
finally
  TaskList := SaveList; 
  TaskActive := SaveActive;
end; 

5.9.3. Интерфейсы взаимодействия с внешними подсистемами

Системный слой платформы "Мельница данных" предоставляет сторонним системам ряд интерфейсов, дающих возможность обращаться к объектам базы данных и их свойствам, вызывать методы классов и объектов, осуществлять запросы к базе данных, управлять поведением элементов управления и проч.


5.9.3.1. Интерфейс IContext
  IContext = interface(IDispatch)
    ['{79847D79-A3BE-408F-B59F-662B91BC6350}']
    function Handle: Integer;
    function getName(ID: OleVariant): WideString;
    function getDescription(ID: OleVariant): WideString;
    function createDataSet(const TargetClassName: WideString):
      IContextDataSet;
    function executeMethod(const ClassName: WideString;
      const MethodName: WideString;
      Params: OleVariant): OleVariant;
    function executeReport(const ClassName: WideString;
      const TemplateName: WideString;
      Params: OleVariant): IDispatch;
    function getPropValue(const ClassName: WideString;
      const PropName: WideString;
      const ID: OleVariant): OleVariant;
    procedure setPropValue(const ClassName: WideString;
      const PropName: WideString;
      const ID: OleVariant; Value: OleVariant);
    function select(const ClassName: WideString;
      QueryItems: OleVariant): IDispatch;
    function enumerationItem(ItemIdentifier: OleVariant): WideString;
    function getClass(const ClassName: WideString): WideString;
    function createGUID: WideString;
    procedure processStart(const Description: WideString;
      ItemCount: Integer);
    procedure processStep;
    procedure processStop;
    function PlaceDataSet(const Range: IDispatch;
      const DataSet: IContextDataSet;
      ShiftRows: WordBool; ShiftColumns: WordBool): Integer;
    procedure DebugString(const Message: WideString);
    procedure ExportObject(var Document: OleVariant; const ID: WideString;
      const ClassID: WideString);
    function callRoutine(const ClassName, RoutineName: WideString;
      var RetValue: OleVariant; const ScriptPart: OleVariant): WordBool;
    function getOleObject(const ClassID, AccessibleFileName: WideString): IDispatch;
    function getResource(const Name: WideString): WideString;
    function getTempFileName(const Extension: WideString): WideString;
    function selectVaue(const ClassDomain: WideString;
      const ExpressionContext: IContextExpressionInfo;
      var Value: OleVariant): WordBool;
    procedure raiseManagedException(const ExceptionMessage: WideString);
    function getCRC(Data: OleVariant): WideString;
    function downloadData(const Host: WideString; const Url: WideString;
      const UserName: WideString; const Password: WideString;
      NegotiateAuth: WordBool; PostData: OleVariant;
      const PostContentType: WideString; PostDataIsBinary: WordBool;
      CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): OleVariant;
    function createBinaryData: IDispatch;
    function BinaryToBitmap(const Data: IDispatch): IDispatch; safecall;
    function editValues(const ValuesList: WideString; const Title: WideString;
      UseTabs: WordBool; HideOKButton: WordBool;
      const ScriptPart: OleVariant): WordBool;
    function MsgBox(const Prompt: WideString; Buttons: LongWord;
      const Title: WideString;
      const HelpFile: WideString; Context: LongWord): Integer;
    function ShowMsgBox(const Prompt: WideString; Buttons: LongWord;
      const Title: WideString;
      const HelpFile: WideString; Context: LongWord): Integer;
    function buildNamedFile(const Data: IDispatch; const StoredFileName: WideString;
                            Propmpt: WordBool; Compress: WordBool): IDispatch;
    procedure parseNamedFile(const NamedFile: IDispatch; out FileName: OleVariant;
                             out Data: OleVariant);
    procedure showView(const ViewName: WideString; Key: OleVariant;
                       const DetailPropertyName: WideString);
    procedure showDataSet(const DataSet: ContextDataSet; const Caption: WideString;
                          ColumnCaptions: OleVariant; ColumnOnChangeHandlers: OleVariant;
                          TakeActionsFromView: OleVariant);
    function executeConsoleProcess(const CommandLine: WideString; MaxDuration: Integer;
                                   const OutputData: OleVariant): Integer;
    function createRaster: IDispatch;
    function createZIPArchive: IDispatch;
    function ConvertExcel(Source: OleVariant; const Format: WideString): IDispatch;
    property ContextObject: IDispatch;
    property Language: WideString;
    property UserName: WideString;
    property NegotiateAuth: WordBool;
    property Variable[const Name: WideString; Persistent: WordBool]: OleVariant;
  end;

Члены интерфейса доступны для использования в скриптах форм задания параметров, а также в отчетах как члены класса передаваемого контекстного объекта.

  • Функция Handle возвращает дескриптор главного окна приложения.
  • Функция getName возвращает имя объекта по его идентификатору.
  • Функция getDescription возвращает наименование объекта по его идентификатору.
  • Функция createDataSet создает набор данных, основанный на экземплярах класса, имя которого передано как параметр. Возвращаемый объект реализует интерфейс IContextDataSet.
  • Функция executeMethod осуществляет вызов метода с параметрами. Имя класса передается в параметре ClassName, имя вызываемого метода - в параметре MethodName. Если вызываемый метод явяется функцией, то результат ее выполнения возвращается как результат вызова executeMethod. Параметры вызова метода передаются через параметр Params следующим образом:
    • Для методов класса без параметров можно передавать любое значение, например, Null.
    • Для методов класса, имеющих один параметр, значение Params есть значение этого единственного параметра.
    • Для методов класса, имеющих более одного параметра, значение Params есть массив значений параметров.
             
      VBScript, VBA
      LValue = executeMethod("TObject", "Round", Array(10.24, 1))
      JScript
      LValue = executeMethod("TObject", "Round", new Array(10.24, 1));
      Object Pascal
      LValue := executeMethod('TObject', 'Round', VarArrayOf([10.24, 1]));
    • Для методов экземпляра без параметров значение Params есть идентификатор объекта, для которого вызывается метод.
    • Для методов экземпляра, имеющих параметры, значение Params есть массив значений параметров. При этом первым элементом массива является идентификатор объекта, для которого вызывается метод.
             
      VBScript, VBA
      executeMethod "TObject", "MergeTo", Array(LOldObject, LNewObject)
      JScript
      executeMethod("TObject", "MergeTo", new Array(LOldObject, LNewObject));
      Object Pascal
      executeMethod('TObject', 'MergeTo', VarArrayOf([LOldObject, LNewObject]));
  • Функция executeReport осуществляет вызов отчета с параметрами. Имя класса передается в параметре ClassName, имя вызываемого метода - в параметре TemplateName. Параметры вызова передаются в параметре Params аналогично вызову executeMethod. В результате вызова функции возвращается ссылка на рабочую книгу Microsoft Excel, документ Microsoft Word и так далее. Судьба приложения, в рамках которого создан возвращенный объект, остается на усмотрение вызывающей стороны. Если вызывающая сторона предполагает взаимодействие объекта с пользователем, то необходимо обеспечить видимость объекта-приложения (Application.Visible := True;). В противном случае необходимо закрыть приложение после освобождения объекта документа (Application.Quit).
  • Функция getPropValue возвращает значение свойства объекта. Имя класса, имя свойства и идентификатор объекта задаются в параметрах.
  • Процедура setPropValue устанавливает значение свойства объекта в значение, заданное параметром Value. Для очистки значения можно использовать пустую строку или значение Null. Имя класса, имя свойства и идентификатор объекта задаются в параметрах.
  • Функция select возвращает ссылку на XML-документ, содержащий в корневом элементе элементы, представляющие собой записи набора данных на основе класса ClassName (с полями, разнесенными по элементам), определяемого структурой параметра QueryItems.
  • Функция enumerationItem возвращает идентификатор элемента перечисления по имени.
           
    VBScript, VBA
    LItemID = enumerationItem("rsReplicatableMetadata")
    JScript
    LItemID = enumerationItem("rsReplicatableMetadata");
    Object Pascal
    LItemID := enumerationItem('rsReplicatableMetadata');
  • Функция getClass возвращает идентификатор объекта типа Класс TClass (Классы) по имени.
           
    VBScript, VBA
    LClassID = getClass("TDocumentType")
    JScript
    LClassID = getClass("TDocumentType");
    Object Pascal
    LClassID := getClass('TDocumentType');
  • функция createGUID является оберткой над функцией Windows API CoCreateGuid. Возвращает сгенерированный глобально-уникальный идентификатор, преобразованный в строку.
  • процедура processStart информирует систему о необходимости показать окно выполнения длительного процесса. Текст, описывающий процесс (он появляется в показываемом окне) задается параметром Description. В случае, если есть возможность определить количество "шагов" процесса, то это количество необходимо передать в параметре ItemCount. В случае, если параметр ItemCount больше нуля, окно выполнения будет снабжено индикатором прогресса. Если значение ItemCount равно нулю, то окно появится без индикатора прогресса. Если значение ItemCount меньше нуля, то решение о появлении окна будет принято системой самостоятельно на основании загрузки процессора и окно процесса не появится, если процесс завершится достаточно быстро.
  • процедура processStep информирует систему о завершении очередного "шага" процесса, что найдет отражение в индикаторе прогресса окна выполнения длительного процесса, если таковые случатся.
  • процедура processStop информирует систему о завершении длительного процесса, что приведет к закрытию окна выполнения длительного процесса, если таковое случится.
  • функция PlaceDataSet осуществляет перенос данных из набора, задаваемого параметром DataSet в некоторое место документа Microsoft Office. Место назначения определяется параметром Range следующим образом:
    Microsoft Word
    • Объект Range. По месту расположения этого объекта будет создана таблица (Table), в которой будут размещены данные из набора.
              PlaceDataSet ThisDocument.Bookmarks("BookMarkName").Range, LDataSet
              PlaceDataSet Selection.Range, LDataSet
    • Объект Document. В самом начале переданного документа будет создана таблица (Table), в которой будут размещены данные из набора.
              PlaceDataSet ThisDocument, LDataSet
    Microsoft Excel
    • Объект Range. По месту расположения этого объекта (диапазона) будут размещены данные из набора. Если параметр ShiftRows задан и равен True, то заданный диапазон будет расширен вниз на необходимое количество строк, и информация, лежащая ниже переданного диапазона, будет по-прежнему лежать ниже. Если нет, то она (скорее всего) будет затёрта данными набора. Если параметр ShiftColumns задан и равен True, то этот диапазон будет расширен вправо на необходимое количество столбцов, и информация, лежащая правее переданного диапазона, будет по-прежнему лежать правее. Если нет, то она (скорее всего) будет затёрта данными набора.
              PlaceDataSet Range("C4"), LDataSet
    • Объект WorkSheet. На переданном листе будут размещены данные из набора.
              PlaceDataSet WorkSheets("HiddenSheet"), LDataSet
    Функция возвращает количество размещенных записей.
  • процедура DebugString выводит переданную в качестве аргумента строку в отладочный монитор.
  • процедура ExportObject осуществляет экспорт информации об объекте, задаваемом параметром ID в XML-документ, передаваемый в параметре Document. Если объект документа не был создан, то он создается автоматически. Если документ не имеет корневого узла, он будет создан автоматически.
           
    set LDataSet = CreateDataSet("TSecurityAccount")
    
    LDataSet.AddQueryItem qpWhat, "ID"
    
    set LDocument = CreateObject("Msxml2.DOMDocument.4.0") 'Не обязательно.
    
    while not LDataSet.Eof
      ExportObject LDocument, LDataSet.Field("ID")
      LDataSet.Next
    wend
    
    LDocument.save "c:\RolesAndUsers.xml"
          
  • Функция callRoutine осуществляет вызов подпрограммы. Параметры будут запрошены у пользователя обычным порядком (с показом формы задания параметров, отработки ее скрипта и т. д.). Имя класса передается в параметре ClassName, имя вызываемой подпрограммы - в параметре RoutineName. Если пользователь разрешил выполнение подпрограммы (либо для выполнения не требовалось разрешения пользователя), функция вернет True, иначе False. Значение, возвращаемое подпрограммой, может быть возвращено через необязательный параметр RetValue. Через значение необязательного параметра ScriptPart можно передать скрипт на языке VBScript, который будет "приклеен" сверху к скрипту формы параметров вызываемой подпрограммы.
  • Функция getOleObject возвращает ссылку на Ole-объект с идентификатором класса, переданном в параметре ClassID. Объект создается на основе библиотеки кода, сохраненной в доступном файле с именем, заданным параметром AccessibleFileName. Регистр символов имени доступного файла важен.
  • Функция getResource возвращает значение ресурсной строки по имени ресурса (элемента перечислимого домена Resource strings или перевода (объекта класса TLanguageTranslation).
           
    MsgBox getResource("rssMyErrorMessage")
          
  • Функция getTempFileName возвращает сгенерированное системой имя временного файла с расширением, переданным в параметре Extension.
  • Функция selectVaue позволяет пользователю выбрать значение на основе ссылочного домена, имя которого передается в параметре ClassDomain. Вызывающая сторона может реализовать интерфейс IContextExpressionInfo, через который передается информация о контексте вызова для интерпретации выражений условий отбора, и передать ссылку на него через параметр ExpressionContext. Выбранное значение передается в обе стороны через параметр Value. Если пользователь подтвердил выбор значения, функция возвращает значение True, и устанавливает значение параметра Value, равное идентификатору выбранного пользователем объекта. Если пользователь отказался от выбора, функция возвращает значение False.
  • Процедура raiseManagedException возбуждает управляемую исключительную ситуацию с сообщением для пользователя, заданным параметром ExceptionMessage.
  • Функция getCRC возвращает шестнадцатиричное представление контрольной суммы переданных в параметре Data данных. Параметр может быть
    • Объектом, реализующим интерфейс IBinaryData
    • Объектом, реализующим интерфейс IStream
    • Объектом, реализующим интерфейс ISequentialStream
    • Объектом, реализующим интерфейс IFile объектной модели FileSystemObject
    • Строкой данных. Строка будет преобразована в байты в соответствии с кодировкой UTF-8.
  • Функция downloadData осуществляет обращение к указанному ресурсу по протоколу http (https), и возвращает ответ сервера в виде объекта, реализующего интерфейс IBinaryData. Параметр Host определяет http-сервер, параметр Url - Url, к которому будет происходить обращение. Параметры UserName и Password определяют имя пользователя и пароль, если http-сервер требует авторизовать пользователя. Параметр NegotiateAuth устанавливает режим аутентификации. (Basic или Negotiate). Параметры PostData, PostContentType и PostDataIsBinary определяют содержимое тела POST-запроса (если не определено, функция отправит GET-запрос). Параметр CanCache позволяет использовать локальный кеш http-ответов. Параметр NewSession требует принудительного создания новой сессии при вызове функции. Параметр TimeOut определяет максимальное время ожидания ответа в секундах.
  • Функция createBinaryData создает пустой объект, реализующий интерфейс IBinaryData.
  • Функция BinaryToBitmap  конвертирует переданный графический файл в формат BMP. Объекты во входном и выходном параметрах должны реализовывать интерфейс IBinaryData.
  • Функция editValues создает и показывает форму редактирования группы значений. Параметр ValuesList содержит идентификатор объекта класса TObjectList. Этот список содержит ссылки на редактируемые значения (объекты класса TTypedValue), и командные кнопки формы (объекты класса TTypedValueButton). Параметр Title определяет заголовок формы, параметр UseTabs определяет, будут ли показаны закладки на форме редактирования. Параметр HideOKButton позволяет скрыть кнопку "OK" на показываемой форме. Параметр ScriptPart определяет скрипт показываемой формы.

           
      LValue1 = executeMethod ("TTypedValue", "CreateStrValue", _
        Array("Value1", "Первый параметр", Null, Null, _
        "TLongString", Null, Null, Null, Null, Null, "Значение по  умолчанию первого параметра"))
      LValue2 = executeMethod ("TTypedValue", "CreateStrValue", _
        Array("Value2", "Второй параметр", Null, Null, _
        "TLongString", Null, Null, Null, Null, Null, "Значение по  умолчанию второго параметра"))
    
      LValues = executeMethod("TObjectList", "CreateFromString", _
        LValue1 & ";" & LValue2)
    
      if editValues(LValues, "Введите два строковых значения, друзья", True, False, "") then
        MsgBox getPropValue("TTypedValue", "StrValue", LValue1) & _
          " " & _
          getPropValue("TTypedValue", "StrValue", LValue2)
      end if
    
      executeMethod "TObject", "Destroy", LValues
      executeMethod "TObject", "Destroy", LValue1
      executeMethod "TObject", "Destroy", LValue2
            

           
      LScriptPart =  "Buttons(""NextButton"").Enabled = ParentForm.NavigatorCanNext" & Chr(10) & _
        "Buttons(""PrevButton"").Enabled = ParentForm.NavigatorCanPrevious"
    
      LValue1 = executeMethod ("TTypedValue", "CreateStrValue", _
        Array("Value1", "Первый параметр", Null, Null, "TLongString", Null, Null, Null, Null, Null, _
        "Значение по  умолчанию первого параметра"))
      LValue2 = executeMethod ("TTypedValue", "CreateStrValue", _
        Array("Value2", "Второй параметр", Null, Null, "TLongString", Null, Null, Null, Null, Null, _
        "Значение по  умолчанию второго параметра"))
    
      LNextButton = executeMethod ("TTypedValueButton", "Create", Array("NextButton", "Вперед!", _
        Null, Null, Null, Null, 0, Null, Null, _
        "ParentForm.NavigatorNext"  & Chr(10) & LScriptPart, enumerationItem("scPublic"), 1, Null))
    
      LPrevButton = executeMethod ("TTypedValueButton", "Create", Array("PrevButton", "Назад!", _
        Null, Null, Null, Null, 1, Null, Null, _
        "ParentForm.NavigatorPrevious" & Chr(10) & LScriptPart, enumerationItem("scPublic"), 1, Null))
    
      LValues = executeMethod("TObjectList", "CreateFromString", _
        LValue1 & ";" & LValue2 & ";" & LNextButton & ";" & LPrevButton)
    
      if editValues(LValues, "Введите два строковых значения, друзья", True, True, LScriptPart) then
        MsgBox getPropValue("TTypedValue", "StrValue", LValue1) & _
          " " & _
          getPropValue("TTypedValue", "StrValue", LValue2)
      end if
    
      executeMethod "TObject", "Destroy", LValues
      executeMethod "TObject", "Destroy", LValue1
      executeMethod "TObject", "Destroy", LValue2
      executeMethod "TObject", "Destroy", LNextButton
      executeMethod "TObject", "Destroy", LPrevButton
            

  • Функции MsgBox и ShowMsgBox (это синонимы одной точки входа) полностью аналогичны функции Basic MsgBox по поведению и набору параметров.
  • Функция buildNamedFile формирует значение типа "Именованный файл" на основе объекта, реализующего интерфейс IBinaryData (параметр Data) и информации об имени и параметрах именованного файла.
  • Процедура parseNamedFile разбирает значение типа "Именованный файл". Выходной параметр FileName будет содержать сохраненное имя файла, выходной параметр Data - объект, реализующего интерфейс IBinaryData и содержащий данные именованного файла.
  • Свойство ContextObject позволяет получить ссылку на этот же самый контекстный объект.
  • Свойство UserName позволяет получить логин текущего пользователя.
  • Свойство NegotiateAuth позволяет получить признак доменной аутентификации пользователя.
  • Свойство Language позволяет получать и устанавливать текущий языковой контекст, в котором будут выполняться обращения к БД. Значение свойства либо пустая строка (используется язык БД по умолчанию), либо имя объекта класса TLanguage
  • Свойство Variable позволяет сохранять и получать произвольные значения, которые могут хранится постоянно (в реестре) или только в текущем сеансе, в зависимости от параметра Persistent.
           
    'сохранить на время текущего сеанса значение в переменную с именем SameVariableName
    Variable("SameVariableName", False) = "Value"
    
    'получить значение переменной с именем SameVariableName хранимой в текущем сеансе
    LValue = Variable("SameVariableName", False)
          
  • Процедура showView осуществляет показ в модальном окне представления с именем ViewName. С помощью параметров DetailPropertyName и Key можно наложить на представление дополнительное условие отбора.

5.9.3.2. Интерфейс IContextDataSet
  IContextDataSet = interface(IDispatch)
    ['{466F3AF7-F899-4BC1-869D-1B17DCB86159}']
    procedure AddQueryItem(Part: TQueryPart; const Name: WideString;
      Value: OleVariant; Special: TQuerySpecial; Context: OleVariant);
    function Eof: WordBool;
    function Field(const Name: WideString): OleVariant;
    function FieldCount: Integer;
    function FieldName(Index: Integer): WideString;
    procedure Next;
  end;

Интерфейс предоставляет возможности формирования и выполнения запросов к базе данных с целью получения свойств объектов определенного класса, предоставляет доступ к объекту набора данных. Работа с объектом, реализующим интерфейс IContextDataSet заключается в формировании структуры набора данных и последующих обращениях к ним.

  • Процедура AddQueryItem добавляет элемент набора данных. Элементы могут добавляться в любом порядке до первого обращения к данным набора. Символические имена всех предопределенных для параметров этого метода констант являются членами интерфейса IConstants.
    • часть запроса определяется параметром Part, который может принимать одно из следующих предопределенных значений:
      Символическое имя Числовое значение Описание
      qpWhat 0
      Добавляет поле (столбец), определяемое параметром Name, к результирующему набору данных. Параметр Value игнорируется.
      qpWhere 1
      Определяет условие, налагаемое на свойства объектов класса, передаваемое остальными параметрами.
      qpOrder 2
      Определяет порядок сортировки записей результирующего набора данных. Параметр Value игнорируется.
      qpGroup 3
      Определяет, что записи результирующего набора данных будут сгруппированы по столбцу, переданному в параметре Name. Параметры Value и Special игнорируются.
    • параметр Name должен быть именем свойства класса, на котором основан набор данных, либо зарезервированным словом "ID" (без кавычек).
    • параметр Value (необязательный) определяет условия отбора, накладываемые на свойство, заданное параметром Name. Имеет смысл только если значение параметра Part равно qpWhere. Условие задается посредством строки, интерпретируемой следующим образом:
      • строка разделяется на части посредством системного разделителя
      • каждая часть интерпретируется самостоятельно, и эти части объединяются логическим "ИЛИ"
      • при интерпретации каждой части проверяются следующие условия:
        *
        проверка значения на непустоту (IS NOT NULL)
        !*
        проверка значения на пустоту (IS NULL)
        начинается с символов
        '<=', '<', '>=', '>'
        проверка соответствующего отношения между значением свойства, переданного параметром Name и оставшейся частью строки
        включает в себя символы '*' и/или '?'
        проверка соответствия значения шаблону, в котором знак '?' соответствует одному любому символу, а знак '*' - любому количеству любых символов
        начинается с символа '!'
        символ '!' означает отрицание условия, переданного оставшейся частью строки
        представляет собой строку в апострофах (одиночных кавычках)
        содержание строки не анализируется по приведенным выше условиям
        любая другая строка
        проверка равенства значения свойства, переданного параметром Name значению, переданному строкой
    • параметр Special (необязательный) обеспечивает дополнительное поведение набора данных (если параметр Special используется, необходимо использовать и параметр Value, можно передавать пустую строку):
      Символическое имя Числовое значение Описание
      qsNone 0
      Параметр не используется. Значение по умолчанию.
      qsDescending 7
      Используется при значении qpOrder параметра Part. В этом случае производится сортировка по убыванию.
      qsCount 8
      Используется при значении qpWhat параметра Part. Определяют тип агрегации по свойству, заданному параметром Name.
      qsSum 9
      qsMin 10
      qsMax 11
      qsAverage 12
      qsFunction 22
      Используется для включения в запрос вызова функции. Используется при значении qpWhat параметра Part.
    • параметр Context (необязательный) определяет дополнительные параметры элемента запроса.
           
    'включить в набор данных свойство Name
    LDataSet.AddQueryItem 0, "Name"
    'включить в набор данных среднее значение цены
    LDataSet.AddQueryItem 0, "Price", "", 12
    'включить в набор данных идентификатор объекта
    LDataSet.AddQueryItem 0, "ID"
    'включить в набор данных вызов функции. В поле IsCompany будет значение True, если объект является организацией
    LDataSet.AddQueryItem 0, "IsCompany", "TObject.IsInstanceOf", 22, Array(getClass("TCompany"))
    'наложить на набор данных условие
    LDataSet.AddQueryItem 1, "Organization", "фирма Елочка"
          
           
    LDataSet.AddQueryItem 0, "Organization"              '(1)
    LDataSet.AddQueryItem 0, "SalesCount", "", "9"       '(2)
    LDataSet.AddQueryItem 1, "SaleDate", ">10.09.2005"   '(3)
    LDataSet.AddQueryItem 2, "Organization"              '(4)
    LDataSet.AddQueryItem 3, "Organization"              '(5)
          
    Производится отбор из класса, описывающего число продаж некоего продукта различными организациями. При этом в набор данных включаются колонки "Organization" (строка 1) и "SalesCount" (строка 2). При этом будет произведена группировка по свойству "Organization" (строка 5) (что гарантирует вхождение каждой организации в результирующий набор данных не более одного раза). Набор данных будет отсортирован по организации (строка 4). При этом в колонке "SalesCount" будет сумма (строка 2) всех продаж, осуществленных каждой организацией после 10.09.2005 (строка 3).
  • Функция FieldCount возвращает количество полей (столбцов) набора данных.
  • Функция FieldName возвращает имя поля (столбца) с номером, переданным в параметре Index.
  • Функция Field возвращает значение, содержащееся в поле с именем или индексом, заданным параметром Name (строкового типа) текущей записи набора данных. При первом обращении к набору данных текущей является первая запись. Если параметр определяет номер, то поиск поля производится по номеру. Если имя, то по имени.
  • Процедура Next осуществляет переход к следующей записи набора данных.
  • Функция Eof возвращает False, если текущая запись набора данных существует; в случаях, если набор данных пустой, или при помощи метода Next достигнут конец набора данных, возвращает True.
           
    If LDataSet.Eof then
      'набор данных пуст. Ничего не отобрано.
    Else
      While Not LDataSet.Eof
        'работа с очередной отобранной записью
        Cells(LRow, 1).Value = LDataSet.Field("Name")
        Cells(LRow, 2).Value = LDataSet.Field("Description")
        Cells(LRow, 2).Value = LDataSet.Field("Count")
        'переход к следующей записи
        LDataSet.Next
        LRow = LRow + 1
      Wend
    End If
          

5.9.3.3. Интерфейс IConstants
  IConstants = interface(IDispatch)
    ['{7E7B2D66-5E7C-496A-AE06-EFC485007500}']
    property qpWhat: Integer;
    property qpWhere: Integer;
    property qpOrder: Integer;
    property qpGroup: Integer;
    property qpHaving: Integer;
    property qsNone: Integer;
    property qsObjectID: Integer;
    property qsParentID: Integer;
    property qsHasChildren: Integer;
    property qsFilterCondition: Integer;
    property qsUplink: Integer;
    property qsRootOnly: Integer;
    property qsDescending: Integer;
    property qsCount: Integer;
    property qsSum: Integer;
    property qsMin: Integer;
    property qsMax: Integer;
    property qsAverage: Integer;
    property qsMasterLink: Integer;
    property qsSelectedOnly: Integer;
  end;

Интерфейс предоставляет символические имена констант, необходимых для работы с объектом, реализующим интерфейс IContextDataSet.

СвойствоЗначение
qpWhat
0
qpWhere
1
qpOrder
2
qpGroup
3
qpHaving
4
qsNone
0
qsObjectID
1
qsParentID
2
qsHasChildren
3
qsFilterCondition
4
qsUplink
5
qsRootOnly
6
qsDescending
7
qsCount
8
qsSum
9
qsMin
10
qsMax
11
qsAverage
12
qsMasterLink
13
qsSelectedOnly
14

5.9.3.4. Интерфейс IFormContext
  IFormContext = interface(IDispatch)
    ['{1944F1C8-CAEA-4CF9-9A4D-CE3423508FF7}']
    function ChangedControl: OleVariant;
    function ControlCount: Integer;
    function ButtonCount: Integer;
    function ID: WideString;
    procedure Cancel;
    function ControlExists(const Name: WideString): WordBool;
    function ChangedControlName: WideString;
    function ParentForm: OleVariant;
    function RoutineID: WideString;
    procedure PreInitControl(const Name: WideString; Value: OleVariant);
    procedure NavigatorNext;
    procedure NavigatorPrevious;
    function NavigatorCanNext: WordBool;
    function NavigatorCanPrevious: WordBool;
    procedure RefreshView(RefreshAll: WordBool);
    function ExpressionContextValue(const Name: WideString): OleVariant; safecall;
    property Controls[Name: OleVariant]: IControl;
    property Buttons[Name: OleVariant]: IButton;
    property Enabled: WordBool;
  end;

Представляет собой модель формы задания параметров. Члены интерфейса доступны для использования в скриптах форм задания параметров.

  • Функция ChangedControl возвращает объект, реализующий интерфейс IControl, соответствующий элементу управления, изменение которого вызвало исполнение скрипта формы параметров. Если выполнение скрипта вызвано инициализацией формы задания параметров, то значение функции - Empty. Пустоту значения можно проверить с помощью функции VBScript IsEmpty.
  • Функция ControlCount возвращает число элементов управления на форме параметров, как видимых так и невидимых.
  • Функция ButtonCount возвращает число командных кнопок на форме параметров, как видимых так и невидимых.
  • Функция ID возвращает значение идентификатора объекта, для которого вызван метод. Для методов класса возвращает пустое значение.
  • Функция ControlExists возвращает True, если элемент управления с именем Name существует на форме, и, соответственно, существует соответствующий параметр.
  • Функция ChangedControlName возвращает имя элемента управления, изменение которого вызвало исполнение скрипта формы параметров. Если выполнение скрипта вызвано инициализацией формы задания параметров, то значение функции - пустая строка.
  • Процедура Cancel прекращет работу формы задания параметров. Форма закрывается, выполнение действия блокируется.
  • Функция ParentForm возвращает ссылку на контекст родительской формы в цепочке вызовов. В контексте первой формы (вызванной с грида немодальной формы) возвращает пустое значение (Empty). Пустоту значения можно проверить с помощью функции VBScript IsEmpty.
  • Функция RoutineID возвращает идентификатор подпрограммы, для которой вызвана форма.
  • Процедура PreInitControl имитирует предварительную инициализацию элемента управления с именем Name значением, переданным в параметре Value. Сам элемент управления при этом будет скрыт, и не будет показан вплоть до следующего вызова формы пользователем.
  • Процедура NavigatorNext выполняет переход к следующему объекту набора данных, для которого показывается форма параметров.
  • Процедура NavigatorPrevious выполняет переход к предыдущему объекту набора данных, для которого показывается форма параметров.
  • Функция NavigatorCanNext возвращает True, если возможен переход к следующему объекту набора данных, для которого показывается форма параметров.
  • Функция NavigatorCanPrevious возвращает True, если возможен переход к предыдущему объекту набора данных, для которого показывается форма параметров.
  • Процедура RefreshView обновляет набор данных, для которого показывается форма параметров. Если значение параметра RefreshAll равно True, то будет обновлен весь набор, если False, то только выделенные записи.
  • Свойство Controls позволяет обращаться к элементам управления на форме задания параметров, их свойствам и методам. Каждый элемент управления реализует интерфейс IControl. В параметре Name (строкового типа)может быть передано как имя элемента управления, так и его индекс (в этом случае индекс должен быть передан как строка). Имена элементов управления на форме параметров соответствуют именам параметров подпрограммы (метода, отчета, etc).
  • Свойство Buttons позволяет обращаться к командным кнопкам на форме задания параметров, их свойствам и методам. Каждая командная кнопка реализует интерфейс IButton. В параметре Name (строкового типа)может быть передано как имя командной кнопки, так и ее индекс (в этом случае индекс должен быть передан как строка).
  • Свойство Enabled позволяет получать и устанавливать доступность кнопки OK на форме задания параметров. Если на форме есть невалидные (имеющие недопустимые значения) элементы управления, значение свойства всегда равно False и устанавливать его в явном виде в True не рекомендуется. Для учета дополнительного условия рекомендуется использовать следующую конструкцию: Enabled = Enabled and (Controls("SalesCount").Value > 10)
  • Функция ExpressionContextValue возвращает значение переменной контекста с именем Name, которая используется для интeрпретации выражений условий отбора на форме.

5.9.3.5. Интерфейс IControl
  IControl = interface(IDispatch)
    ['{0662001F-D3D5-4F28-98AC-9B499F70E856}']
    function Name: WideString;
    procedure SetHint(const Value: WideString);
    procedure RefreshLinkedView;
    property Value: OleVariant;
    property ReadOnly: WordBool;
    property IsValid: WordBool;
    property IsEmpty: WordBool;
  end;

Моделирует элемент управления на форме задания параметров. Позволяет управлять поведением элементов управления на форме.

  • Функция Name возвращает имя элемента управления; имена элементов управления всегда совпадают с именамим соответствующих параметров подпрограммы.
  • Процедура SetHint устанавливает текст всплывающей подсказки элемента управления. Всплывыющая подсказка показывается только если значение элемента управления недопустимо (свойство IsValid равно False).
  • Процедура RefreshLinkedView обновит связанное с элементом управления представление.
  • Свойство Value позволяет получать и устанавливать значение, введенное в элемент управления.
  • Свойство ReadOnly позволяет получать и устанавливать доступность элемента управления для записи; при значении True элемент управления не доступен для записи и отображается неактивным.
  • Свойство IsValid позволяет получать и устанавливать "валидность" элемента управления; по умолчанию валидным элемент управления является в том случае, если введенное в него значение соответствует домену соответствующего параметра подпрограммы с учетом наложенного на него условия отбора.
  • Свойство IsEmpty имеет значение True в случае, если в элемент управления не введено никакого значения (элемент управления пустой), в противном случае имеет значение False.

5.9.3.6. Интерфейс IButton
  IButton = interface(IDispatch)
    ['{1618406F-B9F1-4C5F-BC35-C2A154837CA9}']
    function Name: WideString; safecall;
    procedure Click; safecall;
    property Enabled: WordBool;
  end;

Моделирует командную кнопку на форме задания параметров. Позволяет управлять поведением кнопки на форме.

  • Функция Name возвращает имя кнопки.
  • Процедура Click эмулирует нажатие на кнопку.
  • Свойство Enabled позволяет получать и устанавливать доступность кнопки.

5.9.3.7. Интерфейс IBinaryData
  IBinaryData = interface(IDispatch)
    ['{8A9F7CB3-230A-4048-B938-852CBF6ADB2D}']
    procedure Load(const Src: OleVariant);
    procedure Append(const Src: OleVariant);
    procedure Save(const Dst: OleVariant);
    function Size: Cardinal;
    function ToString(Encoding: WideString): WideString;
    procedure FromString(Data: OleVariant);
    procedure AppendString(Data: OleVariant);
    function ToBase64: WideString;
    procedure FromBase64(Data: OleVariant);

Представляет набор двоичных данных.

  • Процедура Load загружает двоичные данные из переданного источника. Источник может быть
    • Объектом, реализующим интерфейс IStream
    • Объектом, реализующим интерфейс ISequentialStream
    • Строкой, содержащей имя файла
  • Процедура Append добавляет двоичные данные из переданного источника. Источник может быть
    • Объектом, реализующим интерфейс IStream
    • Объектом, реализующим интерфейс ISequentialStream
    • Строкой, содержащей имя файла
  • Процедура Save сохраняет двоичные данные в переданный приемник. Приемник может быть
    • Объектом, реализующим интерфейс IStream
    • Объектом, реализующим интерфейс ISequentialStream
    • Строкой, содержащей имя файла
  • Функция ToString переводит данные в строку. Байты, содержашиеся в объекте, будут рассматриваться как содержащие строку в кодировке, заданной параметром Encoding. По умолчанию используется кодировка UTF-8
  • Процедура FromString загружает данные из строки, переданной в параметре Data, перекодировав ее в кодировку UTF-8
  • Процедура AppendString  добавляет данные из строки, переданной в параметре Data, перекодировав ее в кодировку UTF-8
  • Функция ToBase64 возвращает строку, полученную путем кодирования в формат Base64, данных содержащихся в объекте
  • Процедура FromBase64 загружает данные из строки, переданной в параметре Data, раскодировав ее из формата Base64

5.9.3.8. Интерфейс IContextExpressionInfo
  IContextExpressionInfo = interface(IUnknown)
    ['{C7518427-B515-4EB4-B698-88656E6CBF7C}']
    function Count: Integer;
    function ItemName(Index: Integer): WideString;
    function ItemValue(Index: Integer): OleVariant;
    function ItemDomain(Index: Integer): OleVariant;
  end;

Через реализацию этого интерфейса передаются значения контекстных переменных при обращении к функции selectValueинтерфейса IContext.

  • Функция Count возвращает количество используемых контекстных переменных. Нумерация контекстных переменных начинается с нуля.
  • Функция ItemName возвращает имя контекстной переменной c номером, переданным в параметре Index.
  • Функция ItemValue возвращает значение контекстной переменной c номером, переданным в параметре Index.
  • Функция ItemDomain возвращает имя домена контекстной переменной c номером, переданным в параметре Index.

5.9.3.9. Интерфейс IExceptionHandler
  IExceptionHandler = interface(IDispatch)
    ['{3C3C7202-5ED5-4EB4-9CDD-A929C18CA8BD}']
    procedure HandleException(ContextObject: OleVariant;
      const Message: WideString;
      const ExtentedInfo: WideString);
  end;

Реализовав интерфейс IExceptionHandler разработчик решений может получать уведомления о возникающих при работе исключительных ситуациях. При возникновении исключения объект, реализующий интерфейс, получит текст сообщения об ошибке и расширенную информацию.

Для реализации интерфеса используется библиотека hse.tlb, входящая в состав поставки решения. Перед началом работы с ней, необходимо зарегистрировать ее в операционной системе.

Для установки настроек интерфейса необходимо открыть Системную форму раздела АДМИНИСТРАТОРУ, перейти на вкладку  Настройки и в столбце "Заголовок закладки" установить фильтр "Обработка ошибок".

После этого в качестве значения Идентификатора класса установить "IExceptionHandler" без кавычек.

Для Библиотеки кода указать значение HSE.tlb


5.9.4. Справочник по метаданным

5.9.4.1. Вещественный домен Float (Вещественное)

Используется для репрезентации "вещественного вообще" в функциях библиотеки времени исполнения либо в тех случаях, когда нельзя сделать предположений о физическом смысле хранимого вещественного значения.


5.9.4.2. Домен больших объектов TBinaryData (Двоичные данные)
Тип сохраненных данных - btBinaryData(Двоичные данные).

Используется для описания больших двоичных объектов, содержимое которых никак не интерпретируется системой.


5.9.4.3. Домен больших объектов TComment (Текстовый комментарий)
Тип сохраненных данных - btText (Текст).
При работе с файломи используется расширение имени ".txt".

Используется для хранения текстовых комментариев, описаний произвольной длины. Значение интерпретируется как текст.


5.9.4.4. Домен больших объектов TExcelTemplateData (Данные Excel-шаблона)
Тип сохраненных данных - btBinaryData (Двоичные данные). При работе с файломи используется расширение имени " .xls ".

Используется для хранения в базе рабочих книг Microsoft Excel, например, шаблонов отчетов Excel

Тип сохраненных данных - btBinaryData (Двоичные данные).
При работе с файломи используется расширение имени ".xls".

5.9.4.5. Домен больших объектов TFileContent (Содержимое файлов)
Тип сохраненных данных - btBinaryData (Двоичные данные).

Используется для хранения содержимого доступного файла.


5.9.4.6. Домен больших объектов TFilterCondition (Условие отбора)
Тип сохраненных данных - btSourceCode (Исходный код).

Содержит выражение на языке PascalScript, определяющее условие отбора.

Тип сохраненных данных - btSourceCode (Исходный код).

5.9.4.7. Домен больших объектов TImage (Изображение)
Тип сохраненных данных - btImage (Изображение). При работе с файломи используется расширение имени " .bmp ".

Используется для хранения изображений-иконок визуальных элементов системы.

Тип сохраненных данных - btImage (Изображение).
При работе с файломи используется расширение имени ".bmp".

5.9.4.8. Домен больших объектов TInlineExpressionText (Текст выражения)
Тип сохраненных данных - btSourceCode (Исходный код).

Содержит выражение на языке PascalScript, определяющее логику работы встраиваемого выражения.


5.9.4.9. Домен больших объектов TMethodBody (Исходные тексты методов)
Тип сохраненных данных - btSourceCode (Исходный код).

Содержит исходный текст метода на языке PascalScript.

Тип сохраненных данных - btSourceCode (Исходный код).

5.9.4.10. Домен больших объектов TRoutineScript (Скрипты форм параметров)
Тип сохраненных данных - btText (Текст).

Содержит скрипт формы задания параметров на языке VBScript.

Тип сохраненных данных - btVisualBasicScript (Скрипт Visual Basic).
При работе с файломи используется расширение имени ".vbs".

5.9.4.11. Домен больших объектов TWordTemplateData (Данные Word-шаблона)
Тип сохраненных данных - btBinaryData (Двоичные данные). При работе с файломи используется расширение имени " .doc ".

Используется для хранения в базе документов Microsoft Word, например, шаблонов отчетов Word

Тип сохраненных данных - btBinaryData (Двоичные данные).
При работе с файломи используется расширение имени ".doc".

5.9.4.12. Домен больших объектов TXSLTTemplateData (Данные XSLT-шаблона)
Тип сохраненных данных - btXML (XML-документ). При работе с файлами используется расширение имени " .xsl ".

Используется для хранения в базе данных скриптов xslt-преобразований, например, шаблонов отчетов XSLT.

Тип сохраненных данных - btXML (XML-документ).
При работе с файломи используется расширение имени " .xsl ".

5.9.4.13. Домен времени TTime (Время)

Используется для репрезентации "времени вообще" в функциях библиотеки времени исполнения либо в тех случаях, когда нельзя сделать предположений о физическом смысле хранимого значения времени.


5.9.4.14. Домен дат TDate (Дата)

Используется для репрезентации "даты вообще" в функциях библиотеки времени исполнения либо в тех случаях, когда нельзя сделать предположений о физическом смысле хранимой даты.


5.9.4.15. Домен дат со временем TimeStamp (Момент)

Используется для репрезентации "даты со временем вообще" в функциях библиотеки времени исполнения, либо в тех случаях, когда нельзя сделать предположений о физическом смысле хранимой даты со временем.

>

5.9.4.16. Домен дат со временем TimeStamp required (Момент (обязательный))
Значение обязательно для заполнения.

Используется для репрезентации "даты со временем вообще" в функциях библиотеки времени исполнения, либо в тех случаях, когда нельзя сделать предположений о физическом смысле хранимой даты со временем.


5.9.4.17. Домен ссылок на объекты TAccessor domain (Роли доступа)
Ссылка на класс TSecurityAccount (Роли безопасности) . Используется для обозначения роли безопасности, используемой при создании объектов для обеспечения защиты данных в соответствии с правами пользователя.

Ссылка на класс TSecurityAccount (Роли безопасности).

5.9.4.18. Домен ссылок на объекты TActionRoutine required domain (Метод действия)
Значение обязательно для заполнения.
Ссылка на класс TRoutine (Подпрограмма).
При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен используется для отбора подпрограмм, по которым можно построить программируемое действие. Домен отбирает только те подпрограммы, которые принадлежат к классу, на котором основано представление, в которое включается (включено) действие, к его предкам и его потомкам в иерархии наследования. Доступ к потомкам необходим, чтобы обеспечить возможность создания объектов конечных неабстрактных бизнес-классов из представления, обеспечивающего доступ к объектам абстрактного класса.

Использование этого домена в прикладных решениях запрещено.


5.9.4.19. Домен ссылок на объекты TBanGroup domain (Группа запретов)
Значение обязательно для заполнения.
Ссылка на класс TBanGroup (Группы запретов).
При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен используется дочерними классами групп запретов.


5.9.4.20. Домен ссылок на объекты TBannedProperty domain (Свойство для запрета)
Значение обязательно для заполнения.
Ссылка на класс TProperty (Свойства).
При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен отбирает свойства класса, по которому строится запрет на свойство, либо его предков.

Использование этого домена в прикладных решениях запрещено.


5.9.4.21. Домен ссылок на объекты TBannedRoutine domain (Подпрограмма для запрета)
Значение обязательно для заполнения. Ссылка на класс TRoutine (Подпрограмма) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен отбирает подпрограммы класса, по которому строится запрет на свойство, либо его предков.

Использование этого домена в прикладных решениях запрещено.

Значение обязательно для заполнения.
Ссылка на класс TRoutine (Подпрограмма).
При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Объекты отбираются по следующему условию:

BannedClass.HasAsParent(Self.Master)
  


5.9.4.22. Домен ссылок на объекты TButtonParameter domain (Параметр командной кнопки)

5.9.4.23. Домен ссылок на объекты TClass domain (Класс)
Ссылка на класс TClass (Классы) .

Используется для задания необязательной ссылки на класс.


5.9.4.24. Домен ссылок на объекты TClass required cascade domain (Класс (с каскадным удалением))
Значение обязательно для заполнения. Ссылка на класс TClass (Классы) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Используется для задания обязательной каскадной ссылки на класс в объектах-запрещениях. Удаление классов должно приводить к удалению связанных с ними запрещений.


5.9.4.25. Домен ссылок на объекты TClass required domain (Класс (обязательно))
Значение обязательно для заполнения. Ссылка на класс TClass (Классы) .

Используется для задания обязательной ссылки на класс.


5.9.4.26. Домен ссылок на объекты TCodeLibrary domain (Библиотека кода)
Ссылка на класс TAccessibleFile (Доступный файл) . При удалении объекта-источника ссылки значение ссылки очищается.

Используется для организации связи между методом Ole-объекта и доступным файлом, содержащим реализацию метода.

Использование этого домена в прикладных решениях запрещено.


5.9.4.27. Домен ссылок на объекты TColorProperty domain (Домен свойства цвета)
Ссылка на класс TProperty (Свойства) . При удалении объекта-источника ссылки значение ссылки очищается.

Домен отбирает свойства класса, на котором основано представление, или его предков, имеющие тип Цвет строки таблицы.

При необходимости цветовой индикации состояний объектов в таблицах данных, необходимо объявить свойство соответствующего типа и указать его в представлении.

Использование этого домена в прикладных решениях запрещено.


5.9.4.28. Домен ссылок на объекты TColumnProperty domain (Свойство колонки)
Ссылка на класс TProperty (Свойства) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен отбирает свойства класса, на котором основано представление, или его предков.

При необходимости цветовой индикации состояний объектов в таблицах данных, необходимо объявить свойство соответствующего типа и указать его в представлении.

Использование этого домена в прикладных решениях запрещено.


5.9.4.29. Домен ссылок на объекты TDetailProperty domain (Свойство-подчиненное)
Ссылка на класс TProperty (Свойства) . При удалении объекта-источника ссылки значение ссылки очищается.

Домен отбирает свойства класса, на котором основано представление, или его предков для организации связи между представлениями.

Использование этого домена в прикладных решениях запрещено.


5.9.4.30. Домен ссылок на объекты TDomain domain (Домен)
Ссылка на класс TDomain (Домены) .

Используется для задания необязательной ссылки на домен.


5.9.4.31. Домен ссылок на объекты TDomain required domain (Домен (обязательно))
Значение обязательно для заполнения. Ссылка на класс TDomain (Домены) .

Используется для задания обязательной ссылки на домен.


5.9.4.32. Домен ссылок на объекты TForm required domain (Форма (обязательно))
Значение обязательно для заполнения. Ссылка на класс TForm (Формы) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Используется для задания обязательной ссылки на форму.


5.9.4.33. Домен ссылок на объекты TFormView domain (Представления форм)
Ссылка на класс TFormView (Представления формы) . При удалении объекта-источника ссылки значение ссылки очищается.

Используется для задания ссылки на представление формы.

Использование этого домена в прикладных решениях не рекомендуется.


5.9.4.34. Домен ссылок на объекты TInitializationMember domain (Член класса для инициализации)
Ссылка на класс TClassMember (Члены класса) .

Домен отбирает члены класса, которые

  • либо являются свойствами того же класса, которому принадлежит родительский метод параметра, либо его предков, домен которых совпадает по классу с доменом параметра
  • либо являются функциями того же класса, которому принадлежит родительский метод параметра, либо его предков, домен результата которых совпадает по классу с доменом параметра

Использование этого домена в прикладных решениях запрещено.


5.9.4.35. Домен ссылок на объекты TList domain (Список объектов)
Ссылка на класс TObjectList (Списки) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Используется для задания каскадной ссылки на список объектов. Списки могут использоваться в тех случаях, в которых необходимо передавать набор объектов.


5.9.4.36. Домен ссылок на объекты TMaster domain (Объект (с каскадным удалением))
Значение обязательно для заполнения. Ссылка на класс TObject (Объекты) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен отбирает объекты, которые принадлежат к тому классу, который объявлен классом-мастером класса объекта.

Использование этого домена в прикладных решениях запрещено.

Этот домен используется в объявлении свойства TObject.Master, поэтому значение его сделано обязательным: в тех случаях, когда cвойство TObject.Master (Мастер) имеет смысл (для объектов, инкапсулированных в другие объекты), значение свойства обязательно.


5.9.4.37. Домен ссылок на объекты TMaster field domain (Домен поля "Мастер")
Ссылка на класс TObject (Объекты) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен отбирает объекты, которые принадлежат к тому классу, который объявлен классом-мастером класса объекта.

Использование этого домена в прикладных решениях запрещено.

Этот домен используется в объявлении поля TObject.FMaster (Мастер), поэтому значение его сделано необязательным: объектах, не инкапсулированных в другие классы значение поля обязано оставаться пустым.


5.9.4.38. Домен ссылок на объекты TMasterProperty domain (Свойство-главное)
Ссылка на класс TProperty (Свойства) . При удалении объекта-источника ссылки значение ссылки очищается.

Домен отбирает свойства класса, на котором основано родительское в форме представление, или его предков для организации связи между представлениями.

Использование этого домена в прикладных решениях запрещено.


5.9.4.39. Домен ссылок на объекты TMergedObject domain (Объект для отождествления)
Значение обязательно для заполнения. Ссылка на класс TObject (Объекты) .

Объект отбирает объекты, включенные в тот же объект, что и текущий (либо они оба не включены ни в какой), и класс которых совпадает либо является родителем класса текущего объекта.

Использование этого домена в прикладных решениях запрещено.


5.9.4.40. Домен ссылок на объекты TObject domain (Объект)
Ссылка на класс TObject (Объекты) .

Домен определяет необязательную ссылку на объект системы. Используется там, где нельзя сделать предположения о классе передаваемого объекта.


5.9.4.41. Домен ссылок на объекты TOption required domain (Настройка (обязательно))
Значение обязательно для заполнения. Ссылка на класс TOption (Настройки) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен определяет обязательную ссылку на настройку системы и используется значениями настроек.

Использование этого домена в прикладных решениях запрещено.


5.9.4.42. Домен ссылок на объекты TOptionValue domain (Значение настройки)
Ссылка на класс TOptionValue (Значения настроек) .

Домен определяет ссылку на значение настройки системы.


5.9.4.43. Домен ссылок на объекты TParent domain (Родитель объекта)
Ссылка на класс TObject (Объекты) .

Домен отбирает объекты, которые могуть быть родителем объекта в иерархии.

Использование этого домена в прикладных решениях запрещено. Там, где это необходимо, используйте специализированные домены.


5.9.4.44. Домен ссылок на объекты TReadMember domain (Член класса для чтения)
Ссылка на класс TClassMember (Члены класса) .

Домен отбирает члены класса, которые

  • либо являются полями того же класса, которому принадлежит свойство, либо того, ссылкой на который является родительское свойство, либо его предков, домен которых совпадает по классу с доменом свойства
  • либо являются функциями того же класса, которому принадлежит свойство, либо того, ссылкой на который является родительское свойство, либо его предков, домен результата которых совпадает по классу с доменом свойства
  • либо являются встраиваемыми выражениями того же класса, которому принадлежит свойство, либо того, ссылкой на который является родительское свойство, либо его предков, домен результата которых совпадает по классу с доменом свойства

Использование этого домена в прикладных решениях запрещено.


5.9.4.45. Домен ссылок на объекты TSecurityAccount domain (Роль безопасности)
Ссылка на класс TSecurityAccount (Роли безопасности) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Используется для задания необязательной каскадной ссылки на роль безопасности.


5.9.4.46. Домен ссылок на объекты TSecurityAccount required domain (Роль безопасности (обязательно))
Значение обязательно для заполнения. Ссылка на класс TSecurityAccount (Роли безопасности) .

Используется для задания обязательной ссылки на роль безопасности.


5.9.4.47. Домен ссылок на объекты TSourceDataBase required domain (База данных)
Значение обязательно для заполнения. Ссылка на класс TDataBase (Базы данных) .

Домен используется для организации ссылки на логическую базу данных Системы.

Использование этого домена в прикладных решениях запрещено.


5.9.4.48. Домен ссылок на объекты TUser domain (Пользователь)
Ссылка на класс TUser (Пользователи) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Используется для задания необязательной каскадной ссылки на пользователя Системы.


5.9.4.49. Домен ссылок на объекты TUser required domain (Пользователь)
Значение обязательно для заполнения. Ссылка на класс TUser (Пользователи) .

Используется для задания обязательной ссылки на пользователя.


5.9.4.50. Домен ссылок на объекты TView of ClassDomain domain (Представление)
Ссылка на класс TView (Представления) .

Домен отбирает те представления, которые основаны на классе, на который указывает ссылочный домен, либо на его предков.

Использование этого домена в прикладных решениях запрещено.


5.9.4.51. Домен ссылок на объекты TView of FormView domain (Представление для формы)
Значение обязательно для заполнения. Ссылка на класс TView (Представления) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Домен используется для постороения иерархии представлений форм и действий, основанных на представлении.

Использование этого домена в прикладных решениях запрещено.


5.9.4.52. Домен ссылок на объекты TVisualGroup required domain (Визуальная группа (обязательно))
Значение обязательно для заполнения. Ссылка на класс TVisualGroup (Визуальные группы) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Используется для задания обязательной ссылки на визуальную группу.


5.9.4.53. Домен ссылок на объекты TVisualGroup routine domain (Подпрограмма визуальной группы)
Значение обязательно для заполнения. Ссылка на класс TRoutine (Подпрограмма) . При удалении объекта-источника ссылки ссылающиеся на него объекты также удаляются.

Отбирает подпрограммы, являющиеся методами класса, для использования в элементах визуальных групп.

Использование этого домена в прикладных решениях запрещено.


5.9.4.54. Домен ссылок на объекты TWriteMember domain (Член класса для записи)
Ссылка на класс TClassMember (Члены класса) .

Домен отбирает члены класса, которые

  • либо являются полями того же класса, которому принадлежит свойство, либо того, ссылкой на который является родительское свойство, либо его предков, домен которых совпадает по классу с доменом свойства
  • либо являются процедурами с одним параметром того же класса, которому принадлежит свойство, либо того, ссылкой на который является родительское свойство, либо его предков, домен результата которых совпадает по классу с доменом свойства

Использование этого домена в прикладных решениях запрещено.


5.9.4.55. Класс TAccessItem (Элементы доступа)

5.9.4.55.1. Конструктор TAccessItem.Create (Конструктор элемента доступа)

5.9.4.55.2. Поле TAccessItem.FSecurityAccount (Роль безопасности)

5.9.4.55.3. Свойство TAccessItem.Description (Наименование)

5.9.4.55.4. Свойство TAccessItem.Name (Имя)

5.9.4.55.5. Свойство TAccessItem.SecurityAccount (Роль безопасности)

5.9.4.55.6. Функция TAccessItem.GetIsAccessible (Проверка доступности)

5.9.4.56. Класс TAccessibleFile (Доступный файл)
Унаследован от класса TObject (Объекты).

Класс предназначен для хранения (двоичных) именованных (cвойство TObject.Name (Имя)) файлов внутри Системы. Содержимое этих файлов используется Системой в качестве источника статичных данных (картинок, стилевых таблиц, скриптовых библиотек, etc), доступных по протоколу http внутри отчета XSLT и для хранения библиотек кода, содержащих логику работы методов Ole-объекта. Разработчик решения вправе распорядится доступными файлами по своему усмотрению.


5.9.4.56.1. Конструктор TAccessibleFile.Create (Конструктор доступного файла)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

FileData (Данные файла)

Доступен

Конструирует объект класса TAccessibleFile (Доступный файл) .


5.9.4.56.2. Поле TAccessibleFile.FFileData (Данные файла)
FFileData: TFileContent (Содержимое файлов).

Используется для хранения значений свойства TAccessibleFile.FileData (Данные файла).


5.9.4.56.3. Свойство TAccessibleFile.FileData (Данные файла)
FileData : TFileContent (Содержимое файлов) .

Для чтения и записи свойства используется поле TAccessibleFile.FFileData (Данные файла) .

Это свойство определяет содержимое доступного файла.


5.9.4.57. Класс TAction (Действия)
Унаследован от класса TObject (Объекты) . Объекты класса связаны иерархически. Объекты класса являются составными частями объектов класса TView (Представления) .

Объекты класса моделируют элементы контектсного меню представления. Иерархия элементов контектсного меню отображается на иерахию объектов класса.

Сам по себе объект класса TAction определяет положение и поведение соответствующего пункта контекстного меню, кроме ассоциированного с пуктом действия. Для спецификации этого действия существуют классы-наследники TAction: класс TRoutineAction (Программируемое действие) и класс TViewAction (Действие-представление). Таким образом, объекты собственно класса TAction создаются на месте родительских пунктов контекстного меню, раскрывающихся, содержащих Стрелка раскрытия контекстного меню. Несмотря на то, что класс не является абстратным в строгом смылсле этого слова, ни одного объекта этого класса в системных метаданных нет в силу простоты структуры контекстного меню системных представлений. Разработчик решений не ограничен в создании и использовании объектов этого класса. Никаких общих рекомендаций тут быть не может, единственное, что можно утверждать - что контекстное меню должно быть удобным и в достижении этой цели можно организовывать требуемую иерархическую структуру.

        Иерархия объектов класса TAction
На основе иерархии действий, показанной на рисунке (в таблице отображен фактический класс каждого объекта) построено следующее контекстное меню:
Контекстное меню, построенное на основе иерархии объектов класса TAction

5.9.4.57.1. Конструктор TAction.Create (Конструктор действия)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Position (Позиция)

Доступен
Shortcut (Горячая клавиша)

Доступен

Separated (Отделено)

Доступен

Default (По умолчанию)

Доступен

Конструирует объект класса TAction (Действия) .


5.9.4.57.2. Поле TAction.FDefault (По умолчанию)
FDefault : Boolean (Обычное логическое) (обязательно для заполнения).

Используется для хранения значений свойства TAction.Default (По умолчанию).


5.9.4.57.3. Поле TAction.FPosition (Позиция)
FPosition : TPosition (Позиция) (обязательно для заполнения) .

Используется для хранения значений свойства TAction.Position (Позиция).


5.9.4.57.4. Поле TAction.FSeparated (Отделено)
FSeparated : Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TAction.Separated (Отделено).


5.9.4.57.5. Поле TAction.FShortcut (Горячая клавиша)
FShortcut : TShortcut (Горячие клавиши) .

Используется для хранения значений свойства TAction.Shortcut (Горячая клавиша).


5.9.4.57.6. Свойство TAction.Default (По умолчанию)
Default : Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TAction.FDefault (По умолчанию) .

Действие с установленным значением этого свойства будет отображаться в контекстном меню жирным шрифтом и вызываться при двойном щелчке мышью по соответствующей таблице данных.

        Действие по умолчанию

5.9.4.57.7. Свойство TAction.Position (Позиция)
Position : TPosition (Позиция) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TAction.FPosition (Позиция) .

Действия сортируются в пределах уровня для построения контекстного меню в порядке возрастания этого своства.


5.9.4.57.8. Свойство TAction.Separated (Отделено)
Separated : Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TAction.FSeparated (Отделено) .

После пункта меню, соответствующего действию с установленным свойством, будет отображен разделитель. Если пункт меню - последний, то разделитель не будет отображен.

        Разделитель в контектстном меню

5.9.4.57.9. Свойство TAction.Shortcut (Горячая клавиша)
Shortcut : TShortcut (Горячие клавиши) .

Для чтения и записи свойства используется поле TAction.FShortcut (Горячая клавиша) .

Горячая клавиша определяет связь между нажатием сочетания клавиш на клавиатуре и действием, ассоциированным с пунктом меню. Тест, описывающий горячую клавишу, располагается справа в контекстном меню для тех действий, для которых горячая клавиша назначена.


5.9.4.57.10. Функция TAction.GetNextPos (Следующая позиция)
Является методом класса.

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Master (Мастер)

Доступен
Parent (Родитель)

Доступен

Возвращает значение типа Integer (Целое).

Используется для инициализации значения параметра Position (Позиция) метода TAction.Create (Конструктор действия). Вычисляет следующую позицию добавляемого действия.


5.9.4.58. Класс TBanGroup (Группы запретов)
Унаследован от класса TObject (Объекты) . Объекты могут включать в себя объекты классов:

Объекты класса определяют группы запретов. Запреты на классы, свойства и подпрограммы объединяются разработчиком в функциональные группы, являющиеся группами запретов. В дальнейшем эти группы ассоциируются с конкретными ролями безопасности.


5.9.4.58.1. Конструктор TBanGroup.Create (Конструктор группы запретов)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Конструирует объект класса TBanGroup (Группы запретов) .


5.9.4.58.2. Свойство TBanGroup.IsAccessible (Доступна)
IsAccessible : Boolean (Обычное логическое) (обязательно для заполнения).

Для чтения значения свойства используется функция TBanGroup.GetIsAccessible (Доступна) . Свойство доступно только для чтения.

Свойство определяет, ассоциирована ли группа запретов с текущим пользователем, напрямую или через вхождение пользователя в роль.


5.9.4.58.3. Функция TBanGroup.GetIsAccessible (Доступна)

Возвращает значение типа Boolean (Обычное логическое) .

Используется для вычисления значений свойства TBanGroup.IsAccessible (Доступна).


5.9.4.59. Класс TBanGroupAccess (Доступ к группам запретов)
Унаследован от класса TObject (Объекты) . Объекты класса являются составными частями объектов класса TBanGroup (Группы запретов) .

Объекты класса определяют связь между родительской группой запретов и ролью безопасности.

Имя и наименование объекта полностью определяются другими свойствами, и запрещены для изменения.


5.9.4.59.1. Конструктор TBanGroupAccess.Create (Конструктор доступа к группе запретов)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)

Скрыт

Description (Наименование)

Скрыт

Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Группа запретов)

Доступен
Accessor (Роль доступа)
Скрыт

SecurityAccount (Роль безопасности)

Доступен

SecurityAccount (Роль безопасности) Lost reference:DATAMILL.BFEFB58258564ACD8DACFB26F878BE12->2989D602379B44E786AFC8D97F4B5F28(cсылка потеряна)

Конструирует объект класса TBanGroupAccess (Доступ к группам запретов) .


5.9.4.60. Класс TBanGroupItem (Элементы группы запретов)
Унаследован от класса TObject (Объекты) . Объекты класса являются составными частями объектов класса TBanGroup (Группы запретов) .


5.9.4.60.1. Конструктор TBanGroupItem.Create (Конструктор элемента группы запретов)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)

Скрыт

Description (Наименование)

Скрыт

Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Конструирует объект класса TBanGroupItem (Элементы группы запретов) .


5.9.4.61. Класс TBlobDomain (Большие объекты)
Унаследован от класса TDomain (Домены) .


5.9.4.61.1. Конструктор TBlobDomain.Create (Конструктор домена больших объектов)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

BlobSubtype (Подтип)

Доступен

Extension (Расширение)

Доступен

Конструирует объект класса TBlobDomain (Большие объекты) .


5.9.4.61.2. Поле TBlobDomain.FBlobSubtype (Подтип)
FBlobSubtype: TBlobSubtype (Подтип) (обязательно для заполнения) .

Используется для хранения значений свойства TBlobDomain.BlobSubtype (Подтип)
.


5.9.4.61.3. Поле TBlobDomain.FExtension (Расширение имени)
FExtension: TFileExtension (Расширение имени файла) .

Используется для хранения значений свойства TBlobDomain.Extension (Расширение)
.


5.9.4.61.4. Свойство TBlobDomain.BlobSubtype (Подтип)
BlobSubtype: TBlobSubtype (Подтип) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TBlobDomain.FBlobSubtype (Подтип) .


5.9.4.61.5. Свойство TBlobDomain.Extension (Расширение)
Extension: TFileExtension (Расширение имени файла) .

Для чтения и записи свойства используется поле TBlobDomain.FExtension (Расширение имени) .


5.9.4.62. Класс TBooleanDomain (Логические)
Унаследован от класса TDomain (Домены) .


5.9.4.62.1. Конструктор TBooleanDomain.Create (Конструктор логического домена)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

TrueValue (Значение "Истина")

Доступен

FalseValue (Значение "Ложь")

Доступен

Конструирует объект класса TBooleanDomain (Логические) .


5.9.4.62.2. Поле TBooleanDomain.FFalseValue (Значение "Ложь")
FFalseValue: TObjectName (Имена) (обязательно для заполнения) .

Используется для хранения значений свойства TBooleanDomain.FalseValue (Значение "Ложь")
.


5.9.4.62.3. Поле TBooleanDomain.FTrueValue (Значение "Истина")
FTrueValue: TObjectName (Имена) (обязательно для заполнения) .

Используется для хранения значений свойства TBooleanDomain.TrueValue (Значение "Истина")
.


5.9.4.62.4. Свойство TBooleanDomain.FalseValue (Значение "Ложь")
FalseValue: TObjectName (Имена) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TBooleanDomain.FFalseValue (Значение "Ложь") .


5.9.4.62.5. Свойство TBooleanDomain.TrueValue (Значение "Истина")
TrueValue: TObjectName (Имена) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TBooleanDomain.FTrueValue (Значение "Истина") .


5.9.4.63. Класс TClass (Классы)

5.9.4.63.1. Конструктор TClass.Create (Конструктор класса)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

IsHierarhical (Является иерархическим)

Доступен

MasterClass (Класс-мастер)

Доступен

ReplicationStatus (Статус репликации)

Доступен

SecurityModel (Модель безопасности)

Доступен

UnNamed (Неименованный)

Доступен

NameExpression (Выражение имени объекта)

Доступен

DescriptionExpression (Выражение наименования объекта)

Доступен

CreateConstructor (Создать конструктор)

Доступен

Конструирует объект класса TClass (Классы) .


5.9.4.63.2. Поле TClass.FDescriptionExpression (Выражение наименования объекта)
FDescriptionExpression: TInlineExpressionText (Текст выражения) .

Используется для хранения значений свойства TClass.DescriptionExpression (Выражение наименования объекта)
.


5.9.4.63.3. Поле TClass.FIsHierarhical (Является иерархическим)
FIsHierarhical: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TClass.IsHierarhical (Является иерархическим)
.


5.9.4.63.4. Поле TClass.FMasterClass (Класс-мастер)

5.9.4.63.5. Поле TClass.FNameExpression (Выражение имени объекта)
FNameExpression: TInlineExpressionText (Текст выражения) .

Используется для хранения значений свойства TClass.NameExpression (Выражение имени объекта)
.


5.9.4.63.6. Поле TClass.FReplicationStatus (Статус репликации)

5.9.4.63.7. Поле TClass.FSecurityModel (Модель безопасности)
FSecurityModel: TSecurityModel (Модели безопасности) (обязательно для заполнения) .

Используется для хранения значений свойства TClass.SecurityModel (Модель безопасности)
.


5.9.4.63.8. Поле TClass.FUnNamed (Неименованный)
FUnNamed: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TClass.UnNamed (Неименованный)
.


5.9.4.63.9. Процедура TClass.GenerateConstructor (Сгенерировать текст конструктора)


5.9.4.63.10. Свойство TClass.DescriptionExpression (Выражение наименования объекта)
DescriptionExpression: TInlineExpressionText (Текст выражения) .

Для чтения и записи свойства используется поле TClass.FDescriptionExpression (Выражение наименования объекта) .


5.9.4.63.11. Свойство TClass.IsHierarhical (Является иерархическим)
IsHierarhical: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения значения свойства используется поле TClass.FIsHierarhical (Является иерархическим) .


5.9.4.63.12. Свойство TClass.MasterClass (Класс-мастер)
MasterClass: TClass domain (Класс) .

Для чтения значения свойства используется поле TClass.FMasterClass (Класс-мастер) .


5.9.4.63.13. Свойство TClass.NameExpression (Выражение имени объекта)
NameExpression: TInlineExpressionText (Текст выражения) .

Для чтения и записи свойства используется поле TClass.FNameExpression (Выражение имени объекта) .


5.9.4.63.14. Свойство TClass.ReplicationStatus (Статус репликации)
ReplicationStatus: TReplicationStatus (Статус репликации) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TClass.FReplicationStatus (Статус репликации) .


5.9.4.63.15. Свойство TClass.SecurityModel (Модель безопасности)
SecurityModel: TSecurityModel (Модели безопасности) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TClass.FSecurityModel (Модель безопасности) .


5.9.4.63.16. Свойство TClass.UnNamed (Неименованный)
UnNamed: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TClass.FUnNamed (Неименованный) .


5.9.4.63.17. Функция TClass.ListProperties (Список видимых свойств)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Scope (Область видимости)

Доступен

Возвращает значение типа TList domain (Список объектов) .

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Scope (Область видимости)

Доступен


5.9.4.63.18. Функция TClass.ListRoutines (Список видимых подпрограмм)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Scope (Область видимости)

Доступен

Возвращает значение типа TList domain (Список объектов) .

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Scope (Область видимости)

Доступен


5.9.4.63.19. Шаблон отчета XSLT TClass.ClassesDiagram (Диаграмма классов)
Является методом класса.

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
ShowFields (Показывать поля)

Доступен

ShowMethods (Показывать методы)

Доступен

ShowProperties (Показывать свойства)

Доступен

ShowParameters (Показывать параметры)

Доступен

ShowMetadata (Показывать метаданные)

Доступен

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
ShowFields (Показывать поля)

Доступен

ShowMethods (Показывать методы)

Доступен

ShowProperties (Показывать свойства)

Доступен

ShowParameters (Показывать параметры)

Доступен

ShowMetadata (Показывать метаданные)

Доступен


5.9.4.64. Класс TClassBan (Запрет на класс)
Унаследован от класса TBanGroupItem (Элементы группы запретов) . Объекты класса являются составными частями объектов класса TBanGroup (Группы запретов) .


5.9.4.64.1. Конструктор TClassBan.Create (Конструктор запрета на класс)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Скрыт

Description (Наименование)
Скрыт

Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

BannedClass (Запрещаемый класс)

Доступен

Конструирует объект класса TClassBan (Запрет на класс) .


5.9.4.64.2. Поле TClassBan.FBannedClass (Запрещенный класс)
FBannedClass: TClass required cascade domain (Класс (с каскадным удалением)) (обязательно для заполнения) .

Используется для хранения значений свойства TClassBan.BannedClass (Запрещаемый класс)
.


5.9.4.64.3. Свойство TClassBan.BannedClass (Запрещаемый класс)
BannedClass: TClass required cascade domain (Класс (с каскадным удалением)) (обязательно для заполнения) .

Для чтения значения свойства используется поле TClassBan.FBannedClass (Запрещенный класс) .


5.9.4.65. Класс TClassDomain (Ссылки на объекты)
Унаследован от класса TDomain (Домены) .


5.9.4.65.1. Конструктор TClassDomain.Create (Конструктор домена-ссылки)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

ClassOfDomain (Класс домена)

Доступен

View (Представление для выбора)

Доступен

FilterCondition (Условие отбора)

Доступен

ShowObjectInfoType (Тип представления объектов)

Доступен

DeleteRule (Правило удаления)

Доступен

Конструирует объект класса TClassDomain (Ссылки на объекты) .


5.9.4.65.2. Поле TClassDomain.FClass (Класс)
FClass: TClass required domain (Класс (обязательно)) (обязательно для заполнения) .

Используется для хранения значений свойства TClassDomain.ClassOfDomain (Класс домена)
.


5.9.4.65.3. Поле TClassDomain.FDeleteRule (Правило удаления)
FDeleteRule: TDeleteRule (Правило удаления) (обязательно для заполнения) .

Используется для хранения значений свойства TClassDomain.DeleteRule (Правило удаления)
.


5.9.4.65.4. Поле TClassDomain.FFilterCondition (Условие отбора)
FFilterCondition: TFilterCondition (Условие отбора) .

Используется для хранения значений свойства TClassDomain.FilterCondition (Условие отбора)
.


5.9.4.65.5. Поле TClassDomain.FShowObjectInfoType (Тип представления объектов)
FShowObjectInfoType: TShowObjectInfoType (Тип представления объектов) (обязательно для заполнения) .

Используется для хранения значений свойства TClassDomain.ShowObjectInfoType (Тип представления объектов)
.


5.9.4.65.6. Поле TClassDomain.FView (Представление)
FView: TView of ClassDomain domain (Представление) .

Используется для хранения значений свойства TClassDomain.View (Представление)
.


5.9.4.65.7. Свойство TClassDomain.ClassOfDomain (Класс домена)
ClassOfDomain: TClass domain (Класс) .

Для чтения и записи свойства используется поле TClassDomain.FClass (Класс) .


5.9.4.65.8. Свойство TClassDomain.ClassReplicationStatus (Статус репликации класса)

5.9.4.65.9. Свойство TClassDomain.DeleteRule (Правило удаления)
DeleteRule: TDeleteRule (Правило удаления) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TClassDomain.FDeleteRule (Правило удаления) .


5.9.4.65.10. Свойство TClassDomain.FilterCondition (Условие отбора)
FilterCondition: TFilterCondition (Условие отбора) .

Для чтения и записи свойства используется поле TClassDomain.FFilterCondition (Условие отбора) .


5.9.4.65.11. Свойство TClassDomain.ShowObjectInfoType (Тип представления объектов)
ShowObjectInfoType: TShowObjectInfoType (Тип представления объектов) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TClassDomain.FShowObjectInfoType (Тип представления объектов) .


5.9.4.65.12. Свойство TClassDomain.View (Представление)
View: TView of ClassDomain domain (Представление) .

Для чтения и записи свойства используется поле TClassDomain.FView (Представление) .


5.9.4.66. Класс TClassMember (Члены класса)
Унаследован от класса TObject (Объекты) . Объекты класса являются составными частями объектов класса TClass (Классы) .


5.9.4.67. Класс TCommandButton (Командные кнопки)

5.9.4.67.1. Конструктор TCommandButton.Create (Конструктор командной кнопки)

5.9.4.67.2. Поле TCommandButton.FGroup (Заголовок группы)

5.9.4.67.3. Поле TCommandButton.FParameter (Связанный параметр)

5.9.4.67.4. Поле TCommandButton.FPosition (Позиция)

5.9.4.67.5. Поле TCommandButton.FScript (Скрипт)

5.9.4.67.6. Поле TCommandButton.FTab (Заголовок закладки)

5.9.4.67.7. Свойство TCommandButton.Group (Заголовок группы)

5.9.4.67.8. Свойство TCommandButton.Parameter (Связанный параметр)

5.9.4.67.9. Свойство TCommandButton.Position (Позиция)

5.9.4.67.10. Свойство TCommandButton.Script (Скрипт)

5.9.4.67.11. Свойство TCommandButton.Tab (Заголовок закладки)

5.9.4.67.12. Функция TCommandButton.GetNextPos (Следующая позиция)

5.9.4.68. Класс TDataBase (Базы данных)
Унаследован от класса TObject (Объекты) .


5.9.4.68.1. Конструктор TDataBase.Create (Конструктор базы данных)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

GUID (GUID)

Доступен

Protected (Защищена)

Доступен

Конструирует объект класса TDataBase (Базы данных) .


5.9.4.68.2. Поле TDataBase.FGUID (Идентификатор)
FGUID: TGUID (Уникальные идентификаторы) (обязательно для заполнения) .

Используется для хранения значений свойств:
TDataBase.GUID (Идентификатор)
TObject.SourceDataBaseGUID (GUID базы даных-источника)
.


5.9.4.68.3. Поле TDataBase.FIsCurrent (Является текущей)
FIsCurrent: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойств:
TDataBase.IsCurrent (Является текущей)
TObject.SourceDataBaseIsCurrent (База данных-источник является текущей)
.


5.9.4.68.4. Поле TDataBase.FProtected (Защищена)
FProtected: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TDataBase.Protected (Защищена от изменений)
.


5.9.4.68.5. Свойство TDataBase.GUID (Идентификатор)
GUID: TGUID (Уникальные идентификаторы) (обязательно для заполнения) .

Для чтения значения свойства используется поле TDataBase.FGUID (Идентификатор) .


5.9.4.68.6. Свойство TDataBase.IsCurrent (Является текущей)
IsCurrent: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения значения свойства используется поле TDataBase.FIsCurrent (Является текущей) .


5.9.4.68.7. Свойство TDataBase.Protected (Защищена от изменений)
Protected: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TDataBase.FProtected (Защищена) .


5.9.4.69. Класс TDateDomain (Даты)
Унаследован от класса TDomain (Домены) .


5.9.4.69.1. Конструктор TDateDomain.Create (Конструктор домена даты)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

Конструирует объект класса TDateDomain (Даты) .


5.9.4.70. Класс TDateTimeDomain (Даты со временем)
Унаследован от класса TDomain (Домены) .


5.9.4.70.1. Конструктор TDateTimeDomain.Create (Конструктор домена даты со временем)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

Конструирует объект класса TDateTimeDomain (Даты со временем) .


5.9.4.71. Класс TDomain (Домены)
Унаследован от класса TObject (Объекты) .


5.9.4.71.1. Встраиваемое выражение TDomain.GetDependencyCount (Количество зависимостей)
GetDependencyCount: Integer (Целое) .

Текст выражения:

count(TField with Domain = Self) + 
count(TProperty with Domain = Self) +
count(TRoutine with Domain = Self) +
count(TParameter with Domain = Self) +
count(TOption with Domain = Self) 

Используется для вычисления значений свойства TDomain.DependencyCount (Количество зависимостей)
.


5.9.4.71.2. Конструктор TDomain.Create (Конструктор домена)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)

Доступен

Конструирует объект класса TDomain (Домены) .


5.9.4.71.3. Поле TDomain.FRequired (Обязательно для заполнения)

5.9.4.71.4. Свойство TDomain.DependencyCount (Количество зависимостей)
DependencyCount: Integer (Целое) . Вычисление свойства отложено.

Для чтения значения свойства используется встраиваемое выражение TDomain.GetDependencyCount (Количество зависимостей) .


5.9.4.71.5. Свойство TDomain.Required (Обязательно для заполнения)
Required: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TDomain.FRequired (Обязательно для заполнения) .


5.9.4.72. Класс TEnumerationDomain (Перечисления)
Унаследован от класса TDomain (Домены) . Объекты могут включать в себя объекты классов:


5.9.4.72.1. Конструктор TEnumerationDomain.Create (Конструктор перечисления)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

ShowNames (Показывать имена элементов)

Доступен

Конструирует объект класса TEnumerationDomain (Перечисления) .


5.9.4.72.2. Поле TEnumerationDomain.FShowNames (Показывать имена)
FShowNames: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TEnumerationDomain.ShowNames (Показывать имена)
.


5.9.4.72.3. Свойство TEnumerationDomain.ShowNames (Показывать имена)
ShowNames: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TEnumerationDomain.FShowNames (Показывать имена) .


5.9.4.73. Класс TEnumerationItem (Элементы перечислений)
Унаследован от класса TObject (Объекты) . Объекты класса являются составными частями объектов класса TEnumerationDomain (Перечисления) .


5.9.4.73.1. Конструктор TEnumerationItem.Create (Конструктор элемента перечисления)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Position (Позиция)

Доступен

Конструирует объект класса TEnumerationItem (Элементы перечислений) .


5.9.4.73.2. Поле TEnumerationItem.FPosition (Позиция)
FPosition: TPosition (Позиция) (обязательно для заполнения) .

Используется для хранения значений свойства TEnumerationItem.Position (Позиция)
.


5.9.4.73.3. Свойство TEnumerationItem.Position (Позиция)
Position: TPosition (Позиция) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TEnumerationItem.FPosition (Позиция) .


5.9.4.73.4. Функция TEnumerationItem.GetNextPos (Следующая позиция)
Является методом класса.

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Master (Мастер)

Доступен

Возвращает значение типа Integer (Целое) .

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Master (Мастер)

Доступен

Используется для инициализации значения параметра Position (Позиция) подпрограммы TEnumerationItem.Create (Конструктор элемента перечисления)
.


5.9.4.74. Класс TExcelTemplate (Шаблоны отчетов Excel)
Унаследован от класса TRoutine (Подпрограмма) . Объекты класса являются составными частями объектов класса TClass (Классы) .


5.9.4.74.1. Конструктор TExcelTemplate.Create (Конструктор шаблона Excel)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

IsClassMethod (Является методом класса)
Доступен

Domain (Домен результата)
Доступен

Scope (Область видимости)
Доступен

Confirmation (Текст подтверждения)
Доступен

UseTabs (Использовать закладки)
Доступен

Script (Скрипт формы параметров)
Доступен

Image (Изображение-иконка)
Доступен

TemplateData (Данные шаблона)

Доступен

PlaceDataOnSheet (Лист для переноса данных)

Доступен

MacroName (Имя макроса)

Доступен

Конструирует объект класса TExcelTemplate (Шаблоны отчетов Excel) .


5.9.4.74.2. Поле TExcelTemplate.FMacroName (Имя макроса)
FMacroName: TExternalIndentifier (Внешний идентификатор) .

Используется для хранения значений свойства TExcelTemplate.MacroName (Имя макроса)
.


5.9.4.74.3. Поле TExcelTemplate.FPlaceDataOnSheet (Тип листа для переноса данных)
FPlaceDataOnSheet: TExcelSheetKind (Тип листа Excel) (обязательно для заполнения) .

Используется для хранения значений свойства TExcelTemplate.PlaceDataOnSheet (Лист для переноса данных)
.


5.9.4.74.4. Поле TExcelTemplate.FTemplateData (Данные шаблона)
FTemplateData: TExcelTemplateData (Данные Excel-шаблона) .

Используется для хранения значений свойства TExcelTemplate.TemplateData (Данные шаблона)
.


5.9.4.74.5. Свойство TExcelTemplate.MacroName (Имя макроса)
MacroName: TExternalIndentifier (Внешний идентификатор) .

Для чтения и записи свойства используется поле TExcelTemplate.FMacroName (Имя макроса) .


5.9.4.74.6. Свойство TExcelTemplate.PlaceDataOnSheet (Лист для переноса данных)
PlaceDataOnSheet: TExcelSheetKind (Тип листа Excel) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TExcelTemplate.FPlaceDataOnSheet (Тип листа для переноса данных) .


5.9.4.74.7. Свойство TExcelTemplate.TemplateData (Данные шаблона)
TemplateData: TExcelTemplateData (Данные Excel-шаблона) .

Для чтения и записи свойства используется поле TExcelTemplate.FTemplateData (Данные шаблона) .


5.9.4.75. Класс TField (Поля)
Унаследован от класса TClassMember (Члены класса) . Объекты класса являются составными частями объектов класса TClass (Классы) .


5.9.4.75.1. Конструктор TField.Create (Конструктор поля)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Domain (Домен)

Доступен

CreateProperty (Создать свойство)

Доступен

CreateConstructorParameter (Создать параметр конструктора)

Доступен

Конструирует объект класса TField (Поля) .


5.9.4.75.2. Поле TField.FDomain (Домен)
FDomain: TDomain required domain (Домен (обязательно)) (обязательно для заполнения) .

Используется для хранения значений свойства TField.Domain (Домен)
.


5.9.4.75.3. Свойство TField.Domain (Домен)
Domain: TDomain required domain (Домен (обязательно)) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TField.FDomain (Домен) .


5.9.4.75.4. Свойство TField.DomainClass (Класс домена)
DomainClass: TClass required domain (Класс (обязательно)) (обязательно для заполнения) .

Для чтения значения свойства используется поле TObject.FClass (Класс) .

Дочернее свойство свойства Domain (Домен) .


5.9.4.75.5. Свойство TField.DomainRequired (Обязательно для заполнения)
DomainRequired: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TDomain.FRequired (Обязательно для заполнения) .

Дочернее свойство свойства Domain (Домен) .


5.9.4.76. Класс TFileNameDomain (Имена файлов)
Унаследован от класса TStringDomain (Строковые) .


5.9.4.76.1. Конструктор TFileNameDomain.Create (Конструктор имени файла)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

Length (Максимальная длина)
Доступен

FileMustExist (Файл должен существовать)

Доступен

DefaultExtension (Расширение по умолчанию)

Доступен

OverwritePrompt (Запрос перезаписи)

Доступен

Конструирует объект класса TFileNameDomain (Имена файлов) .


5.9.4.76.2. Поле TFileNameDomain.FDefaultExtension (Расширение по умолчанию)
FDefaultExtension: TFileExtension (Расширение имени файла) .

Используется для хранения значений свойства TFileNameDomain.DefaultExtension (Расширение по умолчанию)
.


5.9.4.76.3. Поле TFileNameDomain.FFileMustExist (Файл должен существовать)
FFileMustExist: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TFileNameDomain.FileMustExist (Файл должен существовать)
.


5.9.4.76.4. Поле TFileNameDomain.FOverwritePrompt (Запрос перезаписи)
FOverwritePrompt: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TFileNameDomain.OverwritePrompt (Запрос перезаписи)
.


5.9.4.76.5. Процедура TFileNameDomain.Change (Изменение объекта)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Action (Действие)
Скрыт

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Action (Действие)
Скрыт


5.9.4.76.6. Свойство TFileNameDomain.DefaultExtension (Расширение по умолчанию)
DefaultExtension: TFileExtension (Расширение имени файла) .

Для чтения и записи свойства используется поле TFileNameDomain.FDefaultExtension (Расширение по умолчанию) .


5.9.4.76.7. Свойство TFileNameDomain.FileMustExist (Файл должен существовать)
FileMustExist: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TFileNameDomain.FFileMustExist (Файл должен существовать) .


5.9.4.76.8. Свойство TFileNameDomain.OverwritePrompt (Запрос перезаписи)
OverwritePrompt: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TFileNameDomain.FOverwritePrompt (Запрос перезаписи) .


5.9.4.77. Класс TFloatDomain (Вещественные числа)
Унаследован от класса TDomain (Домены) .


5.9.4.77.1. Конструктор TFloatDomain.Create (Конструктор вещественного домена)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

Length (Длина)

Доступен

DecimalPlaces (Количество десятичных знаков)

Доступен

MinValue (Минимальное значение)

Доступен

MaxValue (Максимальное значение)

Доступен

Конструирует объект класса TFloatDomain (Вещественные числа) .


5.9.4.77.2. Поле TFloatDomain.FDecimalPlaces (Количество знаков после запятой)
FDecimalPlaces: TPrescision (Точность) .

Используется для хранения значений свойства TFloatDomain.DecimalPlaces (Количество десятичных знаков)
.


5.9.4.77.3. Поле TFloatDomain.FLength (Максимальная длина)
FLength: TPrescision (Точность) .

Используется для хранения значений свойства TFloatDomain.Length (Длина)
.


5.9.4.77.4. Поле TFloatDomain.FMaxValue (Максимальное значение)
FMaxValue: Float (Вещественное) .

Используется для хранения значений свойства TFloatDomain.MaxValue (Максимальное значение)
.


5.9.4.77.5. Поле TFloatDomain.FMinValue (Минимальное значение)
FMinValue: Float (Вещественное) .

Используется для хранения значений свойства TFloatDomain.MinValue (Минимальное значение)
.


5.9.4.77.6. Свойство TFloatDomain.DecimalPlaces (Количество десятичных знаков)
DecimalPlaces: TPrescision (Точность) .

Для чтения и записи свойства используется поле TFloatDomain.FDecimalPlaces (Количество знаков после запятой) .


5.9.4.77.7. Свойство TFloatDomain.Length (Длина)
Length: TPrescision (Точность) .

Для чтения и записи свойства используется поле TFloatDomain.FLength (Максимальная длина) .


5.9.4.77.8. Свойство TFloatDomain.MaxValue (Максимальное значение)
MaxValue: Float (Вещественное) .

Для чтения и записи свойства используется поле TFloatDomain.FMaxValue (Максимальное значение) .


5.9.4.77.9. Свойство TFloatDomain.MinValue (Минимальное значение)
MinValue: Float (Вещественное) .

Для чтения и записи свойства используется поле TFloatDomain.FMinValue (Минимальное значение) .


5.9.4.78. Класс TFolderNameDomain (Имена папок файловой системы)
Унаследован от класса TStringDomain (Строковые) .


5.9.4.78.1. Конструктор TFolderNameDomain.Create (Конструктор имени папки)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

Length (Максимальная длина)
Доступен

FolderMustExist (Папка должна существовать)

Доступен

Конструирует объект класса TFolderNameDomain (Имена папок файловой системы) .


5.9.4.78.2. Поле TFolderNameDomain.FFolderMustExist (Папка должеа существовать)
FFolderMustExist: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TFolderNameDomain.FolderMustExist (Папка должна существовать)
.


5.9.4.78.3. Процедура TFolderNameDomain.Change (Изменение объекта)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Action (Действие)
Скрыт

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Action (Действие)
Скрыт


5.9.4.78.4. Свойство TFolderNameDomain.FolderMustExist (Папка должна существовать)
FolderMustExist: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TFolderNameDomain.FFolderMustExist (Папка должеа существовать) .


5.9.4.79. Класс TForm (Формы)
Унаследован от класса TObject (Объекты) . Объекты могут включать в себя объекты классов:


5.9.4.79.1. Конструктор TForm.Create (Конструктор формы)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

AutoOpen (Открывать автоматически)

Доступен

Position (Позиция)

Доступен
Scope (Область видимости)

Доступен

Image (Изображение-иконка)

Доступен

IsAlive ("Живая")

Доступен

Конструирует объект класса TForm (Формы) .


5.9.4.79.2. Поле TForm.FAutoOpen (Открывать автоматически)
FAutoOpen: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TForm.AutoOpen (Открывать автоматически)
.


5.9.4.79.3. Поле TForm.FImage (Изображеие-иконка)
FImage: TImage (Изображение) .

Используется для хранения значений свойств:
TForm.Image (Изображение-иконка)
TVisualGroupForm.Image (Изображение)
.


5.9.4.79.4. Поле TForm.FIsAlive (Живая)
FIsAlive: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TForm.IsAlive ("Живая")
.


5.9.4.79.5. Поле TForm.FPosition (Позиция)
FPosition: TPosition (Позиция) (обязательно для заполнения) .

Используется для хранения значений свойства TForm.Position (Позиция)
.


5.9.4.79.6. Поле TForm.FScope (Область видимости)
FScope: TScope (Область видимости) (обязательно для заполнения) .

Используется для хранения значений свойства TForm.Scope (Область видимости)
.


5.9.4.79.7. Свойство TForm.AutoOpen (Открывать автоматически)
AutoOpen: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TForm.FAutoOpen (Открывать автоматически) .


5.9.4.79.8. Свойство TForm.Image (Изображение-иконка)
Image: TImage (Изображение) .

Для чтения и записи свойства используется поле TForm.FImage (Изображеие-иконка) .


5.9.4.79.9. Свойство TForm.IsAccessible (Доступна)
IsAccessible: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения значения свойства используется функция TForm.GetIsAccessible (Доступна) .


5.9.4.79.10. Свойство TForm.IsAlive ("Живая")
IsAlive: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TForm.FIsAlive (Живая) .


5.9.4.79.11. Свойство TForm.Position (Позиция)
Position: TPosition (Позиция) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TForm.FPosition (Позиция) .


5.9.4.79.12. Свойство TForm.Scope (Область видимости)
Scope: TScope (Область видимости) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TForm.FScope (Область видимости) .


5.9.4.79.13. Функция TForm.GetIsAccessible (Доступна)

Возвращает значение типа Boolean (Обычное логическое) .

Используется для вычисления значений свойств:
TForm.IsAccessible (Доступна)
TInstantMessage.IsAccessible (Форма доступна)
.


5.9.4.79.14. Функция TForm.GetNextPos (Следующая позиция)
Является методом класса.

Возвращает значение типа Integer (Целое) .

Используется для инициализации значения параметра Position (Позиция) подпрограммы TForm.Create (Конструктор формы)
.


5.9.4.80. Класс TFormAccess (Доступ к формам)
Унаследован от класса TObject (Объекты) . Объекты класса являются составными частями объектов класса TForm (Формы) .


5.9.4.80.1. Конструктор TFormAccess.Create (Конструктор доступа к форме)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)

Скрыт

Description (Наименование)

Скрыт

Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Форма)

Доступен
Accessor (Роль доступа)
Скрыт

SecurityAccount (Роль безопасности)

Доступен

SecurityAccount (Роль безопасности) Lost reference:DATAMILL.839411F411F347F8BB1A92044ABF3664->6EA9046263AE4B17941B0654B22536D2(cсылка потеряна)

Конструирует объект класса TFormAccess (Доступ к формам) .


5.9.4.81. Класс TFormView (Представления формы)
Унаследован от класса TObject (Объекты) . Объекты класса связаны иерархически. Объекты класса являются составными частями объектов класса TForm (Формы) .


5.9.4.81.1. Конструктор TFormView.Create (Конструктор представления формы)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)

Скрыт

Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

View (Представление)

Доступен

ChildrenMinimized (Дочерние представления минимизированы)

Доступен

ChildrenOnTabs (Дочерние представления на закладках)

Доступен

MasterProperty (Свойство-главное)

Доступен

DetailProperty (Свойство-подчиненное)

Доступен

Position (Позиция)

Доступен
SpacePercentage (Площадь, %)

Доступен

Конструирует объект класса TFormView (Представления формы) .


5.9.4.81.2. Поле TFormView.FChildrenMinimized (Дочерние представления минимизированы)
FChildrenMinimized: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TFormView.ChildrenMinimized (Дочерние представления минимизированы)
.


5.9.4.81.3. Поле TFormView.FChildrenOnTabs (Дочерние представления на закладках)
FChildrenOnTabs: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TFormView.ChildrenOnTabs (Дочерние представления на закладках)
.


5.9.4.81.4. Поле TFormView.FDetailProperty (Свойство-подчиненное)
FDetailProperty: TDetailProperty domain (Свойство-подчиненное) .

Используется для хранения значений свойства TFormView.DetailProperty (Свойство-подчиненное)
.


5.9.4.81.5. Поле TFormView.FMasterProperty (Свойство-главное)
FMasterProperty: TMasterProperty domain (Свойство-главное) .

Используется для хранения значений свойства TFormView.MasterProperty (Свойство-главное)
.


5.9.4.81.6. Поле TFormView.FPosition (Позиция)
FPosition: TPosition (Позиция) (обязательно для заполнения) .

Используется для хранения значений свойства TFormView.Position (Позиция)
.


5.9.4.81.7. Поле TFormView.FSingleQuery (Единственный запрос)

5.9.4.81.8. Поле TFormView.FSpacePercentage (Площадь)
FSpacePercentage: Percent (Процент) .

Используется для хранения значений свойства TFormView.SpacePercentage (Площадь, %)
.


5.9.4.81.9. Поле TFormView.FView (Представление)
FView: TView of FormView domain (Представление для формы) (обязательно для заполнения) .

Используется для хранения значений свойства TFormView.View (Представление)
.


5.9.4.81.10. Свойство TFormView.ChildrenMinimized (Дочерние представления минимизированы)
ChildrenMinimized: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TFormView.FChildrenMinimized (Дочерние представления минимизированы) .


5.9.4.81.11. Свойство TFormView.ChildrenOnTabs (Дочерние представления на закладках)
ChildrenOnTabs: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TFormView.FChildrenOnTabs (Дочерние представления на закладках) .


5.9.4.81.12. Свойство TFormView.Collapsed (Узлы свернуты)
Collapsed: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TView.FCollapsed (Свернуто) .

Дочернее свойство свойства View (Представление) .


5.9.4.81.13. Свойство TFormView.ColorProperty (Свойство-цвет)
ColorProperty: TColorProperty domain (Домен свойства цвета) .

Для чтения и записи свойства используется поле TView.FColorProperty (Свойство цвета) .

Дочернее свойство свойства View (Представление) .


5.9.4.81.14. Свойство TFormView.DetailProperty (Свойство-подчиненное)
DetailProperty: TDetailProperty domain (Свойство-подчиненное) .

Для чтения и записи свойства используется поле TFormView.FDetailProperty (Свойство-подчиненное) .


5.9.4.81.15. Свойство TFormView.MasterProperty (Свойство-главное)
MasterProperty: TMasterProperty domain (Свойство-главное) .

Для чтения и записи свойства используется поле TFormView.FMasterProperty (Свойство-главное) .


5.9.4.81.16. Свойство TFormView.Position (Позиция)
Position: TPosition (Позиция) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TFormView.FPosition (Позиция) .


5.9.4.81.17. Свойство TFormView.ShownClass (Показываемый класс)
ShownClass: TClass required domain (Класс (обязательно)) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TView.FShownClass (Класс для показа) .

Дочернее свойство свойства View (Представление) .


5.9.4.81.18. Свойство TFormView.SingleQuery (Единственный запрос)

5.9.4.81.19. Свойство TFormView.SpacePercentage (Площадь, %)
SpacePercentage: Percent (Процент) .

Для чтения и записи свойства используется поле TFormView.FSpacePercentage (Площадь) .


5.9.4.81.20. Свойство TFormView.View (Представление)
View: TView of FormView domain (Представление для формы) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TFormView.FView (Представление) .


5.9.4.81.21. Функция TFormView.GetNextPos (Следующая позиция)
Является методом класса.

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Parent (Родитель)

Доступен
Master (Мастер)

Доступен

Возвращает значение типа Integer (Целое) .

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Parent (Родитель)

Доступен
Master (Мастер)

Доступен

Используется для инициализации значения параметра Position (Позиция) подпрограммы TFormView.Create (Конструктор представления формы)
.


5.9.4.82. Класс TInlineExpression (Встраиваемое выражение)
Унаследован от класса TClassMember (Члены класса) . Объекты класса являются составными частями объектов класса TClass (Классы) .


5.9.4.82.1. Конструктор TInlineExpression.Create (Конструктор встраиваемого выражения)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Expression (Выражение)

Доступен

Domain (Домен)

Доступен

Конструирует объект класса TInlineExpression (Встраиваемое выражение) .


5.9.4.82.2. Поле TInlineExpression.FDomain (Домен)
FDomain: TDomain required domain (Домен (обязательно)) (обязательно для заполнения) .

Используется для хранения значений свойства TInlineExpression.Domain (Домен)
.


5.9.4.82.3. Поле TInlineExpression.FExpression (Выражение)
FExpression: TInlineExpressionText (Текст выражения) .

Используется для хранения значений свойства TInlineExpression.Expression (Выражение)
.


5.9.4.82.4. Свойство TInlineExpression.Domain (Домен)
Domain: TDomain required domain (Домен (обязательно)) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TInlineExpression.FDomain (Домен) .


5.9.4.82.5. Свойство TInlineExpression.DomainClass (Класс домена)
DomainClass: TClass required domain (Класс (обязательно)) (обязательно для заполнения) .

Для чтения значения свойства используется поле TObject.FClass (Класс) .

Дочернее свойство свойства Domain (Домен) .


5.9.4.82.6. Свойство TInlineExpression.DomainRequired (Обязательно для заполнения)
DomainRequired: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TDomain.FRequired (Обязательно для заполнения) .

Дочернее свойство свойства Domain (Домен) .


5.9.4.82.7. Свойство TInlineExpression.Expression (Выражение)
Expression: TInlineExpressionText (Текст выражения) .

Для чтения и записи свойства используется поле TInlineExpression.FExpression (Выражение) .


5.9.4.83. Класс TInstantMessage (Сообщения)
Унаследован от класса TObject (Объекты) .


5.9.4.83.1. Конструктор TInstantMessage.Create (Конструктор сообщения)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

User (Пользователь)

Доступен

FormView (Представление формы)

Доступен

Object (Объект)

Доступен

Конструирует объект класса TInstantMessage (Сообщения) .


5.9.4.83.2. Поле TInstantMessage.FFormView (Представление формы)
FFormView: TFormView domain (Представления форм) .

Используется для хранения значений свойства TInstantMessage.FormView (Представление формы)
.


5.9.4.83.3. Поле TInstantMessage.FObject (Объект)
FObject: TObject domain (Объект) .

Используется для хранения значений свойства TInstantMessage.Object (Объект)
.


5.9.4.83.4. Поле TInstantMessage.FUser (Пользователь)
FUser: TUser required domain (Пользователь) (обязательно для заполнения) .

Используется для хранения значений свойства TInstantMessage.User (Пользователь)
.


5.9.4.83.5. Поле TInstantMessage.FViewed (Просмотрено)
FViewed: Boolean (Обычное логическое) (обязательно для заполнения) .

Используется для хранения значений свойства TInstantMessage.Viewed (Просмотрено)
.


5.9.4.83.6. Свойство TInstantMessage.Form (Форма)
Form: TForm required domain (Форма (обязательно)) (обязательно для заполнения) .

Для чтения значения свойства используется поле TObject.FMaster (Мастер) .

Дочернее свойство свойства FormView (Представление формы) .


5.9.4.83.7. Свойство TInstantMessage.FormView (Представление формы)
FormView: TFormView domain (Представления форм) .

Для чтения и записи свойства используется поле TInstantMessage.FFormView (Представление формы) .


5.9.4.83.8. Свойство TInstantMessage.IsAccessible (Форма доступна)
IsAccessible: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения значения свойства используется функция TForm.GetIsAccessible (Доступна) .

Дочернее свойство свойства Form (Форма) .


5.9.4.83.9. Свойство TInstantMessage.IsCurrent (Текущему пользователю)
IsCurrent: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения значения свойства используется функция TUser.GetIsCurrent (Является текущим) .

Дочернее свойство свойства User (Пользователь) .


5.9.4.83.10. Свойство TInstantMessage.Object (Объект)
Object: TObject domain (Объект) .

Для чтения и записи свойства используется поле TInstantMessage.FObject (Объект) .


5.9.4.83.11. Свойство TInstantMessage.User (Пользователь)
User: TUser required domain (Пользователь) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TInstantMessage.FUser (Пользователь) .


5.9.4.83.12. Свойство TInstantMessage.Viewed (Просмотрено)
Viewed: Boolean (Обычное логическое) (обязательно для заполнения) .

Для чтения и записи свойства используется поле TInstantMessage.FViewed (Просмотрено) .


5.9.4.84. Класс TIntegerDomain (Целые числа)
Унаследован от класса TDomain (Домены) .


5.9.4.84.1. Конструктор TIntegerDomain.Create (Конструктор целочисленного домена)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

Required (Обязательно для заполнения)
Доступен

MinValue (Минимальное значение)

Доступен

MaxValue (Максимальное значение)

Доступен

Конструирует объект класса TIntegerDomain (Целые числа) .


5.9.4.84.2. Поле TIntegerDomain.FMaxValue (Максимальное значение)
FMaxValue: Integer (Целое) .

Используется для хранения значений свойства TIntegerDomain.MaxValue (Максимальное значение)
.


5.9.4.84.3. Поле TIntegerDomain.FMinValue (Минимальное значение)
FMinValue: Integer (Целое) .

Используется для хранения значений свойства TIntegerDomain.MinValue (Минимальное значение)
.


5.9.4.84.4. Свойство TIntegerDomain.MaxValue (Максимальное значение)
MaxValue: Integer (Целое) .

Для чтения и записи свойства используется поле TIntegerDomain.FMaxValue (Максимальное значение) .


5.9.4.84.5. Свойство TIntegerDomain.MinValue (Минимальное значение)
MinValue: Integer (Целое) .

Для чтения и записи свойства используется поле TIntegerDomain.FMinValue (Минимальное значение) .


5.9.4.85. Класс TMethod (Методы)
Унаследован от класса TRoutine (Подпрограмма) . Объекты класса являются составными частями объектов класса TClass (Классы) .


5.9.4.85.1. Конструктор TMethod.Create (Конструктор метода)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)
Доступен
Description (Наименование)
Доступен
Class (Класс)
Доступен
Parent (Родитель)
Доступен
Master (Мастер)
Доступен
Accessor (Роль доступа)
Скрыт

IsClassMethod (Является методом класса)
Доступен

Domain (Домен результата)
Доступен

Scope (Область видимости)
Доступен

Confirmation (Текст подтверждения)
Доступен

UseTabs (Использовать закладки)
Доступен

Script (Скрипт формы параметров)
Доступен

Image (Изображение-иконка)
Доступен

Body (Тело)

Доступен

Конструирует объект класса TMethod (Методы) .


5.9.4.85.2. Поле TMethod.FBody (Тело)
FBody: TMethodBody (Исходные тексты методов) .

Используется для хранения значений свойства TMethod.Body (Тело)
.


5.9.4.85.3. Свойство TMethod.Body (Тело)
Body: TMethodBody (Исходные тексты методов) .

Для чтения и записи свойства используется поле TMethod.FBody (Тело) .


5.9.4.85.4. Свойство TMethod.CallTemplate (Шаблон вызова)
CallTemplate: TLongString (Длинная строка) . Вычисление свойства отложено.

Для чтения значения свойства используется функция TMethod.CallTemplate (Шаблон вызова) .


5.9.4.85.5. Функция TMethod.CallTemplate (Шаблон вызова)

Возвращает значение типа TLongString (Длинная строка) .

Используется для вычисления значений свойства TMethod.CallTemplate (Шаблон вызова)
.


5.9.4.86. Класс TObject (Объекты)


5.9.4.86.1. Конструктор TObject.Create (Конструктор объекта)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Name (Имя)

Доступен
Description (Наименование)

Доступен
Class (Класс)

Доступен
Parent (Родитель)

Доступен
Master (Мастер)

Доступен
Accessor (Роль доступа)

Скрыт

Конструирует объект класса TObject (Объекты) .


5.9.4.86.2. Поле TObject.FClass (Класс)

5.9.4.86.3. Поле TObject.FCreated (Создано)
FCreated: TimeStamp required (Момент (обязательный)) Lost reference:DATAMILL.7D7A9FF865234ED797A722B98B285F45->BEAF7D61963C45D294B6F910025B4416(cсылка потеряна) (обязательно для заполнения) .

Используется для хранения значений свойства TObject.Created (Создано)
.


5.9.4.86.4. Поле TObject.FCreator (Создано пользователем)
FCreator: TUser required domain (Пользователь) (обязательно для заполнения) .

Используется для хранения значений свойства TObject.Creator (Создано пользователем)
.


5.9.4.86.5. Поле TObject.FDescription (Наименование)
FDescription: TObjectDescription (Наименования) (обязательно для заполнения) .

Используется для хранения значений свойств:
TObject.Description (Наименование)
TFormAccess.Description (Наименование)Lost reference:DATAMILL.9646816AA3C94B179FD6D0FE608A84AA->81F6AA3385284B9FB1061FE6FC0ED97E(cсылка потеряна)
TVisualGroupAccess.Description (Наименование)Lost reference:DATAMILL.9646816AA3C94B179FD6D0FE608A84AA->48B93B61D60D4B54BBB474D4D9C19104(cсылка потеряна)
TBanGroupAccess.Description (Наименование)Lost reference:DATAMILL.9646816AA3C94B179FD6D0FE608A84AA->7EB67702ECBD43A09001796CEE571C43(cсылка потеряна)
.


5.9.4.86.6. Поле TObject.FMaster (Мастер)

5.9.4.86.7. Поле TObject.FModified (Изменено)
FModified: TimeStamp required (Момент (обязательный)) Lost reference:DATAMILL.CCFAD3DC8AD6423A960B2DE6FD4DBAF8->BEAF7D61963C45D294B6F910025B4416(cсылка потеряна) (обязательно для заполнения) .

Используется для хранения значений свойства TObject.Modified (Изменено)
.


5.9.4.86.8. Поле TObject.FModifier (Изменено пользователем)
FModifier: TUser required domain (Пользователь) (обязательно для заполнения) .

Используется для хранения значений свойства TObject.Modifier (Изменено пользователем)
.


5.9.4.86.9. Поле TObject.FName (Имя)
FName: TObjectName (Имена) (обязательно для заполнения) .

Используется для хранения значений свойств:
TObject.Name (Имя)
TFormAccess.Name (Имя)Lost reference:DATAMILL.B42452B5E8284D03BA1654217FB53F3D->087EB44455B64CA3B6EE8EE5C5566E9A(cсылка потеряна)
TVisualGroupAccess.Name (Имя)Lost reference:DATAMILL.B42452B5E8284D03BA1654217FB53F3D->2CA7BB173CD74A009BD2E2DF0FD6D939(cсылка потеряна)
TBanGroupAccess.Name (Имя)Lost reference:DATAMILL.B42452B5E8284D03BA1654217FB53F3D->9816F55C0B2B4C649A354152A53BFC37(cсылка потеряна)
.


5.9.4.86.10. Поле TObject.FOldID (Идентификатор при создании)
FOldID: TOldID (Идентификаторы при создании) (обязательно для заполнения) .

Используется для хранения значений свойства TObject.OldID (Идентификатор при создании)
.


5.9.4.86.11. Поле TObject.FParent (Родитель)
FParent: TParent domain (Родитель объекта) .

Используется для хранения значений свойства TObject.Parent (Родитель)
.


5.9.4.86.12. Поле TObject.FReader (Роль для чтения)
FReader: TAccessor domain (Роли доступа) .

Используется для хранения значений свойства TObject.Reader (Роль для чтения)
.


5.9.4.86.13. Поле TObject.FSourceDataBase (База данных)
FSourceDataBase: TSourceDataBase required domain (База данных) (обязательно для заполнения) .

Используется для хранения значений свойства TObject.SourceDataBase (База данных-источник)
.


5.9.4.86.14. Поле TObject.FWriter (Роль для записи)
FWriter: TAccessor domain (Роли доступа) .

Используется для хранения значений свойства TObject.Writer (Роль для записи)
.


5.9.4.86.15. Процедура TObject.Change (Изменение объекта)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Action (Действие)

Скрыт

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
Action (Действие)

Скрыт


5.9.4.86.16. Процедура TObject.Destroy (Деструктор объекта)


5.9.4.86.17. Процедура TObject.MergeTo (Отождествить с)

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
PrimaryObject (Первичный объект)

Доступен

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
PrimaryObject (Первичный объект)

Доступен


5.9.4.86.18. Процедура TObject.SendMessage (Отправить сообщение)
Является методом класса.

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
MessageText (Текст сообщения)

Доступен

Broadcast (Всем пользователям)

Доступен

Addressee (Адресат)

Доступен

AttachSelected (Присоединить выбранные объекты)

Доступен

Selected (Список выбранных объектов)

Скрыт
CurrentFormView (Текущее представление формы)

Скрыт

Параметры:
ПараметрТипПримечаниеВидимостьСвязанное свойство
MessageText (Текст сообщения)

Доступен

Broadcast (Всем пользователям)

Доступен

Addressee (Адресат)

Доступен

AttachSelected (Присоединить выбранные объекты)

Доступен

Selected (Список выбранных объектов)

Скрыт
CurrentFormView (Текущее представление формы)

Скрыт


5.9.4.86.19. Процедура TObject.Touch (Модификация объекта)

5.9.4.86.20. Псевдоподпрограмма TObject.Column (Колонка)


5.9.4.86.21. Псевдоподпрограмма TObje