Мельница данных (одним файлом) (09.12.2024) |
1. Технологическая платформа "Мельница Данных" |
2. Руководство пользователя обозревателя данных |
2.1. Запуск обозревателя данных |
Для начала работы необходимо запустить исполняемый файл DataBrowser.exe. Это можно сделать посредством ярлыка, создаваемого инсталлятором Системы: При его запуске отобразится окно входа в систему: Для запуска системы необходимо заполнить поля формы входа в систему, после чего нажать кнопку ОК или клавишу Enter на клавиатуре. Если система ранее запускалась на Вашем локальном компьютере, то поля формы (за исключением поля Пароль) будут заполнены данными, введенными в прошлый раз. Если система на компьютере запускается впервые, то при открытии формы ее поля будут пустыми. Для заполнения полей формы необходимо знать, на каком типе сервера БД работает система, имя базы данных, с которой предстоит работать, имя пользователя и пароль. Если Вы не располагаете такой информацией, узнайте ее у администратора системы.
Если Вы установили флажок "Входить автоматически", но хотите изменить ранее введенную в поля информацию, необходимо выполнить щелчок мышью (здесь и далее "щелчок мышью" означает щелчок ЛЕВОЙ кнопкой мыши. Если необходим щелчок ПРАВОЙ кнопкой мыши, то будет указано "щелчок правой кнопкой мыши") на форме во время ее показа. После этого можно будет изменить ранее установленные в полях значения. |
2.2. Элементы интерфейса пользователя |
При входе в систему на экране отобразиться ее главное окно. Макет главного окна системы: В заголовке главного окна системы отображается имя запущенного приложения (Databrowser.exe), имя пользователя (sysdba) и имя базы данных (C:\project\databases\icecream.fdb). Интерфейс состоит из трех основных элементов:
|
2.3. Работа с формами и таблицами данных |
Для отображения записей об учитываемых в системе объектах используются формы с таблицами данных. Каждая форма представляет собой отдельное окно с заголовком, на котором отображается ее наименование. Основную часть окна формы занимают таблицы данных. Переключаться между доступными формами можно либо при помощи щелчка мышью по иконке, соответствующей форме на Панели инструментов, либо при щелчке мышью на самом окне формы (если форма видна). В каждый момент времени активной является одна из форм (или ни одной). Окно формы можно "перетаскивать" (здесь и далее "перетащить" объект означает подвести к нему указатель мыши, нажать левую кнопку, удерживая кнопку переместить объект на новое место, после чего отпустить кнопку мыши) по экрану за заголовок, изменять его размеры, минимизировать, восстановить, раскрывать на весь экран или закрывать. Эти действия осуществляются стандартным для среды Windows образом. При закрытии формы соответствующая ей иконка на панели инструментов будет отображена неактивной. При щелчке мышью по такой иконке форма откроется, и иконка станет активной. Таблицы данных в форме расположены на закладках с заголовками, соответствующими наименованиям таблиц данных. Например, на предыдущем рисунке активна форма "Продажи мороженого". В этой форме на первом уровне расположены таблицы данных "Регионы", "Сорта мороженого", "Сорта фруктового мороженого", "Представительства", "Все продажи". Активной в настоящее время является таблица данных "Представительства". |
2.3.1. Подчиненные таблицы данных и взаимное расположение главной и подчиненных таблиц |
Таблицы данных могут иметь подчиненные таблицы. Подчиненные таблицы по умолчанию отображаются в нижней части главной таблицы. Набор записей, отображаемых в подчиненной таблице, зависит от того, какие записи выбраны в главной таблице. Например, на рисунке в главной таблице "Представительства" выбрано представительство ООО "Холод плюс". При этом в подчиненной таблице "Продажи представительства" отображаются только те продажи, которые осуществлены данным представительством. Подчиненные таблицы могут располагаться двумя способами:
Изменять соотношение размера главной и подчиненных таблиц можно путем перетаскивания горизонтального разделителя мышью. Для этого необходимо подвести указатель мыши к границе раздела зон главной и подчиненных таблиц и когда курсор примет форму горизонтального разделителя () перетащить разделитель выше или ниже. При отображении подчиненных таблиц в отдельных окнах можно изменять соотношение ширины подчиненных таблиц. Для этого нужно подвести указатель мыши к вертикальной границе таблиц и когда указатель примет форму вертикального разделителя (), перетащить разделитель вправо или влево. При отображении подчиненных таблиц на закладках занимаемая ими область также может быть минимизирована. Для этого необходимо подвести курсор к границе раздела зон главной и подчиненной таблиц и когда он примет форму горизонтального разделителя () выполнить двойной щелчок мышью. Восстановить отображение подчиненных таблиц можно либо путем нажатия кнопки "Восстановить" () в заголовке минимизированного окна, либо при помощи двойного щелчка мышью на этом заголовке. |
2.3.2. Отображение учитываемых объектов в таблице данных |
Таблица данных имеет строки и колонки. Строки таблицы (или записи) соответствуют учитываемым объектам. Колонки таблицы соответствуют свойствам объектов. На рисунке представлен макет таблицы данных, в которой отображаются объекты, соответствующие сортам фруктового мороженого. Таблица данных имеет наименование "Сорта фруктового мороженого", которое отображается на соответствующей закладке (1). Таблица имеет пять строк (2), соответствующих пяти сортам фруктового мороженого. Выделенной в настоящее время является первая строка. Таблица имеет пять колонок, соответствующих свойствам учитываемых сортов мороженого. Каждая колонка имеет заголовок (4), отражающий отображаемое в этой колонке свойство. Активной в настоящее время является первая колонка. Активным элементом данных (3) является ячейка, расположенная в первой строке в первом столбце. На рисунке активная строка и активный элемент данных выделяются оттенками синего цвета. Цвета, применяемые для выделения элементов данных, зависят от локальных настроек операционной системы Windows (стилей) на компьютере пользователя. Под заголовком каждой колонки расположена строка фильтра (5). При помощи ввода в этой строке условия отбора или выбора значений из выпадающего списка можно осуществлять фильтрацию отображаемых в таблице данных. Если отображаемые данные не помещаются в окно по ширине, то активной становится горизонтальная полоса прокрутки (7). С ее помощью можно пролистывать колонки таблицы вправо и влево. Если данные не помещаются в окно по вертикали, то активной становится вертикальная полоса прокрутки (8). С ее помощью можно пролистывать записи об объектах вверх и вниз. При щелчке правой кнопкой мыши на полосе прокрутки (если она активна) доступны действия по быстрой прокрутке содержимого таблицы. При щелчке правой кнопкой мыши в области таблицы данных отображается контекстное меню. Контекстное меню отображает список действий, доступных над объектами, отображаемыми в таблице данных. Вызываемые действия выполняются для тех объектов, которые являются выделенными в таблице данных. Если ни одного объекта не выделено, некоторые действия контекстного меню могут быть недоступны. Набор действий, отображаемых в контекстном меню различен в разных таблицах данных.
|
2.3.2.1. Иерархические таблицы данных |
Если отображаемые в таблице данные имеют иерархическую структуру (т.е. присутствует "вхождение" одних объектов в другие), то в таблице данных объекты могут отображаться в виде "дерева". На рисунке представлена таблица данных, отображающая периоды обучения студентов. Эти данные имеют иерархическую структуру, которая отражает вхождение учебных модулей в состав семестров, а семестров в состав учебных годов. В первой колонке иерархической таблицы данных слева от элементов данных, имеющих подчиненные элементы, отображаются значки или . При щелчке мышью по значку отображаются подчиненные объекты. Значок при этом превращается в значок . При щелчке мышью по значку подчиненные объекты скрываются и значок превращается в . На рисунке для объектов "Учебный год 2005-2006" и его подчиненных объектов "I семестр" и "II семестр" подчиненные объекты отображены. Щелчком по значку подчиненные объекты можно скрыть. Для объектов "I семестр" и "II семестр" учебного года 2006-2007 подчиненные объекты скрыты. Щелчком по значку их можно отобразить. При горизонтальном пролистывании таблицы данных вправо или влево "дерево" объектов всегда отображается слева от самого левого столбца. В иерархических таблицах данных доступны дополнительные действия по управлению отображением и выбору объектов, которые описаны в разделе 4.7.1. |
2.3.3. Выбор объектов в таблице данных |
Выбор одного объекта в таблице данных может осуществляться либо щелчком мышью в соответствующей строке, либо при помощи стрелок ("вверх" и "вниз") на клавиатуре. Выбор активной колонки и активного элемента данных также может производиться щелчком мышью или при помощи стрелок ("вправо" и "влево") на клавиатуре. В таблице данных можно также осуществлять произвольный выбор нескольких объектов путем установки флажка в строке, отображающей объект. Установка или снятие флажка производится при помощи щелчка мышью. При выборе нескольких объектов в главной таблице в подчиненной таблице будут отображены записи, соответствующие подчиненным объектам, отобранным для ВСЕХ объектов, выбранных в главной таблице. На рисунке представлена таблица данных "Учащиеся", имеющая ряд подчиненных таблиц. На рисунке открыта подчиненная таблица "Родственники и контактные лица". В таблице данных "Учащиеся" путем установки флажка произвольным образом выбраны три учащихся с фамилиями Матвеева, Зимогляд и Анчевский. При этом в подчиненной таблице "Родственники и контактные лица" отображены родители всех троих учащихся. При выборе объектов путем простановки флажков необходимо осуществлять щелчок мышью именно на флажке. Если выполнить щелчок мышью в любой другом месте записи, ранее установленные флажки будут сняты, и выбранной станет одна эта запись. Для быстроты и удобства выбора объектов доступны дополнительные возможности:
При выборе объектов изменяется информация, отображаемая Инспектором объектов. Если выбран один объект, то Инспектор объектов отображает и позволяет редактировать все доступные пользователю свойства этого объекта. Если выбрано несколько объектов, отображение и редактирование свойств Инспектором объектов происходит по правилам, описанным в разделе 5 "Работа с Инспектором объектов". При выполнении действий над объектами выбранное действие будет выполнено для всех выбранных объектов. Если не выбрано ни одного объекта, некоторые действия могут быть недоступны. При одновременном выборе большого числа объектов быстродействие системы может снижаться. При необходимости работы с большой выборкой объектов лучше воспользоваться возможностью фильтрации данных. |
2.3.4. Изменение порядка отображения колонок |
Порядок отображения колонок может быть изменен путем "перетаскивания" их заголовков. Для того чтобы переместить колонку правее или левее, подведите указатель мыши к заголовку колонки, нажмите левую кнопку мыши и, не отпуская ее, перетащите заголовок колонки вправо или влево. После того, как Вы отпустите кнопку мыши, порядок отображения колонок изменится. На рисунке изображено перетаскивание заголовка колонки "Вид упаковки" в таблице данных "Сорта мороженого". После того, как кнопка мыши будет отпущена, колонка "Вид упаковки" станет третьей слева, а колонка "Число продаж" второй. |
2.3.5. Скрытие и отображение колонок |
Любая из видимых в таблице данных колонок может быть скрыта. Для этого необходимо выделить любой элемент данных в колонке, щелчком правой кнопкой мыши открыть контекстное меню и в нем в подменю "колонка" выбрать действие "Скрыть эту колонку". На рисунке показано как скрыть колонку "Вид упаковки" в таблице данных "Сорта мороженого". Описанным выше образом можно скрыть любое число колонок таблицы данных кроме последней. Если в таблице данных осталась одна колонка, то действие "Скрыть эту колонку" будет недоступно. Для отображения скрытых ранее колонок таблицы данных необходимо воспользоваться действием "Показать скрытые колонки" в подменю "колонка" контекстного меню. (На рис. 12. действие располагается ниже действия "Скрыть эту колонку"). Если ни одной колонки таблицы данных не скрыто, то действие "Показать скрытые колонки" будет недоступно. Действия, расположенные в подменю "колонка" доступны также на панели инструментов. |
2.3.6. Сортировка данных в таблицах |
Отображаемые в таблице данные могут быть отсортированы по возрастанию или по убыванию значений свойств, отображаемых в одной или нескольких колонках. Для сортировки данных по одной колонке необходимо выполнить щелчок мышью не ее заголовке. Данные будут отсортированы по возрастанию значения в этой колонке. Если щелкнуть мышью по заголовку колонки еще раз, то данные будут отсортированы по убыванию значения в этой колонке. В заголовке конке появится стрелочка, отображающая порядок сортировки (направленная вверх в случае сортировки по возрастанию и вниз в случае сортировки по убыванию). Если выполнить щелчок мышью по заголовку другой колонки, то данные будут отсортированы по значению в новой колонке. На рисунке данные в таблице данных "Учащиеся" отсортированы по значению в колонке "Фамилия" по возрастанию. В заголовке колонки "Фамилия" отображается направленная вверх стрелочка. Для сортировки данных по значениям в нескольких колонках необходимо выполнить щелчок мышью на заголовке первой колонки, затем, удерживая клавишу Ctrl, выполнить щелчок по заголовку второй колонки и т.д. При этом в заголовках колонок будут отображаться стрелочки, соответствующие направлению сортировки и цифры, соответствующие порядку колонок в сортировке. На рисунке представлен пример сортировки данных таблицы данных "Учащиеся" по региону (по возрастанию), затем по полу (по убыванию) и затем по фамилии (по возрастанию). В заголовках колонок отображены соответствующие стрелочки с цифрами 1, 2 и 3. В иерархических таблицах данные сортируются в пределах каждого уровня иерархии. На рисунке данные в иерархической таблице данных "Направления и специальности" отсортированы по колонке "Наименование" по возрастанию. |
2.3.7. Группировка данных в таблицах |
Данные в таблице данных могут быть сгруппированы по значениям свойств, отображаемым в одной или в нескольких колонках. Для осуществления группировки по значению в одной из колонок необходимо выделить любой элемент данных в этой колонке. Затем щелчком правой кнопки мыши открыть контекстное меню и в нем в подменю "колонка" выбрать действие "Группировать по этой колонке". На рисунке показано, как при помощи действия в контекстном меню осуществляется группировка данных в таблице данных "Все продажи" по значению в колонке "Представительство". При отображении данных в сгруппированном виде для каждой группы будет отображен заголовок на более темном фоне. В заголовке группы будут отображены наименование и значение свойства, по которому осуществлена группировка, а слева от наименования будет расположен значок или . При нажатии на значок можно скрывать объекты группы (для группы будет отображен только ее заголовок). Значок при этом изменится на . При нажатии на значок объекты, входящие в группу, будут снова отображены. На рисунке данные в таблице данных "Все продажи" сгруппированы по значению в колонке "Представительство". Группы объектов, соответствующие представительствам ЗАО "Айс девелопмент", ЗАО "Фрост интернешнл" и ООО "Заморозь соседа", раскрыты. Группы, соответствующие ОАО "Красный нос" и ООО "Дед мороз и лето", свернуты. Данные могут группироваться и по нескольким колонкам. Для этого необходимо повторить описанные выше действия для всех колонок, которые должны быть включены в группировку. На рисунке представлен пример группировки данных, отображаемых в таблице данных "Все продажи" по колонкам "Регион" и "Сорт мороженого". Для снятия группировки и отображения данных в стандартном виде необходимо воспользоваться действием "Очистить группировку", которое также доступно в контекстном меню в подменю "колонка" (на рисунке расположено в выпадающем меню ниже действия "Группировать по этой колонке"). Действия, расположенные в подменю "колонка", доступны также на панели инструментов. |
2.3.8. Фильтрация данных в таблицах | ||||||||||||||||
Фильтрация данных (отображение только тех данных, которые удовлетворяют некоторому условию) осуществляется по значениям, отображаемым в колонках, при помощи строки фильтра. Строка фильтра расположена ниже заголовка колонки. Фильтрация данных может осуществляться двумя способами:
При нажатии кнопки в строке фильтра отображается выпадающий список значений, которые могут быть выбраны. Перечень отображаемых значений зависит от типа данных, отображаемых в колонке. В первой строке списка расположен пункт "(Все)". При выборе этого пункта фильтрация данных по этой колонке не осуществляется. При выборе одного из доступных значений в таблице данных будут отображены только те объекты, для которых значение свойства, отображаемого в данной колонке, равно выбранному. После осуществления фильтрации в строке фильтра будет отображено выбранное значение. Выбор значений можно осуществить в нескольких колонках. В этом случае условия отбора по каждой колонке будут объединены логическим "И". На рисунке показано, как осуществить фильтрацию данных по значению "эскимо" в колонке "Вид упаковки". После выполнения фильтрации эта таблица данных будет выглядеть следующим образом: В таблице данных на рисунке отображены записи только о тех сортах мороженого, которые продаются в виде эскимо. Значение "эскимо" отображено в строке фильтра в колонке "Вид упаковки". Для фильтрации данных по более сложному условию можно воспользоваться вторым способом - записью условия фильтрации в строке фильтра. Условие фильтрации записывается по следующим правилам:
После ввода в строке фильтр требуемого условия необходимо нажать клавишу Enter. В таблице данных "Все продажи" на рисунке отобраны только те записи, для которых верно следующее: Продажи осуществлены в регионе "Москва" или "Тверская область"; при этом наименование проданного сорта мороженого начинается с "Б"; при этом число продаж данного сорта больше 100. Сделать заключение о том, что отображаемые в таблице данные отфильтрованы, можно по наличию в строке фильтра записи отличной от "(Все)". Снять фильтрацию данных можно одним из двух способов:
|
2.3.9. Отображение итоговых значений (агрегатов) по колонкам |
По любой из колонок таблицы данных может быть рассчитано и отображено итоговое значение (агрегат). В зависимости от типа отображаемого в колонке свойства могут быть вычислены следующие агрегаты:
Для отображения агрегата по одной из колонок необходимо выделить элемент данных в этой колонке, при помощи щелчка правой кнопкой мыши отобразить контекстное меню и в нем в подменю "колонка" выбрать действие, соответствующее нужному агрегату. После выполнения этого действия таблица данных будет выглядеть следующим образом: На рисунке в нижней части таблицы данных отображена строка на светло-желтом фоне, в которой в колонке "Число продаж" показана сумма числа всех продаж, отображаемых в таблице. Агрегат может быть вычислен и показан по любой из колонок. Если данные в таблице отфильтрованы, то агрегат будет рассчитан только по тем записям, которые отобраны по условию фильтрации. Если данные в таблице сгруппированы, то агрегаты будут рассчитаны как для всех отображаемых в таблице данных, так и отдельно для каждой группы. На рисунке данные о продажах сгруппированы по региону. Суммы числа продаж и среднее значение выручки отображены как для каждого региона (в строках на ярко-желтом фоне), так и для всех продаж в целом (в строке на светло-желтом фоне внизу таблицы). Если свернуть группы, то можно просматривать только итоговые значения агрегатов для групп и для всех объектов в целом. Агрегаты при этом будут видны только в случае, если они отображаются правее надписи с именем и значением параметра группировки. |
2.3.10. Редактирование данных в таблице |
В таблице данных может редактироваться значение одного свойства одного объекта. Для того чтобы изменить отображаемое в таблице данных значение необходимо выделить требуемый элемент данных щелчком мышью или клавишами со стрелками на клавиатуре, после чего перевести элемент данных в режим редактирования. Это можно сделать одним из двух способов:
После перевода элемента данных в режим редактирования отображаемый в нем текст будет выделен. Текст может быть отображен на белом или на сером фоне. Справа от текста могут появиться кнопки. На рисунке элемент данных в пятой сверху строке в первой колонке (текст "Белоснежка") переведен в режим редактирования. Отображение элемента данных в режиме редактирования зависит от типа отображаемого свойства, доступности свойства для изменения и допустимости установленного значения.
|
2.3.11. Выполнение действий над объектами |
Все действия, которые могут быть произведены над объектами, могут быть выполнены одним из трех способов:
При помощи действий производится добавление, удаление объектов, запуск различных процедур, выполняемых над данными, формирование отчетов. Перечень всех действий, доступных в текущей таблице данных расположен в контекстном меню, которое отображается при нажатии правой кнопки мыши в зоне таблицы данных. Некоторые из действий выполняются для выбранных объектов (одного или нескольких), например, действие "Удалить". Для выполнения других действий выбор конкретного объекта не нужен, например, для действия "Добавить". Выбор действия в контекстном меню может производиться как при помощи мыши, так и при помощи стрелок на клавиатуре. Если для действия установлены " горячие клавиши ", то из обозначения можно будет увидеть в правой части пункта контекстного меню. Действия могут вызываться как при нажатии одной клавиши, так и при помощи сочетания клавиш. В некоторых пунктах контекстного меню может быть расположена стрелка . При выборе такого пункта никакого действия не выполняется, а открывается " подменю ", содержащее другие действия. На рисунке изображено контекстное меню, отображающее все действия, доступные над объектом, соответствующим студенту Алехиной Елене Михайловне. Действиям "Добавить студента-специалиста", "Удалить" и "Обновить" соответствуют "горячие клавиши". Пункты меню "Перемещения", "Колонка", "Выбранные" имеют подменю. На рисунке открыто подменю пункта "Перемещения". Для некоторых действий могут быть установлены изображения-иконки. В этом случае иконки отображаются на панели инструментов (подробнее в разделе 4.13. "Работа с панелью инструментов"). Если выполнение процедуры или отчета требует задания параметров, то при вызове действия отобразится форма задания параметров. Для выполнения действия необходимо заполнить поля формы и нажать кнопку OK (подробнее в разделе 6 "Работа с формой задания параметров"). Перед выполнением некоторых действий может быть отображено предупреждение. Например, перед удалением объекта может отображаться следующее окно: Если в таком окне нажать кнопку Да, то действие будет выполнено. Если нажать кнопку Нет, то действие будет отменено. |
2.3.12. Работа с панелью инструментов |
На панели инструментов отображаются иконки, соответствующие доступным пользователю действиям и формам. Иконки могут иметь подписи, соответствующие наименованием действий или форм. Вызов действий или переключение между активными формами осуществляется при помощи щелчка мышью на одной из иконок. Если иконок много и они не помещаются на панели инструментов по ширине, то слева или справа отображаются кнопки прокрутки. Для прокрутки содержимого панели инструментов достаточно подвести указатель мыши к кнопке прокрутки. На рисунке представлен пример панели инструментов. Иконки с подписями "Создать", "Удалить", "Колонка", "Выбранные", "Перенос в Excel" соответствуют доступным в текущей таблице данных действиям. Иконки с надписями "Системная форма" и "Продажи мороженого" соответствуют доступным пользователю формам. Справа от иконки "Продажи мороженого" расположена кнопка прокрутки. Подведя указатель мыши к этой кнопке, можно увидеть иконки, расположенные правее и не поместившиеся на панели инструментов. Некоторые кнопки панели инструментов могут иметь выпадающие кнопки. Выпадающие кнопки соответствуют пунктам подменю контекстного меню. Справа от кнопок, имеющих выпадающие кнопки, расположена направленная вниз стрелочка. Если нажать мышью на эту стрелочку, то отобразится панель с выпадающими кнопками. На рисунке кнопки "Колонка" и "Выбранные" имеют выпадающие кнопки. Как и в контекстном меню, на панели инструментов некоторые кнопки могут быть недоступны. Доступность кнопки зависит от того, какие объекты в настоящий момент выделены, и от применимости действия к выделенным объектам. |
2.3.13. Стандартные действия, доступные в любых таблицах данных |
Ряд стандартных действий, доступных объектов любого типа, может быть вызван из любой таблицы данных. Разработчиком конкретной прикладной системы некоторые из перечисленных в данном разделе действий могут быть скрыты. Также перечень доступных стандартных действий зависит от прав доступа конкретного пользователя. Взаимное расположение, наименования и доступность стандартных действий могут зависеть от реализации прикладной системы. В следующих разделах описаны все стандартные действия, реализованные средствами платформы. |
2.3.13.1. Копирование и вставка объектов |
Объекты, отображаемые в таблице данных, можно копировать и вставлять. Вставлять объекты можно как в ту же таблицу данных, из которой они были скопированы, так и в другую таблицу данных, отображающую объекты того же типа. Для этого необходимо выполнить следующие действия:
При копировании и вставке происходит создание копии объекта. Все свойства нового объекта, кроме свойства "Имя" (или замещающего его свойства), будут такими же, как у первичного объекта. Свойство имя будет равно строке, составленной из слова "Копия " и имени первичного объекта. После вставки объекта значение свойства "Имя" можно изменить. Действия "Копировать" и "Вставить" имеют соответствующие иконки на панели инструментов: |
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" имеет соответствующую иконку на панели инструментов: |
2.3.13.5. Экспорт данных |
Отображаемые в таблицах данных объекты могут быть экспортированы в виде xml-документа. Для того, чтобы осуществить экспорт объектов, необходимо выполнить следующее:
|
2.3.13.6. Обновление данных таблицы |
После выполнения действий над различными объектами, хранящимися в системе, их новое состояние может сразу не отобразиться в таблице данных. Для того чтобы получить из базы данных последние актуальные данные необходимо воспользоваться действием "Обновить", которое доступно в контекстном меню, при помощи иконки на панели инструментов, а также может быть доступно при нажатии клавиши F5. Действие "Обновить" имеет соответствующую иконку на панели инструментов: |
2.3.13.7. Доступ к настройкам системы |
При наличии соответствующих прав доступа Вы можете просматривать и изменять настройки системы. Доступ к меню настроек осуществляется при помощи действия "Настройки", которое может быть вызвано из контекстного меню или при помощи иконки на панели инструментов. При вызове этого действия отобразится форма задания настроек. Эта форма аналогична форме задания параметров (см. раздел 6 "Работа с формой задания параметров"). Если Вы имеете права администратора системы, то форма задания настроек, кроме кнопок OK и Отмена, будет иметь кнопку "По умолчанию". При нажатии этой кнопки значения, установленные в полях формы станут значениями настроек по умолчанию. Если в системе нет доступных для текущего пользователя настроек, то при вызове действия "Настройки" отобразится окно: Действие "Настройки" имеет соответствующую иконку на панели инструментов: |
2.3.13.8. Дополнительные действия, доступные в иерархических таблицах данных |
В иерархических таблицах данных дополнительно доступны действия, позволяющие управлять раскрытием и свертыванием элементов иерархии. Эти действия расположены в подменю "Дерево". Иконка "Дерево" на панели инструментов имеет выпадающие кнопки: При помощи этих действий можно управлять отображением дерева иерархически организованных объектов следующим образом:
|
2.4. Работа с Инспектором объектов |
2.4.1. Отображение свойств Инспектором объектов |
Инспектор объектов предназначен для просмотра и редактирования свойств одного или нескольких объектов, выбранных в активной таблице данных. Инспектор объектов имеет две колонки. В левой колонке отображаются наименования свойств, в правой колонке отображаются значения свойств. Набор отображаемых свойств и их значений зависит от того, сколько объектов каких типов выбрано в текущей таблице данных (подробнее о выборе объектов см. раздел 4.3. "Выбор объектов в таблице данных"). Свойства выбранных объектов отображаются Инспектором объектов по следующим правилам:
На рисунке представлен пример таблицы данных, отображающей учитываемые в системе сорта мороженого. Среди сортов мороженого есть как обычные сорта, так и сорта фруктового мороженого, дополнительно обладающие свойством "Фрукт". В таблице данных выделен один объект, соответствующий сорту фруктового мороженого "Тропический рай". При этом Инспектор объектов отображает все свойства данного объекта (в том числе свойство "Фрукт").
На рисунке в той же таблице данных выбрано два объекта: сорт мороженого "Тропический рай" (фруктовое мороженое) и сорт "Белый Бим черное ухо" (обычное мороженое). При этом в Инспекторе объектов отображаются только те свойства, которые являются общими для выделенных объектов (свойство "Фрукт" не отображается). Значения свойств "Вид упаковки" и "Вес" для выбранных объектов одинаковы, поэтому их значения отображены в правой колонке Инспектора объектов. Значения остальных свойств для данных объектов различны, поэтому для этих свойств отображаются пустые значения. Если изменить одно из свойств в Инспекторе объектов, то новое значение будет установлено как для сорта мороженого "Тропический рай", так и для сорта мороженого "Белый Бим черное ухо". Порядок отображения свойств в Инспекторе объектов устанавливается разработчиком прикладной системы. Также разработчиком прикладной системы может быть установлено отнесение свойств к категориям. В этом случае свойства могут отображаться сгруппированными по категориям. Слева от наименования каждой категории будет отображен значок или . Нажатием мышью на значок свойства, входящие в категорию, можно свернуть, нажатием на значок их можно снова отобразить. На рисунке представлен пример отображения Инспектором объектов свойств объекта, соответствующего дисциплине учебного плана студентов. Свойства, отнесенные к категориям "Формы текущего контроля" и "Распределение аудиторных часов по модулям", свернуты. Свойства, отнесенные к категории "Учебные часы" раскрыты. В связи с тем, что выбор свойств объектов для отображения, получение и сравнение их значений происходит по специальному алгоритму, в случае одновременного выбора большого числа объектов скорость работы Инспектора объектов может снижаться. Если на вычисление значения общего свойства группы объектов требуется значительное время, то такое свойство может отображаться как свойство с отложенным вычислением. Для такого свойства в правой колонке вместо значения может отображаться строка (...). При активизации этого свойства справа отобразится кнопка со знаком вопроса . Если нажать на эту кнопку, то значение свойства будет определено и отображено. |
2.4.2. Управление положением Инспектора объектов на экране и порядком отображения свойств |
Инспектор объектов отображается в отдельном окне. Это окно можно перетаскивать по экрану за заголовок, изменять его размеры стандартным для операционной системы Windows образом. На панели инструментов всегда присутствует иконка Инспектора объектов, при нажатии которой можно отобразить окно Инспектора (если оно не видимо) и сделать его активным: При нажатии правой кнопки мыши в левом столбце Инспектора объектов или в свободном нижнем поле доступно контекстное меню Инспектора объектов. При помощи действий, расположенных в этом меню можно управлять режимом работы окна Инспектора и порядком отображения свойств. Выбор одного из пунктов контекстного меню переводит Инспектор объектов в новый режим работы. После этого рядом с пунктом меню отображается галочка или точка . При повторном выборе помеченного пункта меню соответствующий режим работы отменяется и отметка снимается. Доступные пункты контекстного меню позволяют устанавливать следующие режимы работы Инспектора объектов.
|
2.4.3. Редактирование значений свойств при помощи Инспектора объектов |
При помощи Инспектора объектов удобно изменять значения свойств одного или одновременно нескольких выбранных объектов (о выборе объектов см. раздел 4.3. "Выбор объектов в таблице данных"). Одно из свойств, отображаемых в Инспекторе объектов, всегда является активным. Активное значение выделяется в Инспекторе объектов рамкой, его значение отображается в режиме редактирования. Отображение свойств в режиме редактирования и способы изменения значений свойств аналогичны редактированию данных в таблице данных (см. раздел 4.11. "Редактирование данных в таблицах"). Отличие работы Инспектора объектов заключается в том, что с его помощью можно изменять значение свойства сразу нескольких выбранных объектов. |
2.5. Работа с формой задания параметров |
Форма задания параметров используется для организации диалога с пользователем по заданию параметров, необходимых для выполнения метода или формирования отчета. Форма задания параметров открывается при вызове действия, для выполнения которого необходимо задать параметры. Форма задания параметров представляет собой форму, содержащую поля различного вида. В правом нижнем углу формы расположены кнопки ОК и Отмена. Слева или сверху от каждого поля расположено его наименование. Наименования поля отражает, какие данные должны быть в него введены. Поля формы объединяются в группы. Группы полей могут располагаться в столбцах или на закладках. На рисунке выше поля формы расположены в двух столбцах. Если поля расположены на закладках, то в верхней части формы отображаются заголовки закладок с их наименованиями. На рисунке представлена та же форма, что и на рисунке выше, но с расположением параметров на закладках. Порядок отображения полей на форме, а также способ их отображения (в столбцах или на закладках) задается разработчиком прикладной системы. Переход от одного поля к другому может осуществляться либо щелчком мышью на новом поле, либо при помощи клавиши Tab на клавиатуре. Переключаться между закладками можно путем нажатия мышью ни их заголовок. Для выполнения действия, требующего задания параметров, необходимо заполнить все обязательные поля формы. После установления допустимых значений все поля формы должны приобрести белый фон. При этом условии кнопка OK станет доступной. После нажатия кнопки OK будет выполнен вызываемый метод или сформирован отчет. Если Вы хотите отменить выполнение действия, нажмите кнопку Отмена. Поля формы могут иметь белый, зеленый или серый фон, а также могут иметь различный внешний вид. Цвет фона зависит от доступности для изменения и допустимости введенного в поле значения. Внешний вид поля зависит от типа данных, которые должны быть в него введены. Возможны следующие варианты внешнего вида полей и способ установления в них значений:
При работе с формой задания параметров рекомендуется устанавливать в полях значения в порядке их следования на форме. Разработчиком прикладной системы может быть установлена зависимость между значениями полей. В этом случае при изменении значения в одном из полей, в других полях значения также могут автоматически измениться. Допустимость значений в одних полях может зависеть от того, какие значения установлены в других полях. Также необходимо помнить о том, что кнопка ОК на форме задания параметров станет доступной только тогда, когда во всех полях будут установлены допустимые значения. |
2.6. Формирование отчетов Microsoft Excel |
Формирование отчетов, выгружаемых в MS Excel происходит при помощи вызова действий в таблицах данных (подробнее о вызове действий см. раздел 4.12 "Выполнение действий над объектами"). При вызове отчета на выполнение может отобразиться форма задания параметров отчета. Поля этой формы необходимо заполнить, после чего нажать кнопку ОК (подробнее о работе с формой задания параметров см. раздел 6. "Работа с формой задания параметров"). Отчеты, выгружаемые в MS Excel, как правило, имеют иконки на панели инструментов, характерные для рабочих книг Excel: При запуске отчета на исполнение происходит создание рабочей книги Excel, в которую передаются данные, хранящиеся в базе данных. Рабочая книга может содержать данные, диаграммы, интерактивные элементы управления, и проч.. Далее средствами MS Excel могут осуществляться любые доступные действия с рабочей книгой. Отчеты в MS Excel используются для вывода на печать документов и стандартных форм отчетности. Шаблоны отчетов создаются разработчиками прикладной системы. Полученный в результате формирования отчета файл MS Excel может далее использоваться для дальнейшей работы с данными, может быть распечатан, сохранен, отправлен по электронной почте и т.п. |
2.7. Формирование отчетов в виде HTML-документов |
В целях публикации отчетной информации в Internet средствами системы могут формироваться отчеты в виде HTML-документов. Формирование таких отчетов происходит путем вызова действий в таблицах данных (подробнее о вызове действий см. раздел 4.12 "Выполнение действий над объектами"). При вызове отчета на выполнение может отобразиться форма задания параметров отчета. Поля этой формы необходимо заполнить, после чего нажать кнопку ОК (подробнее о работе с формой задания параметров см. раздел 6. "Работа с формой задания параметров"). Отчеты, формируемые в виде HTML-документов, как правило имеют иконки на панели инструментов, характерные для приложения MS Internet Explorer: В результате работы отчета создается HTML-документ, который может содержать таблицы с данными, рисунки, ссылки и проч. Сформированный документ показывается при помощи приложения Internet Explorer. Полученный html-файл может быть опубликован в Internet, сохранен, распечатан и т.д. Сформированный html-документ сохраняет связь в базой данных. Если в ранее открытом документе выполнить процедуру обновления, по документ отобразит последнюю версию хранящихся на сервере БД данных. |
2.8. Взаимодействие с разработчиком в случае ошибок, проблем, вопросов по работе системы |
В ситуациях, когда в работе системы происходят ошибки, когда система ведет себя неожиданным для пользователя образом, наблюдаются проблемы с быстродействием или другими аспектами работы системы, если у пользователей возникают вопросы, не освещенные в Руководстве пользователя, возникает необходимость обратиться к разработчику. Для того, чтобы разработчик мог решить проблему или ответить на вопрос быстро, полно и компетентно, ему нужно предоставить информацию о среде работе системы, о решаемых пользователем задачах, последовательности действий пользователя, приведших к проблемной ситуации. Общими принципами сбора информации для обращения к разработчику должны быть:
Для сбора информации, необходимой разработчику для решения проблем, система предоставляет ряд средств: Приложение Отладочный монитор, возможность получения файла, содержащего информацию об ошибке, также ниже приведены рекомендации по получению информации о третесторонних приложениях. |
2.8.1. Приложение Отладочный монитор |
Приложение Отладочный монитор (DebugView.exe) устанавливается при установке платформы в любой конфигурации, предусмотренной по умолчанию, включая конфигурацию "Рабочее место пользователя". Открыть приложение можно при помощи иконки: Когда приложение Отладочный монитор запущено, приложение Обозреватель данных выводит в него поток сообщений о действиях и событиях, происходящих в системе. В Отладочный монитор попадают все sql-запросы, направляемые с рабочего места пользователя на сервер баз данных (в случае удаленного подключения - html-запросы, направляемые на сервер приложений), информационные сообщения, предупреждения, отладочная информация, сообщения об ошибках и прочие данные. Для того, чтобы собрать и передать разработчику информацию об ошибке или проблемной ситуации при помощи Отладочного монитора, нужно выполнить следующие действия:
После получения информации, состав которой описан в пункте 5, разработчик может запросить дополнительную информацию о проблеме. |
2.8.2. Получение файла, содержащего информацию об ошибке |
В ходе работы с системой могут отображаться специальные окна с информацией об ошибках. Эти окна могут быть двух видов:
Сохранение информации для направления разработчику. Информация, которая поможет разработчику решить проблему, не отображается в самом окне, поэтому направлять разработчику скриншот именно этого окна не имеет смысла. Для получения необходимой для разработчика информации в окнах с сообщением об ошибке обоих видов расположены ссылки "Показать информацию для службы поддержки" или "Сформировать файл для службы поддержки". По ссылке Показать информацию для службы поддержки информация отображается в том же окне. Весь текст изначально выделен, его можно сразу скопировать и вставить в текстовый файл, в тело письма и т.д. Данный текст содержит сам текст ошибки, а также информацию об операционной системе пользователя и ее версии, загруженных модулях, переменных окружения и проч. При помощи ссылки Сформировать файл для службы поддержки можно собрать в удобном виде наиболее полную и полезную для разработчика информацию. После нажатия на ссылку будет предложен диалог сохранения файла. По умолчанию файлу будет дано имя ExceptionInfo.err. Это имя можно изменить, но расширение необходимо файла сохранить. После выбора места сохранения и имени файла и нажатия кнопки Сохранить, система отобразить предупреждение: К данному предупреждению нужно отнестись ответственно - отправлять полученный файл только на адреса службы поддержки системы в вашей организации или на официальный контактный адрес разработчика (если вы взаимодействуете с разработчиком напрямую). После отправки этот файл необходимо удалить. Предоставление разработчику информации в виде.err-файла - это самый удобный и надежный вариант взаимодействия, который даст возможность разработчику решить проблему или ответить на вопрос наиболее эффективным и быстрым образом. Данный файл содержит все виды информации, которые могут быть собраны другими способами:
При отправке файла разработчику дополнительно нужно описать последовательность действий, приведших к ошибке или ситуации, вызывающей вопросы. После получения файла и дополнительной информации, разработчик может попросить предоставить дополнительную информацию о проблемной ситуации, о конфигурации рабочего места пользователя, прочем установленном на рабочем месте ПО и проч. Если вы хотите обратиться к разработчику по поводу ситуации, которая не сопровождается отображением окна с ошибкой, то.err-файл можно получить следующим образом: нужно кликнуть левой кнопкой мыши по иконке с мельницей в левом углу заголовка окна текущей формы и из выпадающего меню выбрать пункт Сохранить файл для службы поддержки. |
2.8.3. Получение информации о третесторонних приложениях |
В случае, если ошибка произошла при взаимодействии системы с третьесторонним приложением, например, при выполнении отчета MS Excel, MS Word, pdf, при работе web-приложений системы через интернет-браузер, разработчику, в дополнение к файлу с информацией об ошибке, понадобится информация о версии третьестороннего приложения, при взаимодействии с которым произошла ошибка. Получить информацию о версии приложения можно, как правило, в окне О программе ("About box"), которое в большинстве программных продуктов представлено в пункте меню Справка. Разработчику в составе информационных материалов нужно отправить скриншот этого окна. В продуктах семейства Microsoft Office вызвать окно О программе можно разными способами в зависимости от версии MS Office. В программных продуктах версий до 2003 включительно это окно доступно в меню Справка / О программе. В программных продуктах версий 2007 и выше вызвать это окно можно следующим образом:
Окно О программе в случае MS Excel выглядит следующим образом: В программе Acrobat Reader окно О программе можно вызвать из меню Справка / О программе : В интернет-браузерах окно "О программе" (О Google Chrome, О FireFox, О Internet Explorer) также можно вызвать из меню Справка. Строка меню в интернет-браузерах часто бывает по умолчанию скрыта. Для того, чтобы ее отобразить, нужно нажать клавишу Alt на клавиатуре. |
3. Руководство пользователя построителя запросов |
4. Руководство администратора |
4.1. Установка программного обеспечения СУБД | ||||||||||||||||||
Прежде, чем устанавливать программноге обеспечение "Мельница данных" необходимо установить и настроить программное обеспечение СУБД. Для конфигурирования сервера БД необходимо последовать советам раздела "Конфигурирование сервера". В этом разделе описаны шаги, которые необходимо предпринять для установки сервера "с нуля". Если сервер БД у вас уже установлен и настроен, то использовать рекомендации этого раздела нет необходимости. Раздел описывает установку сервера БД минимальной поддерживаемой версии в минимально необходимой для работы "Мельницы данных" конфигурации. Если вы собираетесь использовать сервер БД для более широкого круга задач, то пользуйтесь руководствами по соответствующим СУБД.
На каждой рабочей станции должно быть установлено и настроено программное обеспечение клиентской части СУБД. Это, как правило, некий набор библиотек и компонентов, наличие которых необходимо для соединения с сервером БД. Для обеспечения рабочей станции этими компонентами необходимо последовать советам раздела Конфигурирование клиента. В этом разделе описаны шаги, которые необходимо предпринять для установки клиентской части СУБД "с нуля". Если клиентская часть СУБД у вас уже установлена и настроена, то использовать рекомендации этого раздела нет необходимости. Раздел описывает установку клиентской части СУБД минимальной поддерживаемой версии в минимально необходимой для работы "Мельницы данных" конфигурации. В настоящий момент поддерживаемые СУБД приведены в таблице:
|
4.1.1. Конфигурирование сервера | ||||||
|
4.1.2. Конфигурирование клиента | ||||
|
4.2. Установка программного обеспечения платформы "Мельница данных" |
Для установки ПП "Мельница данных" необходимо запустить файл setup.exe, расположенный на поставляемом компакт диске. После запуска программы установки необходимо следовать указаниям мастера установки. Шаг 1: Выбор языка Шаг 2: Информация о версии устанавливаемого ПП Шаг3: Выбор каталога установки файлов ПП Шаг 4: Выбор файла лицензии Файл лицензии также расположен на поставляемом компакт-диске или высылается по электронной почте. В случае если не выбран никакой файл лицензий, то программа будет установлена в демонстрационном режиме. В последующем после получения файла лицензий необходимо будет переустановить ПП. Подробнее с лицензионным соглашением можно ознакомится в одноименном разделе настоящей документации. Шаг 5: Выбор компонентов для установки На данном шаге вам необходимо выбрать набор компонентов для установки на локальный компьютер. В зависимости от специфики использования рабочего места, на которое устанавливается ПО, необходимо выбрать тип установки. Предлагаемые типы установок:
Для каждого из типов установки по умолчанию устанавливается свой набор компонентов. Вы можете дополнительно отметить тот или иной необходимый вам компонент для установки. Для выбора будут отображены только те компоненты, которые влачены в указанном вами лицензионном файле. Полный перечень компонентов для установки:
Для некоторых из вышеперечисленных компонентов также можно выбрать состав устанавливаемого компонента. Описание назначений поставляемых компонент описано в разделе "Поставляемые компоненты ПП" настоящей документации. После указания всех параметров мастер установки скопирует файлы на локальный компьютер и создаст в меню программ папку с ярлыками к установленным компонентам: |
4.2.1. Поставляемые компоненты ПП "Мельница данных" | ||||||||||||
|
4.3. Создание и начальная инициализация базы данных | ||
Для создания БД необходимо вопрользоваться утилитой обслуживания базы данных, поставляемой в комплекте ПП. После запуска одноименного приложения откроется окно панели управления утилиты: После запуска одноименного приложения откроется окно панели управления утилиты: Для доступа к задачам необходимо заполнить параметры работы с базой данных:
После заполнения полей параметров можно приступать к созданию БД. Для создания новой базы данных необходимо воспользоваться задачей "Создать новую БД". После нажатия кнопки "Выполнить" будут выполнены команды отображенные в окне "Командная строка".
В окне "Вывод консольного приложения" будет отображен результат выполнения команд по созданию БД. В случае успешного выполнения всех необходимых команд, БД будет создана по указанному в параметрах месторасположению. После создания пустой БД необходимо наполнить ее системными объектами (метаданными) для последующей работы с ПП "Мельница данных". Для этого необходимо выполнить задачу "Синхронизировать базу данных". После нажатия кнопки "Выполнить" будет автоматически запущен отладочный монитор отображающий процесс наполнения БД необходимыми метаданными. Данный процесс может занять от одной до нескольких минут в зависимости от используемой СУБД и производительности сервера. (Обычно около минуты) По окончании процесса в окне "Вывод консольного приложения" будет отображен результат выполнения инициализации базы данных. Все действия по созданию и инициализации БД выполнены. БД готова к эксплуатации. |
4.4. Управление доступом пользователей |
После того, как база данных создана и инициализирована метаданными платформы, доступ к системе будет иметь один пользователь - администратор созданной БД. Добавление других пользователей, ролей пользователей и включение пользователей в роли выполняется в представлениях Пользователи и Роли в Системной форме. После начальной инициализации БД на вкладке Пользователи можно увидеть одного пользователя с именем, соответствующим логину администратора БД (Например, для FireBird пользователь SYSDBA), на вкладке Роли можно увидеть одну роль с наименованием Администраторы. На подчиненных вкладках этих представлений можно увидеть, что пользователь - администратор включен в роль Администраторы. Профиль пользователя формируется путем определения для него:
Формирование профиля происходит одинаково как для роли, так и для отдельного пользователя. Однако рекомендуется формировать профили для ролей, а не для отдельных пользователей. В этом случае при подключении к системе новых пользователей, изменении параметров доступа для существующего пользователя достаточно будет включить пользователя в одну из ролей, или исключить его из роли. Роли рекомендуется формировать содержательным образом на основе распределения обязанностей реальных пользователей, работающих с прикладным решением. |
4.4.1. Создание пользователей | ||
Создание пользователя системы включает в себя два этапа:
|
4.4.2. Создание ролей |
Создание ролей производится на вкладке Роли Системной формы при помощи действия Создать, вызываемого из контекстного меню. Имя и наименование роли могут быть любыми строками. Однако именовать роли по названиям соответствющих функциональных участков системы, например,
|
4.4.3. Включение пользователей в роли |
В роль могут включаться как пользователи, так и другие роли. Для добавления в роль нового члена роли нужно выбрать роль на вкладке Роли, отрыть подчиненную вкладку Члены роли и вызвать на ней действие Создать. Поля формы параметров заполняются следующим образом:
После включения пользователя в роль он получает права доступа ко всем визуальным группам и формам, а также к группам запретов, заданным для роли. |
4.4.4. Формирование перечня доступных визуальных групп | ||
Визуальные группы создаются разработчиком прикладного решения. Работа с визуальными группами ведется в Системной форме на вкладке Визуальные группы. Каждая визуальная группа содержит набор форм и также может быть снабжена иконкой. Визуальные группы отображаются на Консоли управления, которая показывается при запуске системы. Для каждой роли (или для отдельного пользователя) формируется перечень визуальных групп, которые будут ему доступны на Консоли управления. Если визуальных групп в прикладном решение не создано, или если пользователю не доступно ни одной визуальной группы, консоль управления не будет отображена. В этом случае при открытии системы пользователь увидит первую из доступных ему форм, которая открывается автоматически. Для добавления новой визуальной группы, доступной роли или пользователю, необходимо выбрать роль или пользователя на соответствующей вкладке (Роли или Пользователи), отрыть подчиненное представление Доступные визуальные группы и выполнить в нем действие Создать. В форме параметров нужно выбрать одну из существующих визуальных групп. Если необходимо дать доступ к нескольким визуальным группам, действие создания нужно повторить.
|
4.4.5. Формирование перечня доступных форм | ||
Формы создаются разработчиком прикладного решения. Работа с визуальными группами ведется в Системной форме на вкладке Формы. Каждая форма представляет собой набор представлений, связанных друг с другом определенным образом. Иконки всех форм, доступных пользователю, отображаются на Панели инструментов в верхней части экрана. Нажимая на одну из иконок форм, пользователь может переключаться между ними. Если форма входит в одну из доступных пользователю визуальных групп, она отобразится на консоли управления. В этом случае переключаться между формами пользователь сможет как на Панели инструментов, так и на Консоли управления. Для каждой роли (или для отдельного пользователя) формируется перечень форм, которые будут ему доступны на Консоли управления. При открытии системы пользователь видит первую из доступных ему форм, открываемую автоматически. Для добавления новой формы, доступной роли или пользователю, необходимо выбрать роль или пользователя на соответствующей вкладке (Роли или Пользователи), отрыть подчиненное представление Доступные формы и выполнить в нем действие Создать. В форме параметров нужно выбрать одну из существующих форм. Если необходимо дать доступ к нескольким формам, действие создания нужно повторить.
|
4.4.6. Формирование перечня групп запретов |
Группы запретов могут формироваться как разработчиком прикладного решения, так и администратором системы. Работа с группами запретов ведется на соответствующей вкладке Системной формы. В каждую группу запретов включаются запреты трех видов:
Запреты на класс и свойство могут даваться как только на запись, так и на чтение и запись объектов. Наличие запретов для определенной роли или пользователя приводит к тому, что пользователь не видит или не имеет прав на модификацю объетов определенных классов или отдельных их свойств. Запреты на подпрограммы выражаются в том, что для пользователя не отображаются действия, вызывающие ряд подпрограмм. |
4.5. Ключи командной строки утилиты обслуживания БД | ||||||||||||||||
Утилита обслуживания БД - консольное приложение. При запуске приложения оно сообщает о поддерживаемых режимах и ключах командной строки. Ключи указываются через пробел. Ключ должен начинаться символом "/". Для ключей, содержащих значения параметров, между ключем и значением должен быть пробел. Имена файлов и папок, содержащие пробелы, в командной строке должны быть заключены в кавычки. При работе с утилитой общее правило состоит в том, что первым параметром передается строка соединения с БД, вторым параметром необязательная команда. Остальные параметры и ключи указываются в зависимости от выбранной команды. Если работа утилиты завершилась успешно, то она возвращает код завершения 0. Если в процессе работы утилиты произошли ошибки, то код завершения будет равен 1. Если работа утилиты завершилась успешно, но были выданы предупреждения, то она возвращает код завершения 2. Поддерживаемые команды:
Далее будут рассмотрены подробности работы каждого из режимов. |
4.5.1. Перекачка данных | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Для осуществления перекачки данных необходимо:
Перекачка данных осуществляется в любом направлении. Ниже представлены варианты сочетания источников и приемников данных. В случае, если попытка использовать тот или иной оптимизационный механизм оказалась неудачной, производится стандартная перекачка.
Используемые параметры и ключи командной строки: Для перекачки данных используюется команда pump. В строке соединения указывается БД-приемник, кроме случая перекачки данных из БД в папку, файл или zip-архив. Для всех случаев кроме случая перекачки данных из БД в папку, файл или zip-архив командная строка содержит кляузу pump from. Для случая перекачки данных из БД в папку, файл или zip-архив командная строка содержит кляузу pump to.
При перекачке данных учитыватся табличное пространство ("группа файлов") каждой таблицы в случае, если это понятие релевантно для источника и приемника. При использовании папки, файла или zip-архива имя табличного пространства каждой таблицы сохраняется в файле RTTI, и будет использовано, если окажется релевантным. Если в приемнике имеется возможность разместить таблицу в табличное пространство с тем же именем, которое указано в источнике, то это будет сделано. При перекачке данных таже осуществляется перенос последовательностей. При этом переносится текущее значение каждой из последовательностей. Значение кеша последовательности переносится только в том случае, если это понятие релевантно для источника и для приемника. При использовании папки, файла или zip-архива значение кеша сохраняется в файле Sequences, и будет использовано, если окажется релевантным. После завершения перекачки данных в схеме-приемнике остаются следующие объекты:
Этот набор минимально достаточен, чтобы с помощью синхронизации (загрузив метаданные из таблиц, с ключем /T) восстановить метаданные БД в соответствующей схеме, и работать с ней средствами платформы. Особенности перекачки данных в папку, файл или zip-архив: При использовании папки она рассматривается как хранилище файлов перекачки. При использовании файла он рассматривается как хранилище файлов перекачки в формате Microsoft Compound File. При использовании zip-архива он рассматривается как хранилище файлов перекачки. Хранилище файлов перекачки содержит следующие файлы:
Остальные файлы в хранилище будут проигнорированы (если хранилище используется как источник) или удалены (если хранилище используется как приемник). Если в качестве приемника используется zip-архив, то механизм перекачки данных будет использовать информацию об уже содержащихся в архиве файлах, и не будет повторно "пересжимать" уже имеющиеся файлы. Таким образом, можно удобно релизовать "инкрементальное резервное копирование", указывая в качестве приемника перекачки данных один и тот же zip-архив. |
4.5.1.1. Стандартная перекачка данных | ||||
Стандартная процедура перекачки блока данных заключается в открытии однонаправленного курсора на основании запроса типа select... from "..." к таблице-источнику, подготовке запроса insert into "..."("ID",.....) values (:Param1, :Param2....) к приемнику, и многократному выполнению этого единожды подготовленного запроса по мере продвижения вперед по курсору-источнику. Все значения полей при этом проходят через клиентскую сторону, и заливка данных осуществляется по одной записи за одно выполнение запроса. Характерная скорость такой заливки - порядка 5000 записей в секунду.
|
4.5.1.2. Механизмы связи между БД на сервере | ||||||
Механизм может быть принудительно заблокирован ключем /NODBLINK. |
4.5.1.3. Загрузка данных из внешнего файла | ||||||||
Механизм может быть принудительно заблокирован ключем /NOCSV. |
4.5.1.4. Сборка xml-документа на сервере | ||||||
Механизм создает большую нагрузку на сервер БД, но в то же время позволяет существенно ускорить перекачку данных.
Механизм может быть принудительно заблокирован ключем /NOXML. |
4.6. Ключи командной строки инсталлятора платформы | |||||||||||||||||||||||||||||||||||||||||||
Для автоматизации установки или обновления платформы инсталлятор платфромы setup.exe поддерживает ключи командной строки.
Ключи указываются через пробел. Ключ должен начинаться символом "/". Для ключей, содержащих значения параметров, между ключем, символом "=" и значением параметра пробелов быть не должно. Ключи командной строки:
Замечания:
|
4.7. Форматы и соглашения |
4.7.1. Стандартная адресация базы данных платформы | ||||||||||||||||
Строка адресации БД платформы "Мельница данных" состоит из следующих элементов: Сервер - один из следующих вариантов:
Пользователь - имя пользователя, используемого для соедиения. Роль - роль, ассоциированная с соединением.
Пароль - пароль пользователя, используемый для соедиения. Пароль также может быть не задан в строке соединения (после символа "/" сразу следует символ "@"). В этом случае пароль будет запрошен у пользователя (если будет такая возможность), или будет использоваться Negotiate-аутентификация. БазаДанных - адресует собственно базу или схему данных.
Прямое подключение к БД от имени владельца схемы данных является административным.
|
5. Руководство разработчика на платформе |
5.1. Решения, предлагаемые технологией "Мельница данных" |
Технология "Мельница данных" предлагает решения традиционных проблем разработки и сопровождения учетных систем за счет следующих инноваций:
Основными элементами стандартизованного пользовательского интерфейса являются развитые элементы управления, работающие с данными:
Реализованы развитые возможности интеграции с третьесторонними системами. Они обеспечиваются следующими механизмами:
|
5.2. Системный слой объектной модели "Мельница данных" |
Технология разработки и сопровождения учетных систем "Мельница данных" требует для своего функционирования объектную модель бизнес-сущностей. Технология диктует ряд дополнительных требований к объектной модели.
|
5.3. Наследование и переопределение членов класса и параметров подпрограмм | ||
Все члены родительского класса наследуются дочерним классом следующим образом: ПоляВсе поля родительского класса доступны в дочернем классе. При создании в дочернем классе поля с тем же именем, что и в родительском классе, класс-наследник теряет возможность напрямую манипулировать полем родительского класса и получает поле с тем же именем. Можно сказать, что новое поле "закрывает" старое, но не "замещает" его. МетодыВсе методы родительского класса наследуются дочерним классом. При создании в дочернем классе метода с тем же именем, что и в родительском классе, метод переопределяется, т.е. вместо старого метода будет существовать новый. Единственный способом обратиться к старому (унаследованному) методу является использование в теле метода оператора унаследованного вызова inherited (см. раздел 5.3.14.). Переопределенный метод имеет все параметры родительского метода и может расширять список параметров, а также переопределять унаследованные параметры (создавая параметры с тем же именем и изменяя любой другой атрибут параметра по своему усмотрению). Скрипты форм задания параметров не наследуются и должны быть полностью заданы в переопределенном методе. Изображения-иконки методов наследуются и могут не переопределяться явно. СвойстваВсе свойства родительского класса доступны в дочернем классе. При создании в дочернем классе свойства с тем же именем, что и в родительском классе, класс-наследник теряет возможность напрямую манипулировать свойством родительского класса и получает свойство с тем же именем. Можно сказать, что новое свойство "закрывает" старое, но не "замещает" его. На практике часто бывает необходимо в унаследованном методе (особенно в конструкторе) скрыть часть параметров от пользователя, либо сузить область выбора значений для каких либо параметров. В этом случае необходимо переопределить параметры в унаследованном методе с новыми значениями свойства Scope ("Область видимости") или Domain ("Домен"). Это нормальная рекомендуемая практика. Необходимо понимать, что скрыв с формы элемент управления, соответствующий параметру, значение которого обязательно, необходимо предусмотреть, чтобы этот параметр получил значение до вызова унаследованного метода, либо из скрипта формы задания параметров, либо в теле самого метода.
|
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.
|
5.7.6.1.2. Методы |
5.7.6.1.2.1. Свойства документа | ||||||||||
Для создания и описания свойств PDF-документа в библиотеке PDFCreator.dll используется класс IPDFDocument, обладающий следующими свойствами:
|
5.7.6.1.2.2. Свойства страницы | ||||||||
Для создания страницы используется функция function CreatePage(Parent: OleVariant): IPDFPage; Параметр Parent указывает страницу-родителя для данной страницы. Если страницы- родителя быть не должно - формат вызова функции примет вид: set page = CreatePage(Null)Параметры страницы:
|
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).
|
5.7.6.1.2.3. Графика |
5.7.6.1.2.3.1. Линии | ||||||||||||||||||||||||||||||||
Для отрисовки линий используется процедура procedure Line(X1: Double; Y1: Double; X2: Double; Y2: Double);Здесь:
Для задания толщины линии используется свойство property LineWidth: DoubleЗначение толщины задается в миллиметрах. Значение по умолчанию - минимально возможная единица рисования для устройства. Так для монитора - 1 pixel, для принтера - 1 dot (точка) Для задания стиля отрисовки начала/окончания линии используется свойство property LineCap: TPDFLineCap
Объявление цвета линии.
При необходимости соединения линий под углом в определенной точке можно задать тип соединения. Для объявления типа соединения используется свойство property LineJoin: TPDFLineJoin;
Пунктир Для создания пунктира используется процедура отображения линии с предварительно объявленными дополнительными значениями. Процедура procedure SetDash(DashArray: OleVariant; Phase: Integer); Здесь DashArray - массив значений в миллиметрах, указывающий последовательность чередования штрихов и пропусков на линии, Phase - смещение в миллиметрах по линии.
Ломанная линия - здесь непрерывная линия, состоящая из нескольких прямых. Для отображения ломанной используется процедура procedure Poly(Points: OleVariant; Fill: WordBool), где Points - массив координат точек соединяемых прямыми, а Fill - признак заливки полученной замкнутой фигуры (если замкнута).
|
5.7.6.1.2.3.2. Прямоугольник | ||||||||||||||||
Rectangle (Прямоугольник) - для создания используется процедура: procedure Rectangle(X1: Double; Y1: Double; Width: Double; Height: Double; Fill: WordBool);Здесь:
Также существует возможность изменения стиля отображения углов прямоугольника. Для этого нужно использовать свойство property LineJoin: TPDFLineJoin;
Пример построения прямоугольников с различными типами соединения сторон:
|
5.7.6.1.2.3.3. Вставка готовых изображений | ||
Для вставки на создаваемую страницу готового изображения используется процедура procedure Image(const FileName: WideString; X: Double; Y: Double; Width: Double; Height: Double) Параметры:
Вне зависимости от размера исходного изображения, при вставке изображения на создаваемую страницу оно будет растянуто по размерам, прописанным в процедуре. |
5.7.6.1.2.3.4. Векторная графика |
Язык PostScript, с помощью которого создаются векторные изображения для PDF-документа, поддерживает создание типичных примитивных объектов, таких как:
При создании векторного изображения на странице PDF-документа в приложениях Платформы, команды построения примитивных объектов PostScript передаются на исполнение при помощи процедуры Perform. Подробнее об операторах и командах PostScript для создания PDF-документов можно узнать на сайте Adobe |
5.7.6.1.2.4. Шрифты | |||||||||||||||||||||||||||||||||||||||||||||
Шрифты, которые должны использоваться в создаваемом документе, должны быть предварительно объявлены. Для объявления используемых шрифтов используется функция
Для вывода текстовой информации на страницу используются процедуры:
Параметры для procedure WriteLine :
Параметры для function WriteText :
Свойства шрифтов: property Spacing: Double; - свойство, отвечающее за величину промежутка между буквами в слове. Задается в виде отклонения от промежутка между буквами по умолчанию для выбранного шрифта по горизонтальной оси в миллиметрах. Значение свойства равное "0" соответствует значению по умолчанию.
property WordSpacing: Double; - свойство, отвечающее за величину промежутка между соседними словами. Задается в виде отклонения от промежутка между словами по умолчанию для выбранного шрифта по горизонтальной оси в миллиметрах. Значение свойства равное "0" соответствует значению по умолчанию.
property Scaling: Double; - свойство, отвечающее за горизонтальное масштабирование букв используемого шрифта. Устанавливается в процентах. Горизонтальный масштаб по умолчанию - 100%.
property RenderingMode: TPDFFontRenderingMode; - свойство, отвечающее за заливку букв используемого шрифта.
property Rise: Double; - свойство, отвечающее за перемещение текста по вертикали.
Для определения размеров текстовой строки используется процедура MeasureLine(const LineText: WideString; out Width: OleVariant; out Height: OleVariant); Здесь:
Для определения высоты текстового блока используется функция MeasureText(const AText: WideString; Width: Double): Double; safecall; Функция распределит текст по задаваемому значению ширины текстового блока и вернет значение высоты текстового блока в милиметрах. Здесь:
|
5.7.6.1.3. Порядок создания | ||
Для создания шаблона PDF-документа необходимо в системной форме Платформы выбрать класс, к которому будет строиться документ. В подменю "Подпрограммы" вызвать контекстное меню и выбрать пункт "Создать шаблон отчета PDF". Заполнить необходимые поля и приступить к созданию скрипта в окне "Скрипт шаблона".
Результат: |
5.7.6.2. Справочник по интерфейсам |
5.7.6.2.1. Перечисление TPDFFontRenderingMode | |||||||||||||||
1type 2 TPDFFontRenderingMode = (frmFillText, frmStrokeText, frmFillThenStrokeText, 3 frmInvisible); Или 1type 2 TPDFFontRenderingMode = TOleEnum; 3const 4 frmFillText = $00000000; 5 frmStrokeText = $00000001; 6 frmFillThenStrokeText = $00000002; 7 frmInvisible = $00000003; Элементы перечисления:
|
5.7.6.2.2. Перечисление TPDFLineCap | ||||||||||||
1type 2 TPDFLineCap = (lcBuss, lcRound, lcProtecting); Или 1type 2 TPDFLineCap = TOleEnum; 3const 4 lcBuss = $00000000; 5 lcRound = $00000001; 6 lcProtecting = $00000002; Элементы перечисления:
|
5.7.6.2.3. Перечисление TPDFLineJoin | ||||||||||||
1type 2 TPDFLineJoin = (ljMiter, ljRound, ljBevel); Или 1type 2 TPDFLineJoin = TOleEnum; 3const 4 ljMiter = $00000000; 5 ljRound = $00000001; 6 ljBevel = $00000002; Элементы перечисления:
|
5.7.6.2.4. Перечисление TPDFTextAlignment | |||||||||||||||
1type 2 TPDFTextAlignment = (ptaLeft, ptaRight, ptaCenter, ptaJustified); Или 1type 2 TPDFTextAlignment = TOleEnum; 3const 4 ptaLeft = $00000000; 5 ptaRight = $00000001; 6 ptaCenter = $00000002; 7 ptaJustified = $00000003; Элементы перечисления:
|
5.7.6.2.5. Интерфейс IPDFDocument |
01type 02 IPDFDocument = interface(IDispatch) 03 ['{E57FFE9D-6B85-45E6-A5D0-9DD17950A666}'] 04 procedure Save(Target: OleVariant); safecall; 05 function CreatePage(Parent: OleVariant): IPDFPage; safecall; 06 function Get_Title: WideString; safecall; 07 procedure Set_Title(Value: WideString); safecall; 08 function Get_CanEmbedFonts: WordBool; safecall; 09 procedure Set_CanEmbedFonts(Value: WordBool); safecall; 10 function Get_CanCompress: WordBool; safecall; 11 procedure Set_CanCompress(Value: WordBool); safecall; 12 function Get_Author: WideString; safecall; 13 procedure Set_Author(Value: WideString); safecall; 14 function Get_Subject: WideString; safecall; 15 procedure Set_Subject(Value: WideString); safecall; 16 function Get_Keywords: WideString; safecall; 17 procedure Set_Keywords(Value: WideString); safecall; 18 function Get_Creator: WideString; safecall; 19 procedure Set_Creator(Value: WideString); safecall; 20 function Get_Pages(Index: Integer): IPDFPage; safecall; 21 function Get_PageCount: Integer; safecall; 22 procedure Close; safecall; 23 procedure Serialize(const Stream: IUnknown); safecall; 24 function Get_MinCompressSize: Integer; safecall; 25 procedure Set_MinCompressSize(Value: Integer); safecall; 26 function Get_MaxCompressSize: Integer; safecall; 27 procedure Set_MaxCompressSize(Value: Integer); safecall; 28 function CreatePageFromImage(Image: OleVariant; PageWidth: Double; 29 PageHeight: Double; Margin: Double): WordBool; safecall; 30 procedure SaveToXML(Target: OleVariant); safecall; 31 property Title: WideString read Get_Title write Set_Title; 32 property CanEmbedFonts: WordBool read Get_CanEmbedFonts write Set_CanEmbedFonts; 33 property CanCompress: WordBool read Get_CanCompress write Set_CanCompress; 34 property Author: WideString read Get_Author write Set_Author; 35 property Subject: WideString read Get_Subject write Set_Subject; 36 property Keywords: WideString read Get_Keywords write Set_Keywords; 37 property Creator: WideString read Get_Creator write Set_Creator; 38 property Pages[Index: Integer]: IPDFPage read Get_Pages; 39 property PageCount: Integer read Get_PageCount; 40 property MinCompressSize: Integer read Get_MinCompressSize 41 write Set_MinCompressSize; 42 property MaxCompressSize: Integer read Get_MaxCompressSize 43 write Set_MaxCompressSize; 44 end; |
5.7.6.2.5.1. Свойства | ||||||||||||||||||||||||||||||||||||||||||||||||
Свойства интерфейса IPDFDocument:
|
5.7.6.2.5.2. Метод Close |
5.7.6.2.5.3. Метод CreatePage | ||||||||
Метод интерфейса IPDFDocument. function IPDFDocument.CreatePage(Parent: OleVariant): IPDFPage; Параметры:
Замечания: Возвращает значение типа IPDFPage. |
5.7.6.2.5.4. Метод CreatePageFromImage | ||||||||||||||||||||
Метод интерфейса IPDFDocument. 1function IPDFDocument.CreatePageFromImage(Image: OleVariant; PageWidth: Double; 2 PageHeight: Double; Margin: Double): WordBool; Параметры:
Замечания: Возвращает значение типа WordBool. |
5.7.6.2.5.5. Метод Save | ||||||||
Метод интерфейса IPDFDocument. procedure IPDFDocument.Save(Target: OleVariant); Параметры:
|
5.7.6.2.5.6. Метод SaveToXML | ||||||||
Метод интерфейса IPDFDocument. procedure IPDFDocument.SaveToXML(Target: OleVariant); Параметры:
|
5.7.6.2.5.7. Метод Serialize | ||||||||
Метод интерфейса IPDFDocument. procedure IPDFDocument.Serialize(const Stream: IUnknown); Параметры:
|
5.7.6.2.6. Интерфейс IPDFFont |
01type 02 IPDFFont = interface(IDispatch) 03 ['{43FE399A-A724-4076-BAFA-098639628385}'] 04 function Get_Spacing: Double; safecall; 05 procedure Set_Spacing(Value: Double); safecall; 06 function Get_WordSpacing: Double; safecall; 07 procedure Set_WordSpacing(Value: Double); safecall; 08 function Get_Scaling: Double; safecall; 09 procedure Set_Scaling(Value: Double); safecall; 10 function Get_RenderingMode: TPDFFontRenderingMode; safecall; 11 procedure Set_RenderingMode(Value: TPDFFontRenderingMode); safecall; 12 function Get_Rise: Double; safecall; 13 procedure Set_Rise(Value: Double); safecall; 14 procedure WriteLine(const LineText: WideString; X: Double; Y: Double); safecall; 15 procedure MeasureLine(const LineText: WideString; out Width: OleVariant; 16 out Height: OleVariant); safecall; 17 function WriteText(const AText: WideString; X: Double; Y: Double; 18 Width: Double; Alignment: TPDFTextAlignment): Double; safecall; 19 function MeasureText(const AText: WideString; Width: Double): Double; safecall; 20 function Get_Angle: Double; safecall; 21 procedure Set_Angle(Value: Double); safecall; 22 function Get_LineSpacing: Double; safecall; 23 procedure Set_LineSpacing(Value: Double); safecall; 24 property Spacing: Double read Get_Spacing write Set_Spacing; 25 property WordSpacing: Double read Get_WordSpacing write Set_WordSpacing; 26 property Scaling: Double read Get_Scaling write Set_Scaling; 27 property RenderingMode: TPDFFontRenderingMode read Get_RenderingMode 28 write Set_RenderingMode; 29 property Rise: Double read Get_Rise write Set_Rise; 30 property Angle: Double read Get_Angle write Set_Angle; 31 property LineSpacing: Double read Get_LineSpacing write Set_LineSpacing; 32 end; |
5.7.6.2.6.1. Свойства | ||||||||||||||||||||||||||||||||
Свойства интерфейса IPDFFont:
|
5.7.6.2.6.2. Метод MeasureLine | ||||||||||||||||
Метод интерфейса IPDFFont. 1procedure IPDFFont.MeasureLine(const LineText: WideString; 2 out Width: OleVariant; out Height: OleVariant); Параметры:
|
5.7.6.2.6.3. Метод MeasureText | ||||||||||||
Метод интерфейса IPDFFont. function IPDFFont.MeasureText(const AText: WideString; Width: Double): Double; Параметры:
Замечания: Возвращает значение типа Double. |
5.7.6.2.6.4. Метод WriteLine | ||||||||||||||||
Метод интерфейса IPDFFont. procedure IPDFFont.WriteLine(const LineText: WideString; X: Double; Y: Double); Параметры:
|
5.7.6.2.6.5. Метод WriteText | ||||||||||||||||||||||||
Метод интерфейса IPDFFont. 1function IPDFFont.WriteText(const AText: WideString; X: Double; Y: Double; 2 Width: Double; Alignment: TPDFTextAlignment): Double; Параметры:
Замечания: Возвращает значение типа Double. |
5.7.6.2.7. Интерфейс IPDFPage |
01type 02 IPDFPage = interface(IDispatch) 03 ['{749FB131-80FE-46E9-8330-22C1DC346FE7}'] 04 function Get_Parent: IPDFPage; safecall; 05 function Get_Title: WideString; safecall; 06 procedure Set_Title(Value: WideString); safecall; 07 function Get_Width: Double; safecall; 08 procedure Set_Width(Value: Double); safecall; 09 function Get_Height: Double; safecall; 10 procedure Set_Height(Value: Double); safecall; 11 function CreateFont(const FontName: WideString; Size: Double; Bold: WordBool; 12 Italic: WordBool): IPDFFont; safecall; 13 procedure Perform(const Command: WideString); safecall; 14 function Get_LineWidth: Double; safecall; 15 procedure Set_LineWidth(Value: Double); safecall; 16 procedure Line(X1: Double; Y1: Double; X2: Double; Y2: Double); safecall; 17 procedure Rectangle(X1: Double; Y1: Double; Width: Double; Height: Double; 18 Fill: WordBool); safecall; 19 function Get_LineCap: TPDFLineCap; safecall; 20 procedure Set_LineCap(Value: TPDFLineCap); safecall; 21 function Get_LineJoin: TPDFLineJoin; safecall; 22 procedure Set_LineJoin(Value: TPDFLineJoin); safecall; 23 procedure SetDash(DashArray: OleVariant; Phase: Integer); safecall; 24 procedure SetColor(R: Integer; G: Integer; B: Integer); safecall; 25 procedure PerformColor(const Command: WideString); safecall; 26 procedure Poly(Points: OleVariant; Fill: WordBool); safecall; 27 procedure Image(Image: OleVariant; X: Double; Y: Double; Width: Double; 28 Height: Double; Transparent: WordBool); safecall; 29 procedure DrawGrid; safecall; 30 procedure Arc(X: Double; Y: Double; Radius: Double; StartAngle: Double; 31 EndAngle: Double; FillSegment: WordBool; FillSector: WordBool); safecall; 32 procedure Curve(Points: OleVariant; Fill: WordBool); safecall; 33 procedure HyperLink(const URI: WideString; X: Double; Y: Double; Width: Double; 34 Height: Double); safecall; 35 procedure Pattern(X1: Double; Y1: Double; Width: Double; Height: Double; 36 PatternPointSize: Double; Percentage: Integer); safecall; 37 procedure Bezier(Points: OleVariant; Fill: WordBool); safecall; 38 procedure XObject(Data: OleVariant); safecall; 39 procedure SetColorCMYK(C: Double; M: Double; Y: Double; K: Double); safecall; 40 procedure LocalLink(const Page: IDispatch; DestinationX: Double; 41 DestinationY: Double; DestinationWidth: Double; DestinationHeight: Double; 42 X: Double; Y: Double; Width: Double; Height: Double); safecall; 43 property Parent: IPDFPage read Get_Parent; 44 property Title: WideString read Get_Title write Set_Title; 45 property Width: Double read Get_Width write Set_Width; 46 property Height: Double read Get_Height write Set_Height; 47 property LineWidth: Double read Get_LineWidth write Set_LineWidth; 48 property LineCap: TPDFLineCap read Get_LineCap write Set_LineCap; 49 property LineJoin: TPDFLineJoin read Get_LineJoin write Set_LineJoin; 50 end; |
5.7.6.2.7.1. Свойства | ||||||||||||||||||||||||||||||||
Свойства интерфейса IPDFPage:
|
5.7.6.2.7.2. Метод Arc | ||||||||||||||||||||||||||||||||
Метод интерфейса IPDFPage. 1procedure IPDFPage.Arc(X: Double; Y: Double; Radius: Double; 2 StartAngle: Double; EndAngle: Double; FillSegment: WordBool; 3 FillSector: WordBool); Параметры:
|
5.7.6.2.7.3. Метод Bezier | ||||||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.Bezier(Points: OleVariant; Fill: WordBool); Параметры:
|
5.7.6.2.7.4. Метод CreateFont | ||||||||||||||||||||
Метод интерфейса IPDFPage. 1function IPDFPage.CreateFont(const FontName: WideString; Size: Double; 2 Bold: WordBool; Italic: WordBool): IPDFFont; Параметры:
Замечания: Возвращает значение типа IPDFFont. |
5.7.6.2.7.5. Метод Curve | ||||||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.Curve(Points: OleVariant; Fill: WordBool); Параметры:
|
5.7.6.2.7.6. Метод DrawGrid |
5.7.6.2.7.7. Метод HyperLink | ||||||||||||||||||||||||
Метод интерфейса IPDFPage. 1procedure IPDFPage.HyperLink(const URI: WideString; X: Double; Y: Double; 2 Width: Double; Height: Double); Параметры:
|
5.7.6.2.7.8. Метод Image | ||||||||||||||||||||||||||||
Метод интерфейса IPDFPage. 1procedure IPDFPage.Image(Image: OleVariant; X: Double; Y: Double; 2 Width: Double; Height: Double; Transparent: WordBool); Параметры:
|
5.7.6.2.7.9. Метод Line | ||||||||||||||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.Line(X1: Double; Y1: Double; X2: Double; Y2: Double); Параметры:
|
5.7.6.2.7.10. Метод LocalLink | ||||||||||||||||||||||||||||||||||||||||
Метод интерфейса IPDFPage. 1procedure IPDFPage.LocalLink(const Page: IDispatch; DestinationX: Double; 2 DestinationY: Double; DestinationWidth: Double; DestinationHeight: Double; 3 X: Double; Y: Double; Width: Double; Height: Double); Параметры:
|
5.7.6.2.7.11. Метод Pattern | ||||||||||||||||||||||||||||
Метод интерфейса IPDFPage. 1procedure IPDFPage.Pattern(X1: Double; Y1: Double; Width: Double; 2 Height: Double; PatternPointSize: Double; Percentage: Integer); Параметры:
|
5.7.6.2.7.12. Метод Perform | ||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.Perform(const Command: WideString); Параметры:
|
5.7.6.2.7.13. Метод PerformColor | ||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.PerformColor(const Command: WideString); Параметры:
|
5.7.6.2.7.14. Метод Poly | ||||||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.Poly(Points: OleVariant; Fill: WordBool); Параметры:
|
5.7.6.2.7.15. Метод Rectangle | ||||||||||||||||||||||||
Метод интерфейса IPDFPage. 1procedure IPDFPage.Rectangle(X1: Double; Y1: Double; Width: Double; 2 Height: Double; Fill: WordBool); Параметры:
|
5.7.6.2.7.16. Метод SetColor | ||||||||||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.SetColor(R: Integer; G: Integer; B: Integer); Параметры:
|
5.7.6.2.7.17. Метод SetColorCMYK | ||||||||||||||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.SetColorCMYK(C: Double; M: Double; Y: Double; K: Double); Параметры:
|
5.7.6.2.7.18. Метод SetDash | ||||||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.SetDash(DashArray: OleVariant; Phase: Integer); Параметры:
|
5.7.6.2.7.19. Метод XObject | ||||||||
Метод интерфейса IPDFPage. procedure IPDFPage.XObject(Data: OleVariant); Параметры:
|
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. В том случае когда Платформа является серверной стороной, то есть стороной-поставщиком данных для других систем, возможны следующие варианты предоставления данных: - СУБД, то есть база данных, которая хранит все данные Платформы. На данный момент поддерживаются Oracle, Firebird, MS SQL. Возможна реализация поддержки и других систем управления базами данных. Для указанных баз данных доступны стандартные протоколы доступа, с помощью которых осуществляются запросы к данным Платформы непосредственно. Запросы формируются при помощи стандартизированного языка запросов Structured Query Language (SQL). - RESTful-сервис используется для реализации более сложной механики предоставления доступа к данным и входит в состав поставки сервера приложений Платформы. С его помощью, в частности, осуществляется удаленный доступ и доступ к данным через SOAP (Simple Object Access Protocol — простой протокол доступа к объектам) с автоматическим формированием по данным Платформы WSDL-документа, описывающего сервисы. Таким образом реализуется продвинутый функционал по отбору объекта по критериям, а также в части доступа ко всем данным Платформы по протоколу SOAP/ В случае если требуются какие-либо специфические протоколы для обмена данными, они реализовываются на уровне обработчика сервера-приложения. То есть осуществляется "надстройка" сервера приложений Платформы для работы с данными в том виде, в котором это необходимо и по тому протоколу, который требуется в каждом конкретном случае. Таким образом, Сервер приложений Платформы востребован в большинстве случаев организации взаимодействия между системами.
2. В случае когда Платформе необходим доступ к данным сторонних систем, используется готовый RESTful-"обработчик". Частными случаями данной ситуции являются взаимодействия Платформы с различными собственными web-приложениями, а также с "Обозревателем данных", работающим через удаленный доступ. Для получения данных в режиме On-Line от сторонних систем используются те же стандартные протоколы. При необходимости создаются "обработчики", которые отображают для конечного пользователя в визуальных формах Платформы данные, полученные из сторонних систем. 3. При использовании Платформы в качестве платформы интеграции различных сторонних систем, данные предварительно загруженные по описанным выше протоколам могут передаваться средствами Платформы. Однако, может быть реализован и механизм прозрачной передачи данных между сторонними системами. |
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-кода, его интерпретация происходит в рамках сервера приложений Платформы.
- В тех случаях, когда решения Платформы сами являются частью какой-либо более общей системы, и должны предоставлять свои функции, то это решается на уровне СУБД. То есть, сгенерированный Платформой прикладной код (код на соответствующем диалекте SQL) может быть интегрирован в код более масштабного хранилища, функционировать там, исполняться там, если в этом есть необходимость.
|
5.9. Положения и определения |
5.9.1. Работа с типами данных |
5.9.1.1. Домены |
5.9.2. Язык PascalScript |
На языке PascalScript на платформе "Мельница данных" описываются тела методов и выражения. Выражения используются в условиях отбора объектов определенного класса при их отображении в представлениях, а также как встраиваемые выражения, которые могут служить членами класса для чтения свойств. Здесь и далее зарезервированные слова выделены жирным шрифтом. |
5.9.2.1. Структура программного блока тела метода |
1 [Описание переменных] 2 begin 3 //Операторы end; Комментарии расположены между символами { и } либо от символов // до конца строки. |
5.9.2.2. Описание переменных | ||
1var 2 Имя переменной[, Имя переменной…]: Тип; 3 Имя переменной[, Имя переменной…]: Тип; 4 ...Имя переменной должно быть идентификатором (последовательность символов a-z, A-Z, 0-9, _). "Тип" может быть одним из следующих:
|
5.9.2.3. Операторы PascalScript |
Операторы разделяются точкой с запятой (;). Операторы могут быть одним из следующих: |
5.9.2.3.1. Составной оператор | ||
1begin 2 //Другие операторы endОператоры, размещенные внутри составного оператора, разделяются точкой с запятой. Никаких ограничений на состав операторов и количество уровней вложенности не накладывается.
|
5.9.2.3.2. Оператор присваивания | ||||||||
Выражение1 := Выражение2 Присваивает значение выражения Выражение2 выражению Выражение1. Типы Выражения1 и Выражения2 должны быть совместимы (совпадать по классу домена либо оба быть числовыми). Для этого на Выражение1 (стоящее слева от знака равенства, lvalue) накладывается ряд ограничений. Это выражение должно быть:
|
5.9.2.3.3. Оператор вызова | ||
ИмяПроцедуры [(Параметр1, Параметр2 ...)] "ИмяПроцедуры" должно быть:
|
5.9.2.3.4. Оператор ветвления | ||||
1if Выражение then 2 //Оператор1 3[else 4 //Оператор2] Выражение должно быть логического типа. В случае если значение Выражения истинно, выполняется Оператор1. Часть else является необязательной и относится к последнему оператору if, не имеющему таковой. В случае ее наличия Оператор2 выполняется, если значение Выражения ложно.
|
5.9.2.3.5. Оператор выбора | ||
1case Выражение of 2 Значение1: //Оператор1 3 Значение2: //Оператор2 4 ... 5[else 6 //Оператор ] end Заменяет каскад операторов if. Значение Выражения должно быть числового типа. Часть else выполняется в случае, если Выражение не равно ни одному из перечисленных вариантов. Эта часть не является обязательной.
|
5.9.2.3.6. Цикл с предусловием | ||
1while Выражение do 2 //Оператор Оператор выполняется до тех пор, пока значение Выражения истинно. Выражение должно быть логического типа. Если при входе в цикл Выражение не истинно, то тело цикла не будет выполнено ни одного раза.
|
5.9.2.3.7. Цикл с постусловием | ||
1repeat 2 //Операторы 3until Выражение Операторы выполняются до тех пор, пока значение Выражения ложно. Выражение должно быть логического типа. Обратите внимание, что внутри себя оператор может содержать несколько операторов, разделенных точкой с запятой. Тело цикла обязательно будет выполнено хотя бы один раз.
|
5.9.2.3.8. Цикл с параметром | ||
1for Параметр := Выражение1 (to|downto) Выражение2 do 2 //Оператор Параметр цикла обязан быть простой локальной переменной. Функционально цикл с параметром эквивалентен циклам:
|
5.9.2.3.9. Цикл по экземплярам | ||
1for each Параметр of ИмяКласса [with Выражение] 2 [by [-] Выражение [, [-] Выражение]] do 3 //Оператор Цикл осуществляется по выборке среди экземпляров класса ИмяКласса, для которых истинно Выражение. Если Выражение не задано, то по всем экземплярам. Ссылка на текущий в рамках цикла экземпляр присваивается в локальную переменную Параметр. Выражение должно определяться относительно переменной Параметр. Выраженния, следующие за ключевым словом by, определяют порядок обхода экземпляров. Знак "-" перед выражением (любого типа) определяет обратный порядок обхода.
|
5.9.2.3.10. Оператор прекращения цикла |
break Происходит немедленный выход из цикла. Выполняется финализация операторов защиты завершения, которыми защищено тело цикла. Допустим только в теле цикла с предусловием, цикла с постусловием, цикла с параметром или цикла по экземплярам. |
5.9.2.3.11. Оператор выхода из подпрограммы |
exit Происходит немедленный выход из программного блока. Выполняется финализация операторов защиты завершения. |
5.9.2.3.12. Оператор защиты завершения | ||
1try 2 //Операторы1 3finally 4 //Операторы2 end Выполняются операторы Операторы1, разделенные точкой с запятой. В случае возникновения исключительной ситуации управление сразу передается на Операторы2, и после их выполнения исключение остается активным. Если исключения не произошло, выполняются Операторы2. Если среди Операторов1 встречается оператор exit, то Операторы2 все равно выполняются.
|
5.9.2.3.13. Оператор обработки исключительных ситуаций | ||||
1try 2 //Операторы1 3except 4 //Операторы2 end Выполняются операторы Операторы1. В случае возникновения исключительной ситуации управление передается на Операторы2. Если исключительных ситуаций не возникло, Операторы2 не выполняются никогда. При передаче управления на Операторы2 исключительная ситуация деактивирована. Для ее повторного возбуждения можно воспользоваться оператором возбуждения исключения без указания текстовой строки сообщения.
|
5.9.2.3.14. Оператор возбуждения исключения |
raise [Выражение]Возбуждает исключение, которое, если не было обработано блоком except оператора обработки, дойдет до пользователя. Пользователь увидит сообщение, определяемое Выражением. Выражение должно иметь строковый тип и является обязательным для всех случаев, кроме части except оператора обработки исключений. |
5.9.2.3.15. Оператор унаследованного вызова | ||
inherited Работает только в унаследованном переопределенном методе. Вызывается метод предка с параметрами, заданными в параметрах к моменту вызова. Если программный блок представляет собой тело функции, то в псевдопеременной Result будет результат выполнения метода предка.
|
5.9.2.4. Выражения и операции |
5.9.2.4.1. Состав выражения |
Любое выражение имеет тип. Выражения состоят из следующих элементов:
|
5.9.2.4.2. Квалификатор | ||||||||||||||
Квалификатор обозначает объект, переменную, параметр, свойство, поле, вызов функции. Квалификатор состоит из идентификаторов, разделенных точкой.
При интерпретации квалификатора используется следующий порядок разбора идентификатора:
При интерпретации квалификатора внутри выражения агрегата правила разбора идентификатора изменяются:
|
5.9.2.4.3. Агрегат | ||||||||
Агрегат определяет агрегированное значение над экземплярами определенного класса, удовлетворяющими условиям агрегации. Агрегаты бывают следующих типов:
Внутри выражения агрегата правила разбора идентификатора изменяются на следующие:
|
5.9.2.4.4. Операции | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Операции связывают элементы выражений. Таблица операций в порядке приоритета:
|
5.9.2.4.4.1. Особенности применения операций |
|
5.9.2.5. Формальная грамматика |
001Goal: MethodBody | Expression; 002 003MethodBody: [ConstantDeclaration] [VariableDeclaration] CompoundStatement ";"; 004 005ConstantDeclaration: "const" Ident ":" DomainSpecification ";" 006 [{Ident ":" DomainSpecification ";"}]; 007 008VariableDeclaration: "var" DomainDefinition [{DomainDefinition}]; 009 010DomainDefinition: Ident ":" DomainSpecification ";"; 011 012DomainSpecification: IntegerDomainDefinition 013 | StringDomainDefinition 014 | FloatDomainDefinition 015 | DateDomainDefinition 016 | TimeDomainDefinition 017 | DateTimeDomainDefinition 018 | BooleanDomainDefinition 019 | BlobDomainDefinition 020 | EnumerationDomainDefinition 021 | Ident; 022 023IntegerDomainDefinition: "integer"; 024StringDomainDefinition: "string" "[" Number "]"; 025FloatDomainDefinition: "float" ["(" Number ["." Number] ")"]; 026DateDomainDefinition: "date"; 027TimeDomainDefinition: "time"; 028DateTimeDomainDefinition: "datetime"; 029BooleanDomainDefinition: "boolean"; 030BlobDomainDefinition: "blob" | "clob"; 031EnumerationDomainDefinition: "(" Ident {"," Ident} ")"; 032 033CompoundStatement: "begin" Statement [{";" Statement}] "end"; 034 035Statement: 036 | CompoundStatement 037 | AssignmentStatement 038 | InheritedStatement 039 | CallStatement 040 | IfStatement 041 | CaseStatement 042 | ForStatement 043 | WhileStatement 044 | RepeatStatement 045 | TryFinallyStatement 046 | TryExceptStatement 047 | RaiseStatement 048 | ForEachStatement 049 | ExitStatement; 050 051AssignmentStatement: Qualifier ":=" Expression; 052 053CallStatement: Qualifier; 054 055InheritedStatement: "inherited"; 056 057IfStatement: "if" Expression "then" Statement ["else" Statement]; 058 059CaseStatement: "case" Expression "of" {CaseBranch} ["else" Statement ";"] "end"; 060 061CaseBranch: CaseLabel [{',' CaseLabel}] ":" Statement ";"; 062 063CaseLabel: Number | Ident; 064 065ForStatement: "for" Ident ":=" Expression ("to"|"downto") 066 Expression "do" Statement; 067 068WhileStatement: "while" Expression "do" Statement; 069 070RepeatStatement: "repeat" Statement [{";" Statement}] "until" Expression; 071 072TryFinallyStatement: "try" Statement [{";" Statement}] "finally" 073 Statement [{";" Statement}] "end"; 074 075TryExceptStatement: "try" Statement [{";" Statement}] "except" 076 Statement [{";" Statement}] "end"; 077 078RaiseStatement: "raise" [Expression]; 079 080ForEachStatement: "for" "each" Ident "of" Ident ["with" Expression] 081 ["by" Expression] "do" Statement; 082 083ExitStatement: "exit"; 084 085Expression: ComparedExpression [{RelationOperation Expression}]; 086 087ComparedExpression: Addon [{AdditionOperaton ComparedExpression}]; 088 089Addon: Factor [{MultiplicativeOperation Addon}]; 090 091Factor: "(" Expression ")" 092 | "not" Expression 093 | Number ["." Number] 094 | StringConstant 095 | Qualifier 096 | "nil" 097 | "True" 098 | "False" 099 | "(" Expression "is" Ident ")" 100 | "any" Aggregate 101 | "count" Aggregate 102 | "sum" Aggregate 103 | "max" Aggregate 104 | "min" Aggregate; 105 106Aggregate: "(" Ident ["." Ident] ["with" Expression] ")"; 107 108Qualifier: QualifierPart [{"." QualifierPart}]; 109 110QualifierPart: Ident ["(" Expression [{", " Expression}] ")"] 111 | "self" 112 | "(" Qualifier "as" Ident ")"; 113 114RelationOperation: "<" 115 | ">" 116 | "<=" 117 | ">=" 118 | "=" 119 | "<>"; 120 121AdditionOperaton: "+" 122 | "-" 123 | "or"; 124 125MultiplicativeOperation: "*" 126 | "/" 127 | "div" 128 | "and"; |
5.9.2.6. Соглашения |
5.9.2.6.1. Соглашения о наименованиях | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
В качестве вводимых (объявляемых) идентификаторов необходимо использовать так называемую нотацию InfixCaps. Если при создании имени используется несколько слов, то необходимо использовать заглавную букву для каждого слова в имени. Для разделения слов нельзя использовать символ подчеркивания. Все сущности именуются на английском языке, при этом использование сокращений является оправданным только в случае, если длина образуемого имени не согласуется с внешними по отношению к соображениям бизнес-логики ограничениям.
|
5.9.2.6.2. Стилевое оформление исходного кода |
Код на языке PascalScript, являющийся частью поставляемого решения, должен быть оформлен в соответствии с изложенными правилами. |
5.9.2.6.2.1. Использование строк, пробелов и отступов |
Пустые строки могут повысить читабельность путем группирования секций кода, которые логически связаны между собой. Пробелы, запрещенные к использованию:
Двоеточие для всех объявлений переменных не должно содержать перед собой пробелов и иметь один пробел после перед именем типа. Всегда необходимо использовать два пробела для всех уровней отступа. Другими словами, первый уровень отступает на два пробела, второй на четыре и так далее. Никогда не используйте символы табуляции. Существует несколько исключений из этого правила. Зарезервированные слова var, begin и end, относящиеся к программному блоку вцелом, всегда должны примыкать к левой границе. Код внутри блока begin..end должен иметь отступ два символа. Все строки должны быть ограничены 80 столбцами. Строки, длиннее чем 80 столбцов должны быть разделены и перенесены. Все перенесенные строки должны быть выровнены по первой строке и иметь отступ в два символа. Зарезервированное слово begin всегда должно находиться на своей отдельной строке. Нельзя переносить строки в тех местах, где не допускаются пробелы, например между именем метода и открывающей скобкой. Никогда нельзя помещать зарезервированное слово begin на строку, содержащую другой код. |
5.9.2.6.2.2. Оформление объявлений и операторов | ||||||||||||||||||||||||||
Все переменные с их типами должны быть объявлены на различных строках. Простые операторы содержат одну точку с запятой. Если Вам необходимо разделить оператор, то перенесите продолжение оператора на следующую строку с отступом в два пробела.
Составные операторы всегда заканчиваются точкой с запятой.
Каждое присвоение и каждое выражение должно располагаться на разных строках. Оператор "if" Оператор if всегда должен располагаться по крайней мере на двух строках
Оператор "for"
Оператор "while"
Оператор "repeat..until"
Оператор "case" Несмотря на то, что существует множество синтаксически правильных конструкций, одобренной и рекомендованной считается следующая:
Оператор "try" Несмотря на то, что существует множество синтаксически правильных конструкций, одобренной и рекомендованной считается следующая:
|
5.9.3. Интерфейсы взаимодействия с внешними подсистемами |
Системный слой платформы "Мельница данных" предоставляет сторонним системам ряд интерфейсов, дающих возможность обращаться к объектам базы данных и их свойствам, вызывать методы классов и объектов, осуществлять запросы к базе данных, управлять поведением элементов управления и проч. |
5.9.3.1. Интерфейс IContext | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
01 IContext = interface(IDispatch) 02 ['{79847D79-A3BE-408F-B59F-662B91BC6350}'] 03 function Handle: Integer; 04 function getName(ID: OleVariant): WideString; 05 function getDescription(ID: OleVariant): WideString; 06 function createDataSet(const TargetClassName: WideString): 07 IContextDataSet; 08 function executeMethod(const ClassName: WideString; 09 const MethodName: WideString; 10 Params: OleVariant): OleVariant; 11 function executeReport(const ClassName: WideString; 12 const TemplateName: WideString; 13 Params: OleVariant): IDispatch; 14 function getPropValue(const ClassName: WideString; 15 const PropName: WideString; 16 const ID: OleVariant): OleVariant; 17 procedure setPropValue(const ClassName: WideString; 18 const PropName: WideString; 19 const ID: OleVariant; Value: OleVariant); 20 function select(const ClassName: WideString; 21 QueryItems: OleVariant): IDispatch; 22 function enumerationItem(ItemIdentifier: OleVariant): WideString; 23 function getClass(const ClassName: WideString): WideString; 24 function createGUID: WideString; 25 procedure processStart(const Description: WideString; 26 ItemCount: Integer); 27 procedure processStep; 28 procedure processStop; 29 function PlaceDataSet(const Range: IDispatch; 30 const DataSet: IContextDataSet; 31 ShiftRows: WordBool; ShiftColumns: WordBool): Integer; 32 procedure DebugString(const Message: WideString); 33 procedure ExportObject(var Document: OleVariant; const ID: WideString; 34 const ClassID: WideString); 35 function callRoutine(const ClassName, RoutineName: WideString; 36 var RetValue: OleVariant; const ScriptPart: OleVariant): WordBool; 37 function getOleObject(const ClassID, AccessibleFileName: WideString): IDispatch; 38 function getResource(const Name: WideString): WideString; 39 function getTempFileName(const Extension: WideString): WideString; 40 function selectVaue(const ClassDomain: WideString; 41 const ExpressionContext: IContextExpressionInfo; 42 var Value: OleVariant): WordBool; 43 procedure raiseManagedException(const ExceptionMessage: WideString); 44 function getCRC(Data: OleVariant): WideString; 45 function downloadData(const Host: WideString; const Url: WideString; 46 const UserName: WideString; const Password: WideString; 47 NegotiateAuth: WordBool; PostData: OleVariant; 48 const PostContentType: WideString; PostDataIsBinary: WordBool; 49 CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): OleVariant; 50 function createBinaryData: IDispatch; 51 function BinaryToBitmap(const Data: IDispatch): IDispatch; safecall; 52 function editValues(const ValuesList: WideString; const Title: WideString; 53 UseTabs: WordBool; HideOKButton: WordBool; 54 const ScriptPart: OleVariant): WordBool; 55 function MsgBox(const Prompt: WideString; Buttons: LongWord; 56 const Title: WideString; 57 const HelpFile: WideString; Context: LongWord): Integer; 58 function ShowMsgBox(const Prompt: WideString; Buttons: LongWord; 59 const Title: WideString; 60 const HelpFile: WideString; Context: LongWord): Integer; 61 function buildNamedFile(const Data: IDispatch; const StoredFileName: WideString; 62 Propmpt: WordBool; Compress: WordBool): IDispatch; 63 procedure parseNamedFile(const NamedFile: IDispatch; out FileName: OleVariant; 64 out Data: OleVariant); 65 procedure showView(const ViewName: WideString; Key: OleVariant; 66 const DetailPropertyName: WideString); 67 procedure showDataSet(const DataSet: ContextDataSet; const Caption: WideString; 68 ColumnCaptions: OleVariant; ColumnOnChangeHandlers: OleVariant; 69 TakeActionsFromView: OleVariant); 70 function executeConsoleProcess(const CommandLine: WideString; MaxDuration: Integer; 71 const OutputData: OleVariant): Integer; 72 function createRaster: IDispatch; 73 function createZIPArchive: IDispatch; 74 function ConvertExcel(Source: OleVariant; const Format: WideString): IDispatch; 75 property ContextObject: IDispatch; 76 property Language: WideString; 77 property UserName: WideString; 78 property NegotiateAuth: WordBool; 79 property Variable[const Name: WideString; Persistent: WordBool]: OleVariant; 80 end; Члены интерфейса доступны для использования в скриптах форм задания параметров, а также в отчетах как члены класса передаваемого контекстного объекта.
|
5.9.3.2. Интерфейс IContextDataSet | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
01 IContextDataSet = interface(IDispatch) 02 ['{466F3AF7-F899-4BC1-869D-1B17DCB86159}'] 03 procedure AddQueryItem(Part: TQueryPart; const Name: WideString; 04 Value: OleVariant; Special: TQuerySpecial; Context: OleVariant); 05 function Eof: WordBool; 06 function Field(const Name: WideString): OleVariant; 07 function FieldCount: Integer; 08 function FieldName(Index: Integer): WideString; 09 procedure Next; 10 end; Интерфейс предоставляет возможности формирования и выполнения запросов к базе данных с целью получения свойств объектов определенного класса, предоставляет доступ к объекту набора данных. Работа с объектом, реализующим интерфейс IContextDataSet заключается в формировании структуры набора данных и последующих обращениях к ним.
|
5.9.3.3. Интерфейс IConstants | ||||||||||||||||||||||||||||||||||||||||||
01 IConstants = interface(IDispatch) 02 ['{7E7B2D66-5E7C-496A-AE06-EFC485007500}'] 03 property qpWhat: Integer; 04 property qpWhere: Integer; 05 property qpOrder: Integer; 06 property qpGroup: Integer; 07 property qpHaving: Integer; 08 property qsNone: Integer; 09 property qsObjectID: Integer; 10 property qsParentID: Integer; 11 property qsHasChildren: Integer; 12 property qsFilterCondition: Integer; 13 property qsUplink: Integer; 14 property qsRootOnly: Integer; 15 property qsDescending: Integer; 16 property qsCount: Integer; 17 property qsSum: Integer; 18 property qsMin: Integer; 19 property qsMax: Integer; 20 property qsAverage: Integer; 21 property qsMasterLink: Integer; 22 property qsSelectedOnly: Integer; 23 end; Интерфейс предоставляет символические имена констант, необходимых для работы с объектом, реализующим интерфейс IContextDataSet.
|
5.9.3.4. Интерфейс IFormContext |
01 IFormContext = interface(IDispatch) 02 ['{1944F1C8-CAEA-4CF9-9A4D-CE3423508FF7}'] 03 function ChangedControl: OleVariant; 04 function ControlCount: Integer; 05 function ButtonCount: Integer; 06 function ID: WideString; 07 procedure Cancel; 08 function ControlExists(const Name: WideString): WordBool; 09 function ChangedControlName: WideString; 10 function ParentForm: OleVariant; 11 function RoutineID: WideString; 12 procedure PreInitControl(const Name: WideString; Value: OleVariant); 13 procedure NavigatorNext; 14 procedure NavigatorPrevious; 15 function NavigatorCanNext: WordBool; 16 function NavigatorCanPrevious: WordBool; 17 procedure RefreshView(RefreshAll: WordBool); 18 function ExpressionContextValue(const Name: WideString): OleVariant; safecall; 19 property Controls[Name: OleVariant]: IControl; 20 property Buttons[Name: OleVariant]: IButton; 21 property Enabled: WordBool; 22 end; Представляет собой модель формы задания параметров. Члены интерфейса доступны для использования в скриптах форм задания параметров.
|
5.9.3.5. Интерфейс IControl |
01 IControl = interface(IDispatch) 02 ['{0662001F-D3D5-4F28-98AC-9B499F70E856}'] 03 function Name: WideString; 04 procedure SetHint(const Value: WideString); 05 procedure RefreshLinkedView; 06 property Value: OleVariant; 07 property ReadOnly: WordBool; 08 property IsValid: WordBool; 09 property IsEmpty: WordBool; 10 end; Моделирует элемент управления на форме задания параметров. Позволяет управлять поведением элементов управления на форме.
|
5.9.3.6. Интерфейс IButton |
1 IButton = interface(IDispatch) 2 ['{1618406F-B9F1-4C5F-BC35-C2A154837CA9}'] 3 function Name: WideString; safecall; 4 procedure Click; safecall; 5 property Enabled: WordBool; 6 end; Моделирует командную кнопку на форме задания параметров. Позволяет управлять поведением кнопки на форме.
|
5.9.3.7. Интерфейс IBinaryData |
01 IBinaryData = interface(IDispatch) 02 ['{8A9F7CB3-230A-4048-B938-852CBF6ADB2D}'] 03 procedure Load(const Src: OleVariant); 04 procedure Append(const Src: OleVariant); 05 procedure Save(const Dst: OleVariant); 06 function Size: Cardinal; 07 function ToString(Encoding: WideString): WideString; 08 procedure FromString(Data: OleVariant); 09 procedure AppendString(Data: OleVariant); 10 function ToBase64: WideString; 11 procedure FromBase64(Data: OleVariant); Представляет набор двоичных данных.
|
5.9.3.8. Интерфейс IContextExpressionInfo |
1 IContextExpressionInfo = interface(IUnknown) 2 ['{C7518427-B515-4EB4-B698-88656E6CBF7C}'] 3 function Count: Integer; 4 function ItemName(Index: Integer): WideString; 5 function ItemValue(Index: Integer): OleVariant; 6 function ItemDomain(Index: Integer): OleVariant; 7 end; Через реализацию этого интерфейса передаются значения контекстных переменных при обращении к функции selectValueинтерфейса IContext.
|
5.9.3.9. Интерфейс IExceptionHandler |
1 IExceptionHandler = interface(IDispatch) 2 ['{3C3C7202-5ED5-4EB4-9CDD-A929C18CA8BD}'] 3 procedure HandleException(ContextObject: OleVariant; 4 const Message: WideString; 5 const ExtentedInfo: WideString); 6 end; Реализовав интерфейс IExceptionHandler разработчик решений может получать уведомления о возникающих при работе исключительных ситуациях. При возникновении исключения объект, реализующий интерфейс, получит текст сообщения об ошибке и расширенную информацию. Для реализации интерфеса используется библиотека hse.tlb, входящая в состав поставки решения. Перед началом работы с ней, необходимо зарегистрировать ее в операционной системе. Для установки настроек интерфейса необходимо открыть Системную форму раздела АДМИНИСТРАТОРУ, перейти на вкладку Настройки и в столбце "Заголовок закладки" установить фильтр "Обработка ошибок". После этого в качестве значения Идентификатора класса установить "IExceptionHandler" без кавычек. Для Библиотеки кода указать значение HSE.tlb |
5.9.3.10. Справочник по интерфейсам |
5.9.3.10.1. Перечисление TQueryPart | ||||||||||||||||||||||||
1type 2 TQueryPart = (qpWhat, qpWhere, qpOrder, qpGroup, qpHaving, qpInnerJoin, 3 qpOuterJoin); Или 01type 02 TQueryPart = TOleEnum; 03const 04 qpWhat = $00000000; 05 qpWhere = $00000001; 06 qpOrder = $00000002; 07 qpGroup = $00000003; 08 qpHaving = $00000004; 09 qpInnerJoin = $00000005; 10 qpOuterJoin = $00000006; Элементы перечисления:
|
5.9.3.10.2. Перечисление TQuerySpecial | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1type 2 TQuerySpecial = (qsNone, qsObjectID, qsParentID, qsHasChildren, 3 qsFilterCondition, qsUplink, qsRootOnly, qsDescending, qsCount, qsSum, qsMin, 4 qsMax, qsAverage, qsMasterLink, qsSelectedOnly, qsDistinct, qsViewCondition, 5 qsCaseInsensitive, qsAsString, qsListed, qsName, qsDescription, qsFunction, 6 qsCountDistinct, qsBoolean, qsExact, qsSearchIndex, qsOptimizationParameters); Или 01type 02 TQuerySpecial = TOleEnum; 03const 04 qsNone = $00000000; 05 qsObjectID = $00000001; 06 qsParentID = $00000002; 07 qsHasChildren = $00000003; 08 qsFilterCondition = $00000004; 09 qsUplink = $00000005; 10 qsRootOnly = $00000006; 11 qsDescending = $00000007; 12 qsCount = $00000008; 13 qsSum = $00000009; 14 qsMin = $0000000A; 15 qsMax = $0000000B; 16 qsAverage = $0000000C; 17 qsMasterLink = $0000000D; 18 qsSelectedOnly = $0000000E; 19 qsDistinct = $0000000F; 20 qsViewCondition = $00000010; 21 qsCaseInsensitive = $00000011; 22 qsAsString = $00000012; 23 qsListed = $00000013; 24 qsName = $00000014; 25 qsDescription = $00000015; 26 qsFunction = $00000016; 27 qsCountDistinct = $00000017; 28 qsBoolean = $00000018; 29 qsExact = $00000019; 30 qsSearchIndex = $0000001A; 31 qsOptimizationParameters = $0000001B; Элементы перечисления:
|
5.9.3.10.3. Интерфейс IButton |
1type 2 IButton = interface(IDispatch) 3 ['{1618406F-B9F1-4C5F-BC35-C2A154837CA9}'] 4 function Get_Enabled: WordBool; safecall; 5 procedure Set_Enabled(Value: WordBool); safecall; 6 function Name: WideString; safecall; 7 procedure Click; safecall; 8 property Enabled: WordBool read Get_Enabled write Set_Enabled; 9 end; |
5.9.3.10.3.1. Свойства | ||||||||
Свойства интерфейса IButton:
|
5.9.3.10.3.2. Метод Click |
5.9.3.10.3.3. Метод Name |
Метод интерфейса IButton. function IButton.Name: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.4. Интерфейс IContext |
001type 002 IContext = interface(IDispatch) 003 ['{79847D79-A3BE-408F-B59F-662B91BC6350}'] 004 function Get_ContextObject: IDispatch; safecall; 005 function Get_UserName: WideString; safecall; 006 function Get_NegotiateAuth: WordBool; safecall; 007 function Get_Language: WideString; safecall; 008 procedure Set_Language(Value: WideString); safecall; 009 function Get_TimeBias: Double; safecall; 010 function getName(ID: OleVariant): WideString; safecall; 011 function getDescription(ID: OleVariant): WideString; safecall; 012 function getPropValue(const ClassName: WideString; const PropName: WideString; 013 ID: OleVariant): OleVariant; safecall; 014 procedure setPropValue(const ClassName: WideString; const PropName: WideString; 015 ID: OleVariant; Value: OleVariant); safecall; 016 procedure getPropValues(const ClassName: WideString; 017 const PropName: WideString; IDS: OleVariant; OnValueEvent: OleVariant; 018 ThreadCount: Integer; ThreadSafe: WordBool); safecall; 019 procedure setPropValues(const ClassName: WideString; 020 const PropName: WideString; IDS: OleVariant; OnValueNeededEvent: OleVariant; 021 ThreadCount: Integer; ThreadSafe: WordBool); safecall; 022 function createDataSet(const TargetClassName: WideString): IContextDataSet; safecall; 023 function select(const ClassName: WideString; QueryItems: OleVariant): IDispatch; safecall; 024 function executeMethod(const ClassName: WideString; 025 const MethodName: WideString; Params: OleVariant): OleVariant; safecall; 026 function getClass(const ClassName: WideString): WideString; safecall; 027 function enumerationItem(ItemIdentifier: OleVariant): WideString; safecall; 028 function getResource(const Name: WideString): WideString; safecall; 029 function bulkInsert(const ClassName: WideString; 030 const Data: IDispatch): IContextDataSet; safecall; 031 function PreProcessScript(const Script: WideString; Indent: WordBool; 032 const CommentMark: WideString): WideString; safecall; 033 function executeReport(const ClassName: WideString; 034 const TemplateName: WideString; Params: OleVariant): IDispatch; safecall; 035 procedure saveReport(const ClassName: WideString; 036 const TemplateName: WideString; Params: OleVariant; const FileName: WideString); safecall; 037 function Get_Variable(const Name: WideString; Persistent: WordBool): OleVariant; safecall; 038 procedure Set_Variable(const Name: WideString; Persistent: WordBool; 039 Value: OleVariant); safecall; 040 function DebugString(const Message: WideString): WideString; safecall; 041 procedure raiseManagedException(const ExceptionMessage: WideString); safecall; 042 function createGUID: WideString; safecall; 043 function getTempFileName(const Extension: WideString): WideString; safecall; 044 function HasUI: WordBool; safecall; 045 function Handle: Integer; safecall; 046 procedure processStart(const Description: WideString; ItemCount: Integer; 047 CanAbort: WordBool); safecall; 048 function processStep: WordBool; safecall; 049 procedure processStop; safecall; 050 procedure Sleep(MSecs: Integer); safecall; 051 function executeConsoleProcess(const CommandLine: WideString; 052 MaxDuration: Integer; const OutputData: OleVariant): Integer; safecall; 053 function downloadData(const Host: WideString; const Url: WideString; 054 const UserName: WideString; const Password: WideString; 055 NegotiateAuth: WordBool; PostData: OleVariant; 056 const PostContentType: WideString; PostDataIsBinary: WordBool; 057 CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): OleVariant; safecall; 058 function LineBreak: WideString; safecall; 059 function Transliterate(const Value: WideString): WideString; safecall; 060 procedure CompareLists(var List1: OleVariant; var List2: OleVariant; 061 const Delimiter: WideString; CaseSensitive: WordBool); safecall; 062 function parseJSON(const JSON: WideString): WideString; safecall; 063 function ConvertExcel(Source: OleVariant; const Format: WideString): IDispatch; safecall; 064 function createBinaryData: IDispatch; safecall; 065 function getCRC(Data: OleVariant): WideString; safecall; 066 function buildNamedFile(const Data: IDispatch; 067 const StoredFileName: WideString; Propmpt: WordBool; 068 Compress: WordBool): IDispatch; safecall; 069 procedure parseNamedFile(NamedFile: OleVariant; out FileName: OleVariant; 070 out Data: OleVariant); safecall; 071 function createRaster: IDispatch; safecall; 072 function BinaryToBitmap(const Data: IDispatch): IDispatch; safecall; 073 function getOleObject(const ClassID: WideString; 074 const AccessibleFileName: WideString): IDispatch; safecall; 075 function PlaceDataSet(const Range: IDispatch; const DataSet: IContextDataSet; 076 ShiftRows: WordBool; ShiftColumns: WordBool): Integer; safecall; 077 procedure ExportObject(var Document: OleVariant; const ID: WideString; 078 const ClassID: WideString); safecall; 079 function createZIPArchive: IDispatch; safecall; 080 function callRoutine(const ClassName: WideString; 081 const RoutineName: WideString; var RetValue: OleVariant; 082 const ScriptPart: OleVariant): WordBool; safecall; 083 function selectVaue(const ClassDomain: WideString; 084 const ExpressionContext: IUnknown; var Value: OleVariant): WordBool; safecall; 085 function editValues(const ValuesList: WideString; const Title: WideString; 086 UseTabs: WordBool; HideOKButton: WordBool; 087 const ScriptPart: OleVariant): WordBool; safecall; 088 function MsgBox(const Prompt: WideString; Buttons: LongWord; 089 const Title: WideString; const HelpFile: WideString; Context: LongWord): Integer; safecall; 090 function ShowMsgBox(const Prompt: WideString; Buttons: LongWord; 091 const Title: WideString; const HelpFile: WideString; Context: LongWord): Integer; safecall; 092 procedure showView(const ViewName: WideString; Key: OleVariant; 093 const DetailPropertyName: WideString); safecall; 094 procedure showDataSet(const DataSet: ContextDataSet; const Caption: WideString; 095 ColumnCaptions: OleVariant; ColumnOnChangeHandlers: OleVariant; 096 TakeActionsFromView: OleVariant); safecall; 097 procedure SaveExternalDataToFolder(const Resource: WideString; 098 const Folder: WideString); safecall; 099 function PerformAsyncTask(ID: OleVariant): WordBool; safecall; 100 procedure RebuildTextIndex(ClassID: OleVariant; FieldID: OleVariant; 101 ThreadCount: Integer); safecall; 102 function MainHandle: Integer; safecall; 103 function IsHTMLDocumentSafe(const HTML: WideString): WordBool; safecall; 104 function EnsafeHTMLDocument(const HTML: WideString; RemoveHead: WordBool; 105 Format: WordBool; PureXML: WordBool): WideString; safecall; 106 property ContextObject: IDispatch read Get_ContextObject; 107 property UserName: WideString read Get_UserName; 108 property NegotiateAuth: WordBool read Get_NegotiateAuth; 109 property Language: WideString read Get_Language write Set_Language; 110 property TimeBias: Double read Get_TimeBias; 111 property Variable[const Name: WideString; Persistent: WordBool]: OleVariant 112 read Get_Variable write Set_Variable; 113 end; |
5.9.3.10.4.1. Свойства | ||||||||||||||||||||||||||||
Свойства интерфейса IContext:
|
5.9.3.10.4.2. Метод BinaryToBitmap | ||||||||
Метод интерфейса IContext. function IContext.BinaryToBitmap(const Data: IDispatch): IDispatch; Параметры:
Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.3. Метод buildNamedFile | ||||||||||||||||||||
Метод интерфейса IContext. 1function IContext.buildNamedFile(const Data: IDispatch; 2 const StoredFileName: WideString; Propmpt: WordBool; 3 Compress: WordBool): IDispatch; Параметры:
Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.4. Метод bulkInsert | ||||||||||||
Метод интерфейса IContext. 1function IContext.bulkInsert(const ClassName: WideString; 2 const Data: IDispatch): IContextDataSet; Параметры:
Замечания: Возвращает значение типа IContextDataSet. |
5.9.3.10.4.5. Метод callRoutine | ||||||||||||||||||||
Метод интерфейса IContext. 1function IContext.callRoutine(const ClassName: WideString; 2 const RoutineName: WideString; var RetValue: OleVariant; 3 const ScriptPart: OleVariant): WordBool; Параметры:
Замечания: Возвращает значение типа WordBool. |
5.9.3.10.4.6. Метод CompareLists | ||||||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.CompareLists(var List1: OleVariant; var List2: OleVariant; 2 const Delimiter: WideString; CaseSensitive: WordBool); Параметры:
|
5.9.3.10.4.7. Метод ConvertExcel | ||||||||||||
Метод интерфейса IContext. 1function IContext.ConvertExcel(Source: OleVariant; 2 const Format: WideString): IDispatch; Параметры:
Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.8. Метод createBinaryData |
Метод интерфейса IContext. function IContext.createBinaryData: IDispatch; Метод не имеет параметров. Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.9. Метод createDataSet | ||||||||
Метод интерфейса IContext. function IContext.createDataSet(const TargetClassName: WideString): IContextDataSet; Параметры:
Замечания: Возвращает значение типа IContextDataSet. |
5.9.3.10.4.10. Метод createGUID |
Метод интерфейса IContext. function IContext.createGUID: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.11. Метод createRaster |
Метод интерфейса IContext. function IContext.createRaster: IDispatch; Метод не имеет параметров. Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.12. Метод createZIPArchive |
Метод интерфейса IContext. function IContext.createZIPArchive: IDispatch; Метод не имеет параметров. Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.13. Метод DebugString | ||||||||
Метод интерфейса IContext. function IContext.DebugString(const Message: WideString): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.14. Метод downloadData | ||||||||||||||||||||||||||||||||||||||||||||||||
Метод интерфейса IContext. 1function IContext.downloadData(const Host: WideString; const Url: WideString; 2 const UserName: WideString; const Password: WideString; 3 NegotiateAuth: WordBool; PostData: OleVariant; 4 const PostContentType: WideString; PostDataIsBinary: WordBool; 5 CanCache: WordBool; NewSession: WordBool; TimeOut: Integer): OleVariant; Параметры:
Замечания: Возвращает значение типа OleVariant. |
5.9.3.10.4.15. Метод editValues | ||||||||||||||||||||||||
Метод интерфейса IContext. 1function IContext.editValues(const ValuesList: WideString; 2 const Title: WideString; UseTabs: WordBool; HideOKButton: WordBool; 3 const ScriptPart: OleVariant): WordBool; Параметры:
Замечания: Возвращает значение типа WordBool. |
5.9.3.10.4.16. Метод EnsafeHTMLDocument | ||||||||||||||||||||
Метод интерфейса IContext. 1function IContext.EnsafeHTMLDocument(const HTML: WideString; 2 RemoveHead: WordBool; Format: WordBool; PureXML: WordBool): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.17. Метод enumerationItem | ||||||||
Метод интерфейса IContext. function IContext.enumerationItem(ItemIdentifier: OleVariant): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.18. Метод executeConsoleProcess | ||||||||||||||||
Метод интерфейса IContext. 1function IContext.executeConsoleProcess(const CommandLine: WideString; 2 MaxDuration: Integer; const OutputData: OleVariant): Integer; Параметры:
Замечания: Возвращает значение типа Integer. |
5.9.3.10.4.19. Метод executeMethod | ||||||||||||||||
Метод интерфейса IContext. 1function IContext.executeMethod(const ClassName: WideString; 2 const MethodName: WideString; Params: OleVariant): OleVariant; Параметры:
Замечания: Возвращает значение типа OleVariant. |
5.9.3.10.4.20. Метод executeReport | ||||||||||||||||
Метод интерфейса IContext. 1function IContext.executeReport(const ClassName: WideString; 2 const TemplateName: WideString; Params: OleVariant): IDispatch; Параметры:
Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.21. Метод ExportObject | ||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.ExportObject(var Document: OleVariant; const ID: WideString; 2 const ClassID: WideString); Параметры:
|
5.9.3.10.4.22. Метод getClass | ||||||||
Метод интерфейса IContext. function IContext.getClass(const ClassName: WideString): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.23. Метод getCRC | ||||||||
Метод интерфейса IContext. function IContext.getCRC(Data: OleVariant): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.24. Метод getDescription | ||||||||
Метод интерфейса IContext. function IContext.getDescription(ID: OleVariant): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.25. Метод getName | ||||||||
Метод интерфейса IContext. function IContext.getName(ID: OleVariant): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.26. Метод getOleObject | ||||||||||||
Метод интерфейса IContext. 1function IContext.getOleObject(const ClassID: WideString; 2 const AccessibleFileName: WideString): IDispatch; Параметры:
Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.27. Метод getPropValue | ||||||||||||||||
Метод интерфейса IContext. 1function IContext.getPropValue(const ClassName: WideString; 2 const PropName: WideString; ID: OleVariant): OleVariant; Параметры:
Замечания: Возвращает значение типа OleVariant. |
5.9.3.10.4.28. Метод getPropValues | ||||||||||||||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.getPropValues(const ClassName: WideString; 2 const PropName: WideString; IDS: OleVariant; OnValueEvent: OleVariant; 3 ThreadCount: Integer; ThreadSafe: WordBool); Параметры:
|
5.9.3.10.4.29. Метод getResource | ||||||||
Метод интерфейса IContext. function IContext.getResource(const Name: WideString): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.30. Метод getTempFileName | ||||||||
Метод интерфейса IContext. function IContext.getTempFileName(const Extension: WideString): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.31. Метод Handle |
Метод интерфейса IContext. function IContext.Handle: Integer; Метод не имеет параметров. Замечания: Возвращает значение типа Integer. |
5.9.3.10.4.32. Метод HasUI |
Метод интерфейса IContext. function IContext.HasUI: WordBool; Метод не имеет параметров. Замечания: Возвращает значение типа WordBool. |
5.9.3.10.4.33. Метод IsHTMLDocumentSafe | ||||||||
Метод интерфейса IContext. function IContext.IsHTMLDocumentSafe(const HTML: WideString): WordBool; Параметры:
Замечания: Возвращает значение типа WordBool. |
5.9.3.10.4.34. Метод LineBreak |
Метод интерфейса IContext. function IContext.LineBreak: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.35. Метод MainHandle |
Метод интерфейса IContext. function IContext.MainHandle: Integer; Метод не имеет параметров. Замечания: Возвращает значение типа Integer. |
5.9.3.10.4.36. Метод MsgBox | ||||||||||||||||||||||||
Метод интерфейса IContext. 1function IContext.MsgBox(const Prompt: WideString; Buttons: LongWord; 2 const Title: WideString; const HelpFile: WideString; Context: LongWord): Integer; Параметры:
Замечания: Возвращает значение типа Integer. |
5.9.3.10.4.37. Метод parseJSON | ||||||||
Метод интерфейса IContext. function IContext.parseJSON(const JSON: WideString): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.38. Метод parseNamedFile | ||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.parseNamedFile(NamedFile: OleVariant; 2 out FileName: OleVariant; out Data: OleVariant); Параметры:
|
5.9.3.10.4.39. Метод PerformAsyncTask | ||||||||
Метод интерфейса IContext. function IContext.PerformAsyncTask(ID: OleVariant): WordBool; Параметры:
Замечания: Возвращает значение типа WordBool. |
5.9.3.10.4.40. Метод PlaceDataSet | ||||||||||||||||||||
Метод интерфейса IContext. 1function IContext.PlaceDataSet(const Range: IDispatch; 2 const DataSet: IContextDataSet; ShiftRows: WordBool; 3 ShiftColumns: WordBool): Integer; Параметры:
Замечания: Возвращает значение типа Integer. |
5.9.3.10.4.41. Метод PreProcessScript | ||||||||||||||||
Метод интерфейса IContext. 1function IContext.PreProcessScript(const Script: WideString; Indent: WordBool; 2 const CommentMark: WideString): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.4.42. Метод processStart | ||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.processStart(const Description: WideString; 2 ItemCount: Integer; CanAbort: WordBool); Параметры:
|
5.9.3.10.4.43. Метод processStep |
Метод интерфейса IContext. function IContext.processStep: WordBool; Метод не имеет параметров. Замечания: Возвращает значение типа WordBool. |
5.9.3.10.4.44. Метод processStop |
5.9.3.10.4.45. Метод raiseManagedException | ||||||||
Метод интерфейса IContext. procedure IContext.raiseManagedException(const ExceptionMessage: WideString); Параметры:
|
5.9.3.10.4.46. Метод RebuildTextIndex | ||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.RebuildTextIndex(ClassID: OleVariant; FieldID: OleVariant; 2 ThreadCount: Integer); Параметры:
|
5.9.3.10.4.47. Метод SaveExternalDataToFolder | ||||||||||||
Метод интерфейса IContext. 1procedure IContext.SaveExternalDataToFolder(const Resource: WideString; 2 const Folder: WideString); Параметры:
|
5.9.3.10.4.48. Метод saveReport | ||||||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.saveReport(const ClassName: WideString; 2 const TemplateName: WideString; Params: OleVariant; const FileName: WideString); Параметры:
|
5.9.3.10.4.49. Метод select | ||||||||||||
Метод интерфейса IContext. 1function IContext.select(const ClassName: WideString; 2 QueryItems: OleVariant): IDispatch; Параметры:
Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.4.50. Метод selectVaue | ||||||||||||||||
Метод интерфейса IContext. 1function IContext.selectVaue(const ClassDomain: WideString; 2 const ExpressionContext: IUnknown; var Value: OleVariant): WordBool; Параметры:
Замечания: Возвращает значение типа WordBool. |
5.9.3.10.4.51. Метод setPropValue | ||||||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.setPropValue(const ClassName: WideString; 2 const PropName: WideString; ID: OleVariant; Value: OleVariant); Параметры:
|
5.9.3.10.4.52. Метод setPropValues | ||||||||||||||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.setPropValues(const ClassName: WideString; 2 const PropName: WideString; IDS: OleVariant; OnValueNeededEvent: OleVariant; 3 ThreadCount: Integer; ThreadSafe: WordBool); Параметры:
|
5.9.3.10.4.53. Метод showDataSet | ||||||||||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.showDataSet(const DataSet: ContextDataSet; 2 const Caption: WideString; ColumnCaptions: OleVariant; 3 ColumnOnChangeHandlers: OleVariant; TakeActionsFromView: OleVariant); Параметры:
|
5.9.3.10.4.54. Метод ShowMsgBox | ||||||||||||||||||||||||
Метод интерфейса IContext. 1function IContext.ShowMsgBox(const Prompt: WideString; Buttons: LongWord; 2 const Title: WideString; const HelpFile: WideString; Context: LongWord): Integer; Параметры:
Замечания: Возвращает значение типа Integer. |
5.9.3.10.4.55. Метод showView | ||||||||||||||||
Метод интерфейса IContext. 1procedure IContext.showView(const ViewName: WideString; Key: OleVariant; 2 const DetailPropertyName: WideString); Параметры:
|
5.9.3.10.4.56. Метод Sleep | ||||||||
Метод интерфейса IContext. procedure IContext.Sleep(MSecs: Integer); Параметры:
|
5.9.3.10.4.57. Метод Transliterate | ||||||||
Метод интерфейса IContext. function IContext.Transliterate(const Value: WideString): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.5. Интерфейс IContextDataSet |
01type 02 IContextDataSet = interface(IDispatch) 03 ['{466F3AF7-F899-4BC1-869D-1B17DCB86159}'] 04 procedure AddQueryItem(Part: TQueryPart; const Name: WideString; 05 Value: OleVariant; Special: TQuerySpecial; Context: OleVariant); safecall; 06 function Eof: WordBool; safecall; 07 function Field(const Name: WideString): OleVariant; safecall; 08 function FieldCount: Integer; safecall; 09 function FieldName(Index: Integer): WideString; safecall; 10 procedure Next; safecall; 11 procedure Split(OnRowEvent: OleVariant; ChunkSize: Integer; 12 ThreadCount: Integer; ThreadSafe: WordBool); safecall; 13 function AsJSON: WideString; safecall; 14 function AsXML: WideString; safecall; 15 function AsBinaryData: IDispatch; safecall; 16 end; |
5.9.3.10.5.1. Метод AddQueryItem | ||||||||||||||||||||||||
Метод интерфейса IContextDataSet. 1procedure IContextDataSet.AddQueryItem(Part: TQueryPart; 2 const Name: WideString; Value: OleVariant; Special: TQuerySpecial; 3 Context: OleVariant); Параметры:
|
5.9.3.10.5.2. Метод AsBinaryData |
Метод интерфейса IContextDataSet. function IContextDataSet.AsBinaryData: IDispatch; Метод не имеет параметров. Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.5.3. Метод AsJSON |
Метод интерфейса IContextDataSet. function IContextDataSet.AsJSON: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.5.4. Метод AsXML |
Метод интерфейса IContextDataSet. function IContextDataSet.AsXML: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.5.5. Метод Eof |
Метод интерфейса IContextDataSet. function IContextDataSet.Eof: WordBool; Метод не имеет параметров. Замечания: Возвращает значение типа WordBool. |
5.9.3.10.5.6. Метод Field | ||||||||
Метод интерфейса IContextDataSet. function IContextDataSet.Field(const Name: WideString): OleVariant; Параметры:
Замечания: Возвращает значение типа OleVariant. |
5.9.3.10.5.7. Метод FieldCount |
Метод интерфейса IContextDataSet. function IContextDataSet.FieldCount: Integer; Метод не имеет параметров. Замечания: Возвращает значение типа Integer. |
5.9.3.10.5.8. Метод FieldName | ||||||||
Метод интерфейса IContextDataSet. function IContextDataSet.FieldName(Index: Integer): WideString; Параметры:
Замечания: Возвращает значение типа WideString. |
5.9.3.10.5.9. Метод Next |
5.9.3.10.5.10. Метод Split | ||||||||||||||||||||
Метод интерфейса IContextDataSet. 1procedure IContextDataSet.Split(OnRowEvent: OleVariant; ChunkSize: Integer; 2 ThreadCount: Integer; ThreadSafe: WordBool); Параметры:
|
5.9.3.10.6. Интерфейс IContextExpressionInfo |
1type 2 IContextExpressionInfo = interface(IUnknown) 3 ['{C7518427-B515-4EB4-B698-88656E6CBF7C}'] 4 function LookupExpressionContext(const Identifier: WideString; 5 out DomainID: WideString; out Value: WideString): WordBool; safecall; 6 procedure SerializeExpressionContext(const RootNode: IDispatch); safecall; 7 end; |
5.9.3.10.6.1. Метод LookupExpressionContext | ||||||||||||||||
Метод интерфейса IContextExpressionInfo. 1function IContextExpressionInfo.LookupExpressionContext(const Identifier: WideString; 2 out DomainID: WideString; out Value: WideString): WordBool; Параметры:
Замечания: Возвращает значение типа WordBool. |
5.9.3.10.6.2. Метод SerializeExpressionContext | ||||||||
Метод интерфейса IContextExpressionInfo. procedure IContextExpressionInfo.SerializeExpressionContext(const RootNode: IDispatch); Параметры:
|
5.9.3.10.7. Интерфейс IControl |
01type 02 IControl = interface(IDispatch) 03 ['{0662001F-D3D5-4F28-98AC-9B499F70E856}'] 04 function Name: WideString; safecall; 05 function Get_Value: OleVariant; safecall; 06 procedure Set_Value(Value: OleVariant); safecall; 07 function Get_ReadOnly: WordBool; safecall; 08 procedure Set_ReadOnly(Value: WordBool); safecall; 09 function Get_IsValid: WordBool; safecall; 10 procedure Set_IsValid(Value: WordBool); safecall; 11 function Get_IsEmpty: WordBool; safecall; 12 procedure SetHint(const Value: WideString); safecall; 13 procedure RefreshLinkedView; safecall; 14 function Get_Visible: WordBool; safecall; 15 property Value: OleVariant read Get_Value write Set_Value; 16 property ReadOnly: WordBool read Get_ReadOnly write Set_ReadOnly; 17 property IsValid: WordBool read Get_IsValid write Set_IsValid; 18 property IsEmpty: WordBool read Get_IsEmpty; 19 property Visible: WordBool read Get_Visible; 20 end; |
5.9.3.10.7.1. Свойства | ||||||||||||||||||||||||
Свойства интерфейса IControl:
|
5.9.3.10.7.2. Метод Name |
Метод интерфейса IControl. function IControl.Name: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.7.3. Метод RefreshLinkedView |
5.9.3.10.7.4. Метод SetHint | ||||||||
Метод интерфейса IControl. procedure IControl.SetHint(const Value: WideString); Параметры:
|
5.9.3.10.8. Интерфейс IExceptionHandler |
1type 2 IExceptionHandler = interface(IDispatch) 3 ['{3C3C7202-5ED5-4EB4-9CDD-A929C18CA8BD}'] 4 procedure HandleException(ContextObject: OleVariant; const Message: WideString; 5 const ExtentedInfo: WideString; SupportServiceData: OleVariant); safecall; 6 end; |
5.9.3.10.8.1. Метод HandleException | ||||||||||||||||||||
Метод интерфейса IExceptionHandler. 1procedure IExceptionHandler.HandleException(ContextObject: OleVariant; 2 const Message: WideString; const ExtentedInfo: WideString; 3 SupportServiceData: OleVariant); Параметры:
|
5.9.3.10.9. Интерфейс IExternalContext |
1type 2 IExternalContext = interface(IDispatch) 3 ['{EA2F1CDA-53F6-40E9-A2B7-0A80AB84D177}'] 4 procedure Connect(const Database: WideString); safecall; 5 end; |
5.9.3.10.9.1. Метод Connect | ||||||||
Метод интерфейса IExternalContext. procedure IExternalContext.Connect(const Database: WideString); Параметры:
|
5.9.3.10.10. Интерфейс IFormContext |
01type 02 IFormContext = interface(IDispatch) 03 ['{1944F1C8-CAEA-4CF9-9A4D-CE3423508FF7}'] 04 function ID: WideString; safecall; 05 function RoutineID: WideString; safecall; 06 function ControlCount: Integer; safecall; 07 function Get_Controls(Name: OleVariant): IControl; safecall; 08 function ControlExists(const Name: WideString): WordBool; safecall; 09 function ButtonCount: Integer; safecall; 10 function Get_Buttons(Name: OleVariant): IButton; safecall; 11 function Get_Enabled: WordBool; safecall; 12 procedure Set_Enabled(Value: WordBool); safecall; 13 function ChangedControl: OleVariant; safecall; 14 function ChangedControlName: WideString; safecall; 15 procedure Cancel; safecall; 16 function ParentForm: OleVariant; safecall; 17 procedure PreInitControl(const Name: WideString; Value: OleVariant); safecall; 18 procedure NavigatorNext; safecall; 19 procedure NavigatorPrevious; safecall; 20 function NavigatorCanNext: WordBool; safecall; 21 function NavigatorCanPrevious: WordBool; safecall; 22 procedure RefreshView(RefreshAll: WordBool); safecall; 23 function ExpressionContextValue(const Name: WideString): OleVariant; safecall; 24 property Controls[Name: OleVariant]: IControl read Get_Controls; 25 property Buttons[Name: OleVariant]: IButton read Get_Buttons; 26 property Enabled: WordBool read Get_Enabled write Set_Enabled; 27 end; |
5.9.3.10.10.1. Свойства | ||||||||||||||||
Свойства интерфейса IFormContext:
|
5.9.3.10.10.2. Метод ButtonCount |
Метод интерфейса IFormContext. function IFormContext.ButtonCount: Integer; Метод не имеет параметров. Замечания: Возвращает значение типа Integer. |
5.9.3.10.10.3. Метод Cancel |
5.9.3.10.10.4. Метод ChangedControl |
Метод интерфейса IFormContext. function IFormContext.ChangedControl: OleVariant; Метод не имеет параметров. Замечания: Возвращает значение типа OleVariant. |
5.9.3.10.10.5. Метод ChangedControlName |
Метод интерфейса IFormContext. function IFormContext.ChangedControlName: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.10.6. Метод ControlCount |
Метод интерфейса IFormContext. function IFormContext.ControlCount: Integer; Метод не имеет параметров. Замечания: Возвращает значение типа Integer. |
5.9.3.10.10.7. Метод ControlExists | ||||||||
Метод интерфейса IFormContext. function IFormContext.ControlExists(const Name: WideString): WordBool; Параметры:
Замечания: Возвращает значение типа WordBool. |
5.9.3.10.10.8. Метод ExpressionContextValue | ||||||||
Метод интерфейса IFormContext. function IFormContext.ExpressionContextValue(const Name: WideString): OleVariant; Параметры:
Замечания: Возвращает значение типа OleVariant. |
5.9.3.10.10.9. Метод ID |
Метод интерфейса IFormContext. function IFormContext.ID: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.10.10. Метод NavigatorCanNext |
Метод интерфейса IFormContext. function IFormContext.NavigatorCanNext: WordBool; Метод не имеет параметров. Замечания: Возвращает значение типа WordBool. |
5.9.3.10.10.11. Метод NavigatorCanPrevious |
Метод интерфейса IFormContext. function IFormContext.NavigatorCanPrevious: WordBool; Метод не имеет параметров. Замечания: Возвращает значение типа WordBool. |
5.9.3.10.10.12. Метод NavigatorNext |
5.9.3.10.10.13. Метод NavigatorPrevious |
5.9.3.10.10.14. Метод ParentForm |
Метод интерфейса IFormContext. function IFormContext.ParentForm: OleVariant; Метод не имеет параметров. Замечания: Возвращает значение типа OleVariant. |
5.9.3.10.10.15. Метод PreInitControl | ||||||||||||
Метод интерфейса IFormContext. procedure IFormContext.PreInitControl(const Name: WideString; Value: OleVariant); Параметры:
|
5.9.3.10.10.16. Метод RefreshView | ||||||||
Метод интерфейса IFormContext. procedure IFormContext.RefreshView(RefreshAll: WordBool); Параметры:
|
5.9.3.10.10.17. Метод RoutineID |
Метод интерфейса IFormContext. function IFormContext.RoutineID: WideString; Метод не имеет параметров. Замечания: Возвращает значение типа WideString. |
5.9.3.10.11. Интерфейс IRaster |
01type 02 IRaster = interface(IDispatch) 03 ['{4F27D016-03C2-4D48-ABF7-FD547E859F79}'] 04 function Get_Width: Integer; safecall; 05 procedure Set_Width(Value: Integer); safecall; 06 function Get_Height: Integer; safecall; 07 procedure Set_Height(Value: Integer); safecall; 08 function Get_DefaultColor: Integer; safecall; 09 procedure Set_DefaultColor(Value: Integer); safecall; 10 procedure Load(Src: OleVariant); safecall; 11 procedure SaveBitmap(Dst: OleVariant); safecall; 12 procedure SavePNG(Dst: OleVariant); safecall; 13 procedure SaveJPG(Dst: OleVariant; Quality: Integer); safecall; 14 procedure FlipVertical; safecall; 15 procedure FlipHorizontal; safecall; 16 procedure Rotate; safecall; 17 procedure Resize(NewWidth: Integer; NewHeight: Integer; Center: WordBool); safecall; 18 procedure Stretch(NewWidth: Integer; NewHeight: Integer); safecall; 19 procedure StretchToSize(MaxWidth: OleVariant; MaxHeight: OleVariant; 20 MaxSize: OleVariant); safecall; 21 procedure Overlay(Src: OleVariant; X: Integer; Y: Integer; Width: Integer; 22 Height: Integer); safecall; 23 property Width: Integer read Get_Width write Set_Width; 24 property Height: Integer read Get_Height write Set_Height; 25 property DefaultColor: Integer read Get_DefaultColor write Set_DefaultColor; 26 end; |
5.9.3.10.11.1. Свойства | ||||||||||||||||
Свойства интерфейса IRaster:
|
5.9.3.10.11.2. Метод FlipHorizontal |
5.9.3.10.11.3. Метод FlipVertical |
5.9.3.10.11.4. Метод Load | ||||||||
Метод интерфейса IRaster. procedure IRaster.Load(Src: OleVariant); Параметры:
|
5.9.3.10.11.5. Метод Overlay | ||||||||||||||||||||||||
Метод интерфейса IRaster. 1procedure IRaster.Overlay(Src: OleVariant; X: Integer; Y: Integer; 2 Width: Integer; Height: Integer); Параметры:
|
5.9.3.10.11.6. Метод Resize | ||||||||||||||||
Метод интерфейса IRaster. 1procedure IRaster.Resize(NewWidth: Integer; NewHeight: Integer; 2 Center: WordBool); Параметры:
|
5.9.3.10.11.7. Метод Rotate |
5.9.3.10.11.8. Метод SaveBitmap | ||||||||
Метод интерфейса IRaster. procedure IRaster.SaveBitmap(Dst: OleVariant); Параметры:
|
5.9.3.10.11.9. Метод SaveJPG | ||||||||||||
Метод интерфейса IRaster. procedure IRaster.SaveJPG(Dst: OleVariant; Quality: Integer); Параметры:
|
5.9.3.10.11.10. Метод SavePNG | ||||||||
Метод интерфейса IRaster. procedure IRaster.SavePNG(Dst: OleVariant); Параметры:
|
5.9.3.10.11.11. Метод Stretch | ||||||||||||
Метод интерфейса IRaster. procedure IRaster.Stretch(NewWidth: Integer; NewHeight: Integer); Параметры:
|
5.9.3.10.11.12. Метод StretchToSize | ||||||||||||||||
Метод интерфейса IRaster. 1procedure IRaster.StretchToSize(MaxWidth: OleVariant; MaxHeight: OleVariant; 2 MaxSize: OleVariant); Параметры:
|
5.9.3.10.12. Интерфейс IScannerTools |
1type 2 IScannerTools = interface(IDispatch) 3 ['{FC1B3C9F-7DE9-4909-B57D-6D33E3B0A87A}'] 4 function AcquireImage(Silent: WordBool): IDispatch; safecall; 5 function AcquirePDF: IDispatch; safecall; 6 end; |
5.9.3.10.12.1. Метод AcquireImage | ||||||||
Метод интерфейса IScannerTools. function IScannerTools.AcquireImage(Silent: WordBool): IDispatch; Параметры:
Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.12.2. Метод AcquirePDF |
Метод интерфейса IScannerTools. function IScannerTools.AcquirePDF: IDispatch; Метод не имеет параметров. Замечания: Возвращает значение типа IDispatch. |
5.9.3.10.13. Интерфейс ISetOfObjectsEditor |
1type 2 ISetOfObjectsEditor = interface(IDispatch) 3 ['{6D3662A7-D9FF-4BD6-8D92-A4EA2058C74E}'] 4 function Get_DomainName: WideString; safecall; 5 procedure Set_DomainName(Value: WideString); safecall; 6 function Get_SelectedCount: Integer; safecall; 7 property DomainName: WideString read Get_DomainName write Set_DomainName; 8 property SelectedCount: Integer read Get_SelectedCount; 9 end; |
5.9.3.10.13.1. Свойства | ||||||||||||
Свойства интерфейса ISetOfObjectsEditor:
|
5.9.3.10.14. Интерфейс IZIPArchive |
01type 02 IZIPArchive = interface(IDispatch) 03 ['{11C9400F-F262-4F72-882F-5AA5A4531591}'] 04 procedure Load(Src: OleVariant); safecall; 05 procedure Save(Src: OleVariant); safecall; 06 function Get_FileCount: Integer; safecall; 07 function Get_FileName(Index: Integer): WideString; safecall; 08 function Get_FileData(Index: Integer): OleVariant; safecall; 09 procedure AddFile(const FileName: WideString; Data: OleVariant); safecall; 10 function Get_FileSize(Index: Integer): Int64; safecall; 11 function Get_FileDateTime(Index: Integer): TDateTime; safecall; 12 function Get_FileCRC(Index: Integer): WideString; safecall; 13 function Get_UTF8Support: WordBool; safecall; 14 procedure Set_UTF8Support(Value: WordBool); safecall; 15 property FileCount: Integer read Get_FileCount; 16 property FileName[Index: Integer]: WideString read Get_FileName; 17 property FileData[Index: Integer]: OleVariant read Get_FileData; 18 property FileSize[Index: Integer]: Int64 read Get_FileSize; 19 property FileDateTime[Index: Integer]: TDateTime read Get_FileDateTime; 20 property FileCRC[Index: Integer]: WideString read Get_FileCRC; 21 property UTF8Support: WordBool read Get_UTF8Support write Set_UTF8Support; 22 end; |
5.9.3.10.14.1. Свойства | ||||||||||||||||||||
Свойства интерфейса IZIPArchive:
|