Создание суммарных выходных форм.
Технология предназначена для получения выходных форм, в которых каждая строка таблицы должна формироваться на некотором фрагменте БД, а столбцы являются суммарными значениями, которые подсчитываются на записях этого фрагменты.
Реализована данная технология с использованием рабочей БД, имя которой в стандартном варианте WORK. Единственным условием для БД WORK является наличие в таблице описания полей (файле work. fst) строки “920 0 v920”. База данных может состоять только из 8-ми основных файлов + файл work. fst.
При формировании таблицы в БД WORK создаются новые записи, в которые записываются суммарные значения. Для каждой строки таблицы формируется запись в рабочей БД. Таблица создаются стандартными средствами для записей рабочей БД с учетом полей, которые формируются для данной таблицы. Сама таблица размещается в директории основной БД.
Для реализации этой технологии следует дополнительно к таблице создать файл с именем таблицы и расширением ‘smf’, состоящий из секций, данные которых задаются следующим образом:
Секция [ROWQRY], является обязательной. Строки этой секции являются форматами, которые выполняются на фиктивной записи и дают набор строк. Каждая строка рассматривается как запрос на поиск для отбора записей из текущей БД, по которым будут подсчитаны суммы и помещены во вновь созданную запись БД WORK. Секция [FLDMODE1001] является необязательной. Строки этой секции являются форматами, которые выполняются на фиктивной записи и дают набор строк. В общем случае их количество равно количеству строк секции ROWQRY. Каждая строка – это значение поля 1001, которое добавляется во все записи, отобранные по запросу этого же порядкового номера. Секция [FLDTEXT] является необязательной. Если она есть, то она формирует строки, которые являются форматами. При выполнении на фиктивной записи они дают набор значений для поля с меткой 1 в записи БД WORK этого же порядкового номера. Секция [FLDSUM] является обязательной, представляет собой набор форматов. Каждый формат выполняется для всех записей текущего фрагмента, результаты форматирования суммируются и помещаются в поле созданной записи БД WORK. Метка поля соответствует порядковому номеру строки формата плюс 1 (т. е. метки суммарных полей: 2, 3, 4, …).Последовательность формирования таблицы следующая:
- В поле 1 значение из набора строк секции FLDTEXT. Порядковый номер строки соответствует порядковому номеру запроса. В поля с метками начиная с 2 записываются значения сумм, подсчитанных форматами секции FLDSUM. В поле 920 записывается идентификатор, единый и уникальный для всех сформированных записей БД WORK. После завершения цикла по всем строкам-запросам в БД WORK отбираются записи по идентификатору и для этих записей формируется таблица по стандартной технологии. Т. о. сама таблица создается стандартными средствами в директории основной БД, но с учетом меток полей, которые будут создаваться в записях БД WORK.


