Продолжается подписка на наши издания! Вы не забыли подписаться?

Товарищество “Репка”

Система “Пан Вотруба”— старейший бухгалтерский конструктор на Oracle


Общие сведения о системе

Введение

Данная статья является очередной публикацией в цикле материалов о системе “Пан Вотруба” (начало см.: “Компьютер в бухгалтерском учете и аудите”, № 4 за 1997 год, статья “Система “Пан Вотруба”— клиент-серверный инструментарий для решения Ваших индивидуальных проблем”). Для читателей, которые не имеют этого номера под рукой, кратко напомним основные положения этой статьи.

Система “Пан Вотруба”— старейший в России бухгалтерский конструктор, полностью разработанный стандартными средствами СУБД Oracle (первое внедрение — март 1991 года). Во втором квартале 1997 года поставляется версия 12.4 (на Oracle 7.3), основные отличия которой от ранее поставлявшейся версии 12.3 описаны ниже.

Система “Пан Вотруба” (далее — система) — финалист VI международного конкурса программного обеспечения в области финансов и бизнеса “Бизнес-Софт`97” (организаторы — ЦИЭС “Бизнес-Программы-Сервис”, международный еженедельник “Финансовая газета” и журнал “Бухгалтерский учет”) в номинации “Корпоративные системы”.

Архитектура системы

Система построена в архитектуре клиент-сервер с преобладающей серверной функциональностью (примерно 80 % логики работы системы выполняется средствами сервера Oracle). В системе реализован “тонкий” клиент. Его основными функциями являются:

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

Работа с произвольно большими объемами данных

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

Функционально система представляет собой хранилище данных (Data WareHouse) в совокупности с настраиваемыми пользователем в соответствии с учетной схемой механизмами их накопления и обработки.

Элементы технологии WareHouse развиваются в системе с 1993 года. Так, подсистема ускорителей представляет собой настраиваемую пользователем динамическую витрину данных. Общим свойством инструментов этой подсистемы является повышение эффективности работы при росте объемов обрабатываемых данных, что позволяет успешно эксплуатировать систему в условиях недостаточной вычислительной мощности сервера БД и снижает потребности в аппаратных ресурсах.

Аналитические возможности

Система поддерживает настраиваемое пользователем 16-мерное аналитическое пространство с возможностью 10-кратного расширения. Эксперты вышеуказанного конкурса отметили, что в системе реализована “очень разумная организация модели аналитического учета. Полнее (в пределах разумного) не придумаешь. Ни у кого из отечественных разработчиков такой реализации нет. Нечто подобное реализовано в “Парусе”, но все же не на таком уровне общности”.

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

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

Неограниченное количество справочников

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

Справочники делятся на аналитические и технологические. Те и другие могут при необходимости быть взаимосвязаны иерархически.

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

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

Регламентация прав доступа и настройка прикладных функций. Хозоперации

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

Упомянутые прикладные функции системы служат для:

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

Средства обобщения данных делятся на оперативные (анализатор) и пакетные (отчеты).

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

В большинстве программ учетно-аналитической направленности (ТурбоБухгалтер и др.) термин “хозяйственная операция” означает обычную бухгалтерскую проводку. В системе “Пан Вотруба” под хозяйственной операцией понимается произвольная совокупность действий с данными, которые одновременно выполняются одним человеком.

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

Для создания новых и редактирования ранее разработанных хозопераций в системе имеется ДИЗАЙНЕР ХОЗОПЕРАЦИЙ в виде совокупности взаимосвязанных экранных форм. Поддержка диалога в процессе выполнения хозоперации реализована аналогично.

Кроме этого, реализован программный интерфейс внешнего запуска на выполнение хозопераций с помощью хранимых процедур (PL/SQL) сервера Oracle и служебных таблиц.

Интеграция с произвольным ПО

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

Макроязык

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

Основу макроязыка составляют прикладные функции, написанные на PL/SQL и выполняемые средствами сервера Oracle. Для удобства пользователя — непрограммиста функции имеют русскоязычные названия. Например, функция вычисления арифметических выражений со скобками вызывается так:

СКОЛЬКО[выражение,точность]

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

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

ЗАПРОС[СПРАВОЧНИК2,#КОД НЕ=“МБП” И #НАЗВАНИЕ ПОХОЖЕ “ОС%”]

В данном примере #КОД и #НАЗВАНИЕ — псевдонимы стандартных для справочников системы столбцов. Условие запроса означает, что из справочника номер 2 (номенклатура) выберутся все записи, код которых не равен “МБП” и название начинается с “ОС”.

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

Категории пользователей. Учетные организации. Роли

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

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

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

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

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

Таким образом определяется текущая конфигурация виртуального АРМ данного пользователя.

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

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

Кто использует систему

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

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

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

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

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

Хозяйственные операции — взгляд изнутри

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

Структура хозоперации

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

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

Алгоритм хозоперации составляется из примитивов следующих типов.

Технологические (начало и конец). Имеют чисто топологический смысл.

Оператор. Служит для вычисления макро-выражения и присвоения результата одной переменной.

Блок. Гибрид операторных скобок (begin end), условного оператора (if then без else) и счетного цикла.

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

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

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

Рис. 1. Пример структуры хозяйственной операции

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

Хозоперация. Вызов другой хозоперации на выполнение. Аналог вызова процедуры в языках программирования. Передача аргументов вызова происходит только туда (in), только назад (out) или туда и назад (inout). Рекурсия разрешена. Возврат значений выходных переменных в вызывающую хозоперацию происходит по окончании работы вызванной хозоперации независимо от причин этого окончания.

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

Указание макровыражения в выходном (out) или двустороннем (inout) аргументе вызовет ошибку, поскольку присвоить значение выражению невозможно.

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

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

Групповые переменные, описанные в заголовке хозоперации до того, как по ходу выполнения алгоритма ее работы встретится примитив Группа, объединяются в неявную группу с фиксированным номером 0.

Все явно описанные группы нумеруются начиная с 1.

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

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

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

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

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

Экран ввода. Панель отображения

Экран ввода включает в себя пролистываемое поле, где размещаются по мере выполнения строки оформления диалога. В нижней части этого поля постоянно присутствует ПАНЕЛЬ ОТОБРАЖЕНИЯ, на которой высвечиваются текущие значения переменных, помещенных туда разработчиком данной хозоперации. Простейший пример использования панели — “градусник”, который показывает % выполнения хозоперации от общего объема.

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

Описание переменных. Значения по умолчанию. Проверка ввода

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

Значение по умолчанию вычисляется и подставляется в поле для ввода при первом входе туда. После этого поле имеет введенное пользователем значение.

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

Код Название

АИ-93 Бензин с октановым числом 93

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

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

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

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

Выходная информация

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

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

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

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

Отличия версии системы “Пан Вотруба” 12.4 от версии 12.3

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

По сравнению с вариантом хозопераций версии 12.3 существенно увеличилось количество примитивов (Группа, Запись, Строка, Хозоперация, Выход).

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

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

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

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

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

Расширено содержимое справочной подсистемы (Help), введен контекстный поиск по произвольным шаблонам (поисковым выражениям) в пределах текущей темы и по всему содержимому справочной подсистемы.

Руководитель проекта
Александр Медведев



Copyright © 1994-2016 ООО "К-Пресс"