Створення прикладних модулів

Модулі та їх взаємозв'язки

Бази даних БАС складаються з двох системних баз, і по одній базі даних на кожен прикладний модуль. В системні бази входять BAS_MAIN і BASADMIN. Перша містить системні процедури, функції, конфігурацію. Друга - клієнтські настройки адміністратора баз даних, наприклад, список користувачів, права доступу до модулів і до операцій в модулях і т.п.

Прикладні бази даних використовуються для зберігання операцій над об'єктами, результатів обробки, а також процедур і системних таблиць, що описують процеси введення і обробки операцій. Наприклад, для бухгалтерії використовуються бази даних BAS_BALANS, BAS_UMC, BAS_PARTNER, BAS_OSF, BAS_ZP.

Міжмодульні зв'язки реалізуються під час налаштування операцій за допомогою процедур, що викликаються системою при проводці операції. У момент проводки процедура передає необхідні дані в пов'язані модулі, а в момент скасування - видаляє передану інформацію. Наприклад, при проведенні накладної на відпуск товарів, з бази BAS_UMC в базу даних BAS_PARTNER передаються відомості про операції відпустки.

Для модулів, використовуваних в бух.обліку, є системний зв'язок по бухгалтерських проводках. При проводці будь-якої операції в базі BAS_BALANS формуються проводки, що відображають цю операцію, а при скасуванні - проводки видаляються.

Структура прикладного модуля

Фактори обліку

Фактор обліку - це одна зі сторін аналізу особових рахунків. Всі фактори описуються деревоподібними довідниками. Приклади ознак: вулиці міста, джерела продукції, книги обліку, таблиця податку, підрозділу. Кількість факторів в загальному випадку може бути змінною. Список використаних факторів знаходиться у відповідній таблиці. Склад ознак однаковий у всіх таблицях, де використовується хоча б один з них.

Склад факторів обліку залежить від програми і від місця її застосування. Для зарплати це можуть бути, наприклад, підрозділи, категорії співробітників, таблиця прибуткового податку, тарифна ставка. Для абонентської служби - вулиці, котельні, пільги. Для збуту тепла - групи за видами фінансування, джерела тепла (котельні), групи за видами навантажень і т.п.

У програмі зарезервовано п'ять факторів. Їх призначення може змінюватися. Список використаних факторів знаходиться в таблиці SFaktor. В ній кожному фактору призначається конкретне застосування, що використовується в програмі. Кожному з факторів відповідає своя таблиця Lst_F1 - Lst_F5, що містить значення цього чинника. Список задіяних факторів доступний користувачеві на екранних формах з метою вибору способу відображення даних, формування відомостей і т.п. Незадіяні фактори можуть призначатися в міру виникнення необхідності.

 Види даних

У більшості прикладних модулів є безліч окремих завдань обліку одного і того ж об'єкта. Для вирішення кожного завдання потрібний свій набір параметрів, відмінний від іншого набору. Операції над об'єктами також спрямовані на вирішення тієї чи іншої задачі, отже, в параметрах операцій використовуються параметри різних сторін обліку.

Звичайним підходом в організації структури таблиці операцій є розміщення в одному записі операції всіх параметрів, які можуть знадобитися будь-коли. Так як, в кожній окремо взятій операції, використовується тільки частина параметрів, така організація структури бази даних стає надмірною через безліч невикористовуваних полів.

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

В ПК «БАС» ухвалений проміжний варіант. Введено поняття «Вид даних». Це набір параметрів, використовуваних для вирішення окремо взятої задачі по об'єкту обліку. В різних видах даних одна і та ж змінна може мати зовсім різне значення. Код виду даних заноситься в операції. За його значенням різниться сенс параметрів об'єкта. Одне і те ж поле в різних видах даних може мати різне прикладне призначення.

Інформація про види даних знаходиться в двох основних таблицях - SProdLst і SProdVar. В першій зберігається список використовуваних видів даних і їх властивості. У другій - структура видів даних, тобто набір змінних, використовуваних при роботі з видами даних. Процес зміни складу змінних відстежується системою підтримки структури таблиць бази даних. тобто, якщо в вид даних додається параметр з ім'ям, якого немає в структурі таблиць бази даних, то за допомогою тригерів в таблиці Sys_TableConv включається необхідність конвертації для таблиці операцій. Сам процес конвертації виконується по команді з інтерфейсної частини.

Особові рахунки

Особові рахунки - це перелік елементарних об'єктів і значення їх параметрів.

В різних прикладних модулях особові рахунки містять дані про різні об'єкти, наприклад в зарплаті - це співробітники підприємства, в партнерах - покупці, постачальники та ін., В матеріалах - номенклатура матеріалів. Залежно від модуля, в особових рахунках містяться різні дані. Але методи роботи з особовими рахунками однакові для всіх модулів.

В трьох основних таблицях містяться дані про особові рахунки:

- Lst_Ls - список особових рахунків;
- Lst_Prod - параметри особових рахунків;
- Lst_Corr- операції коригування.

Список особових рахунків Lst_Ls містить коди особових рахунків і період їх використання. Він використовується в основному для обмежень (контроль на наявність при використанні в операціях)

Параметри особових рахунків Lst_Prod є даними про особовий рахунок. Для кожного виду даних відводиться окремий запис, якщо у вигляді даних використовується хоча б один параметр типу «Особовий рахунок». Особливим є вид «Загальні дані» - це параметри особового рахунку, які використовуються при обробці будь-якого виду даних (KodProd=0).

Поля DwN, DwK визначають часовий діапазон дії параметрів. Не може бути в одному періоді дух записів параметрів одного і того ж виду даних. Поля KodUser, DateUser містять відомості про користувача, який змінював параметри в останній раз.

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

Таблиця Lst_Corr використовується в тих випадках, коли розрахунковим процедурам мало дискретності зміни параметрів особового рахунку в 1 місяць. Її структура збігається з LSt_Prod.

 Довідники

Технологія роботи з довідковими даними однакова у всіх завданнях. Її суть полягає в тому, що б створити довідник, визначити його структуру, організувати вікна для його наповнення і вибору з нього даних, прив'язати ключові поля довідника до параметрів операцій або об'єктів. Але беручи до уваги численності довідників в складній прикладній задачі їх створення представляє величезну рутину. А база даних, яка передбачає окрему таблицю (файл) для кожного довідника, забруднюється цими деталями, через що втрачається її наочність і, отже, ускладнюється процес впровадження і супроводу.

В ПК «БАС» використана спільність технології роботи з довідниками і створена автоматизована довідкова система. Створення та налагодження довідників проводиться в спеціальному графічному режимі, а підключення до параметрів операцій або видів даних виконується з відповідних режимів налаштування об'єктів. Дані всіх довідників знаходяться в одній таблиці модуля. Крім неї використовуються ще кілька системних таблиць для управління даними, структурою довідників і захистом доступу до даних. Але вивчення системних таблиць не є обов'язковим для розробника прикладних модулів. Його розрахункові процедури звертаються тільки до однієї -  SSprData.

Таблиця SSprData містить дані довідників. Поля розділяються на дві групи: системні та змінні. Системні поля містять ключові значення записів, період дії інформації, фактори обліку, дані про користувача, виконуючи коригування. Змінна частина відділяється від системної частини полем Pr_Str_Table.

Таблиця SSprLst містить список використовуваних довідників і їх опис.

Таблиця SSprGrup використовується для класифікації довідників за призначенням. Це деревоподібна структура, яка дозволяє згрупувати довідники за загальними ознаками. Це полегшує користувачеві вибір необхідного довідника під час роботи з екранами.

В таблиці SLst_Role знаходиться список ролей, яким дозволений доступ до довідників.

Таблиця SSprVa містить список змінних, використовуваних в якості параметрів довідників.

Таблиці Sys_TableVar і Sys_TableConv використовуються для управління структурою таблиці SSprData. При додаванні в довідник поля, яке ще не зустрічається в жодному іншому, зводиться прапор необхідності конвертації таблиці SSprDataКонвертація також стає необхідною, коли з довідника видаляється поле, і при цьому воно більше не використовується ні в жодному іншому.

Операції

Операції - це результати введення даних користувачами, а також результати роботи розрахункових процедур. Всі вони складаються з двох частин - підсумки і деталі. Підсумки знаходяться в таблиці  OPR1, а деталі – в OPR2.  Перша частина полів (до розділювача  Pr_Str_Table)  є системною, вона постійна і однакова для всіх прикладних модулів. Друга частина таблиця Opr1 залежить від налаштування операції, а Opr2 – від налаштування використовуваних видів даних.

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

Решта таблиці керування структурою операцій є системними. Вони зазвичай не використовуються процедурами обробки даних в прикладних модулях. Прикладному програмісту досить вивчити структуру перерахованих трьох таблиць.

Склад використовуваних змінних в операції знаходиться в таблиці Opr1Var. Ця таблиця відстежується системою підтримки динамічної структури. Тому при додаванні або видаленні змінних з неї може виникнути необхідність конвертації бази даних.

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

Таблиця OPR2 влаштована аналогічним чином. Поле Npp визначає послідовності розташування записів в операції. Детальний опис призначення полів знаходиться в їх Description.

Список змінних Opr2Var, використовуваних в операції, включає в себе крім найменування змінної ще й код виду даних KodProd, з якого береться змінна. В одній записі Opr2 може бути використаний тільки один вид даних. Залежно від виду даних змінна може мати різний прикладної сенс.

Змінні таблиць операцій доступні для розрахункових SQL-процедур, які обслуговують роботу користувача під час обробки даних.

Звіти

Система генерації звітів, вбудована в програмний комплекс «БАС» дозволяє сформувати практично будь-які звіти на основі наявних даних. В рідкісних виняткових випадках доводиться вдаватися до написання процедур підготовки даних для звітів. Така необхідність виникає, наприклад, коли необхідна обробка інформації, про яку згадали після тривалого періоду експлуатації програми, а для звіту потрібні дані минулих періодів.

Документатор складається з 4-х блоків, що представляють для програміста рутинну роботу при програмуванні звітів: підготовка параметрів, структури вихідних наборів даних, вибірка даних з бази, обробка (сортування, склепіння), висновок для остаточного формування в звіті.

Підготовка параметрів звіту полягає в зчитуванні і підготовці до використання параметрів формування: періоду, фактора вибірки, умов.

Структура вихідних наборів даних формується на основі складу параметрів, що включаються до звіту.

Блок вибірки даних призначений для зчитування необхідної інформації з бази даних в тимчасову таблицю. Робота цього блоку може бути замінена спеціальної користувальницької процедурою. Якщо вона існує, то їй передаються результати блоку підготовки у вигляді формальних параметрів, а результат вибірки приймається в тій же часовий таблиці.

Блок обробки призначений для накладення умов, формування зводу, підстановки довідкових даних.

Блок виведення готує дані для остаточної обробки засобами  Fast Report.

Документатор вміє групувати, сортувати дані, підключати довідники першого рівня вкладення. У тих випадках, коли вимагається нестандартна остаточна обробка, або підключення даних по складним зв'язкам таблиць, використовується для користувача процедура виведення. Їй передається в формальних параметрах результати блоку підготовки та тимчасова таблиця з обробленими даними звіту.

Для формування звітів документатор використовує блок налаштувальних системних таблиць.

SReportLst містить перелік звітів, які застосовуються в модулі, і основних властивостях звіту.

SReaportGrup призначений для класифікації звітів по їх призначеннях. Це деревовидний довідник, використовується при відображенні списку звітів на екрані користувача.

SReportParam для кожного користувача, зберігає параметри звіту, з якими він формував його в останній раз. Наприклад, період оборотної відомості. При черговому виклику даного звіту ці параметри виводяться у вікно за замовчуванням.

SReportProd містить список видів даних, з яких інформація вибирається в звіт.

SReportVar визначає набір змінних з кожного виду даних, з яких читається інформація.

SReportAliasце структура вихідного буфера. Вона містить список імен тимчасової таблиці для розміщення даних, а також зв'язку з параметрами видів даних - яка змінна розміщується в якому полі.

SReport_Groupи SReport_Sort визначають правила угруповання даних і правила їх сортування при остаточному виведенні.

Прикладному програмісту немає необхідності у вивченні структури і взаємозв'язків системних таблиць. Досить знати, структуру тимчасової таблиці #Rpt, що використовується як буфер, що містить вибрані дані для звіту.

Розробка прикладних модулів ПК «БАС»

Створення та оновлення модулів

Створення модуля складається з декількох кроків:

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

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

Створення нового модуля

Один прикладний модуль в програмному комплексі БАС - це одна база даних. Всі бази даних програмного комплексу БАС однакові в системній частині. Це означає, що вони мають один і той же склад таблиць, зв'язку між таблицями, індекси, обмеження, системні процедури, тригера і т.д. Вся кількість таблиць розділяється на дві групи: допоміжні і робочі. Допоміжні містять метадані, результати налаштування прикладного модуля. Ці таблиці по структурі абсолютно однакові у всіх прикладних модулях. Друга група таблиць містить інформаційні дані, введені користувачами або отриманими в результаті розрахунків. Таких таблиць кілька:

- SSprData – довідники;
- Lst_Prod – дані особових рахунків;
- Opr1 - реєстр операцій (документів);
- Opr2 - деталі операцій (документів).

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

Першими кроками створення нового модуля є створення нової бази даних, яка буде використовуватися для цього модуля. Це можна виконати двома шляхами: з пустої бази даних і з бази даних модуля-прототипу.

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

Другий спосіб - використовувати базу даних прикладного модуля, який найбільше підходить до розв'язуваної задачі. Наприклад, для вирішення завдання складського обліку доцільно взяти базу даних матеріального обліку, видалити з неї чужу інформацію, зайві операції, звіти. І потім - доопрацювати з метою відображення своїх особливостей.

Не залежно від методу, створення бази даних виконується однаково - через архівну копію прототипу, Ви робите BackUp бази даних прототипу, створюєте нову базу даних доступними Вам засобами, і потім відновлюєте в неї зроблену з прототипу копію. В БАС є для цього необхідні функціональні можливості у вбудованому SQL-редакторі.

Наступним кроком створення нового модуля є додавання його в список прикладних модулів ПК «БАС» і опис його властивостей. Для цього в режимі налаштування системи, який викликається з меню адміністратора або за поєднанням клавіш Cntr Alt Schist F12, коли поточним є головне вікно ПК «БАС».

На закладці «Завдання» вікна налаштування програми потрібно додати новий модуль, ввести код модуля, назва, створити рядок підключення до бази даних, ввести коментар.

Код модуля система проставляє в усіх операціях бази даних, для ідентифікації міжмодульних зв'язків. Назва модуля кінцевий користувач бачить у себе на екрані - так називається його програма. Термін підключення до бази даних (ConnectionString) використовується системою для з'єднання з базою даних. Для її створення використовується спеціальне вікно.

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

Для нового модуля призначається база даних, заздалегідь створена. Це здійснюється шляхом формування Connection String. Рядок можна написати вручну, або викликати вікно для її генерації.


 Формування керуючого меню

Наступним кроком створення модуля - це формування керуючого меню. У ПК «БАС» воно описується деревом, назва вершин якого виводяться на відповідні панелі керуючого меню.

За кожною висячою вершиною закріплюється режим роботи. Є список таких режимів, з якого вибирається відповідний за призначенням. Список режимів - це набір екранних форм, включених в Bas.exe.

Наступний крок - складання списку ролей користувачів, які використовуються в новому модулі. Налаштування ролей виконується в модулі адміністратора з меню «Захист даних, Ролі».

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

Не обов'язково перераховувати всі ролі відразу. У будь-який момент часу список ролей можна поповнити. Досить хоча б однієї ролі, для того, що б можна було увійти в програму.

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

Так як структура баз даних різних прикладних модулів в системній частині однакова, то однакові і процедури, які працюють на системному рівні. Це призводить до необхідності підтримки однорідності процедур у всіх прикладних модулях. Будь-яке коригування в такій процедурі повинна бути проведена у всіх модулях. Це є основною метою режиму підтримки SQL-текстів в ПК «БАС».

Другим призначенням режиму - транспортування текстів процедур і скриптів до клієнтів під час супроводу програми. Усі вони знаходяться в базі BAS_MAIN, яку досить підмінити у клієнта і відкомпілювати процедури або скрипти, створені або змінені в певному проміжку часу.

Будь-який текст можна додати в список, прочитати з файлу, зберегти в файл, відкоректувати, відкомпілювати і т.д. 

Список баз даних, в яких повинен бути виконаний скрипт, знаходиться в закладці «бази даних». У кожній базі даних є протокол виконання скриптів. Система аналізує його перед тим, як завантажити скрипт на виконання. Якщо дата створення (коригування) скрипта менша дати виконання скрипта згідно з протоколом, то скрипт не виконується. Це гарантія того, що один скрипт виконується тільки один раз.

Також є жорсткий порядок виконання скриптів. Якщо не виконано хоча б один з попередніх скриптів, то поточний також не виконуватиметься. В цьому випадку видається відповідне повідомлення.



 

Приватне підприємство «Науково-дослідне і конструкторсько-технологічне бюро автоматизованих систем» (скорочено ПП «БАС») Частное предприятие «Научно-исследовательское и конструкторско-технологическое бюро автоматизированных систем» (сокращенно ЧП «БАС») Scientific-research and design-technological bureau of automated systems (abbreviated as BAS)