Бабий А. А., Качаев А. В., Олейников В. В.

Генерирование произвольных табличных форм в системе ДЕЛЬТА

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

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

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

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

Атомарная подтаблица состоит из клеток, заполненных по одинаковому формату. Чтобы описать атомарную подтаблицу, достаточно задать её размер в клетках и описать вид одной клетки, т.е. её размеры, разделители, формат заполнения и т.д. Клетка может иметь довольно сложную структуру: допускаются данные различных типов, литералы, выделение столбцов внутри клетки и т.д.

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

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

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


Опубликовано: Препринт N 1 ВЦ СО АН СССР Красноярск 1983
© Алексей Бабий 1983