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

ТОО “РеПКА”

ПРОЕКТИРОВАНИЕ ХОЗЯЙСТВЕННЫХ ОПЕРАЦИЙ В СИСТЕМЕ “ПАН ВОТРУБА”


Данная статья продолжает цикл публикаций о старейшем в России бизнес-конструкторе “Пан Вотруба” (развивается с 1990 года), реализованном стандартными средствами СУБД Oracle (см. “Компьютер в бухгалтерском учете и аудите” №№ 4 за 1997 год, 2 и 3 за 1998 год).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Таким образом, манипулировать содержимым объектов можно 2-мя путями:

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

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

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

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

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

А теперь покажем на примере процесс проектирования конкретных хозяйственных операций в системе.

Постановка задачи.

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

По заявке покупателя организация-продавец резервирует товар и выставляет покупателю счет. Далее продавец отпускает товар покупателю и выписывает счет-фактуру и накладную. При получении на свой расчетный счет денег за реализованный товар продавец учитывает оплату товара и производит расчеты по НДС. Данные об этой продаже отражаются в Книге продаж.

Решение

Показанные в постановке задачи бизнес-процессы средствами системы “Пан Вотруба” описываются в виде совокупности хозяйственных операций. Один из возможных вариантов решения, представленный ниже, включает четыре хозяйственные операции: СЧЕТ_ОПТ, ОТГРУЗКА, УЧЕТ_ОПЛАТЫ и КНИГА_ПРОДАЖ.

Сведения о назначении этих хозяйственных операций содержатся в таблице № 1, а их основные характеристики (генерируемые проводки, формируемые отчеты) — в таблице № 2.

Таблица № 1

Название хозяйственной операции

Назначение хозяйственной операции

СЧЕТ_ОПТ

Выписка оптовых счетов и резервирование товара

ОТГРУЗКА

Отпуск товара покупателю, формирование счетов-фактур и заготовка, проводок не утвержденных по НДС и фактуризации оплаты

УЧЕТ_ОПЛАТЫ

Привязка оплаты реализованного товара к отгрузке, утверждение проводок по НДС

КНИГА_ПРОДАЖ

Формирование накопительного объекта, содержащего сведения о всех проведенных организацией продажах

Таблица № 2

Название
хозоперации

Дебет

Кредит

Комментарий

Вызывает
методы

Формирует
отчеты

СЧЕТ_ОПТ

И41-РЕЗ

Номенклатура, Партнер

И41-ТОВ

Номенклатура, Партнер

Резервирование товара при выставлении счета. Утвержденная.

ОТГРУЗКА.
СОЗДАТЬ

счет

ОТГРУЗКА

Р46-ОСД
Номенклатура, Партнер

В62-ОПЛ

Номенклатура, Партнер

Р46-НДС

Номенклатура,

Партнер

Н68-НДС

В62-ПРС

Номенклатура, Партнер

И41-РЕЗ
Номенклатура, Партнер

Р46-ОСД

Номенклатура, Партнер

Н68-НДС

Н19-НДС.6

Номенклатура

В62-ОПЛ

Номенклатура, Партнер

Расход со склада (по складской цене). Утвержденная

Отправка товара покупателю. Утвержденная.

Начислен НДС от данной отгрузки. Неутвержденная.

Зачет НДС, уплаченного поставщику. Неутвержденная.

Заготовка для фактуризации по оплате отдельных позиций данной фактуры. Неутвержденная

КНИГА_ПРОДАЖ.
ДОБАВИТЬ

накладная
счет-фактура

УЧЕТ_ОПЛАТЫ

В62-ОПЛ

Номенклатура, Партнер

В62-ПРС

Номенклатура, Партнер

Р46-НДС

Номенклатура,

Партнер

Н68-НДС

Д51-СТ1

В62-ОПЛ

Номенклатура, Партнер

Н68-НДС

Н19-НДС.6

Номенклатура

Поступление средств от покупателя — выручки за реализованный товар. Утвержденная.

Привязка оплаты к отгрузке отдельных позиций данного счета-фактуры. Утвержденная.

Начислен НДС от данной отгрузки. Утвержденная.

Зачет НДС, уплаченного поставщику. Утвержденная.

КНИГА_ПРОДАЖ.
ИСПРАВИТЬ

 

КНИГА_ПРОДАЖ

       

книга
продаж

Примечание:

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

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

Для каждого счета указываются обязательные для заполнения аналитические реквизиты счета, по которым необходимо накапливать данные, чтобы в дальнейшем иметь возможность делать аналитические обобщения. Например, для счета Р46-ОСД (выручка от основной деятельности) указываются аналитические реквизиты Номенклатура и Партнер. Всего системой поддерживается до 16 различных типов аналитических признаков параллельно. Их совокупность образует 16-мерное аналитическое пространство, используемое, в частности, в ходе оперативного, ретроспективного, фьючерсного и многовариантного анализа. Кроме этого, система поддерживает неограниченное количество технологических справочников, в которых можно хранить произвольную информацию. Подробнее об этих свойствах системы можно прочесть в номере 4/97 журнала.

А теперь остановимся подробнее на самом процессе проектирования хозяйственных операций. Для проектирования хозопераций в системе “Пан Вотруба” существует специальный ДИЗАЙНЕР ХОЗОПЕРАЦИЙ (пункт меню “Работа. Хозоперации”).

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

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

Элементы структуры

Содержание элемента структуры

Начало  
Строка

ВЫПИСКА СЧЕТОВ

Строка

И РЕЗЕРВИРОВАНИЕ ТОВАРА

Строка  
Группа

Группа атрибутов счета в целом

Строка Дата:@ДАТА Получатель:@ПОКУПАТЕЛЬ @ПАРТНЕР № счета: @НОМСЧ
Блок ВЫБОР[@НОМСЧ,0,1,0] — условие срабатывания
Начало  
Оператор @НОМСЧ=НОМЕР[СЧИ]
Конец  
Строка Присвоен номер счету =>@НОМСЧ
Оператор @$NДОК=СКЛЕИТЬ[“СЧИ”,@НОМСЧ]
Строка            
Строка

№ п/п

Номенклатура

Кол-во

Ед. изм.

Цена за ед.

Сумма

Строка            
Группа

Группа атрибутов отдельных позиций счета

Строка

@НПОР

@КОДТОВ@НОМЕНКЛ

@КОЛВО

@ЕДИЗМ

@ЦЕНА

@СУММА

Группа

Заключительная группа

Строка  
Проводка

Проводка на резервирование товара № 41-РЕЗ И41-ТОВ

Метод

ОТГРУЗКА.СОЗДАТЬ — Создание объекта типа ОТГРУЗКА с
параметрами, введенными в данном объекте СЧЕТ_ОПТ

Конец  

Рис.1. Структура хозяйственной операции СЧЕТ_ОПТ

В ходе создания структуры хозяйственной операции определяются идентификаторы (имена) переменных — что будет вводится, рассчитываться, визуализироваться. В системе “Пан Вотруба” каждый идентификатор начинается с символа “@”, можно использовать латинские и русские буквы и цифры, а также символы “-” и “_”. Пример описания идентификаторов для хозяйственной операции СЧЕТ_ОПТ представлен в таблице № 3. Она представляет экранную форму, в которой определяются идентификаторы.

Типы идентификаторов — Дата, Строка, Число. Если идентификатор вычисляется из других идентификаторов, его можно не вводить. Тогда в колонке “Обязательность ввода” проставляется “Нет”.

Если значение идентификатора берется из одного из справочников системы или списков констант, его имя задается в поле “Список”.

Колонка “Умолчание” содержит макровыражение, при вычислении которого получается значение данной переменной по умолчанию.

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

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

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

Примитивы Блок, Оператор, Проводка, Изменение, Запись обрабатывают введенные пользователем данные. А примитив Метод передает результаты этой обработки из объекта-источника в объект — хозяин метода.

Для хозоперации СЧЕТ_ОПТ мы сначала создали структуру (см. рисунок 1), задали идентификаторы (Таблица № 3), затем спроектировали вид экрана пользователя и содержание примитивов. Получившаяся в результате хозоперация позволяет пользователю вводить данные по заказу товара (покупатель, номенклатура, количество, стоимость товара и пр.), генерирует проводки на резервирование товара, выставляет счет за заказанный товар и передает необходимые данные в объект типа ОТГРУЗКА. Каждый новый вызов хозоперации СЧЕТ_ОПТ создает имеющий уникальный номер объект типа СЧЕТ_ОПТ с данными по конкретному заказу.

Когда пользователь описал конкретный заказ (закончил формирование объекта типа СЧЕТ_ОПТ), сформированный объект создает новый объект типа ОТГРУЗКА и передает в него содержание текущего заказа при помощи метода ОТГРУЗКА.СОЗДАТЬ.

Так как в реальной жизни покупатель может отказаться от каких-то зарезервированных им товаров, в созданном объекте типа ОТГРУЗКА пользователь должен откорректировать первоначальный список зарезервированных товаров в соответствии со списком товаров, реально отгружаемых покупателю.

По завершении формирования объекта типа ОТГРУЗКА алгоритм хозоперации ОТГРУЗКА предусматривает расчет отчета — счета-фактуры по введенным данным и приведение в соответствие содержимого объекта типа КНИГА_ПРОДАЖ. Для этого в книге продаж надо создать новую группу атрибутов с характеристиками созданной фактуры (дата, номер счета-фактуры, сведения о покупателе, сумма продажи, НДС) и прибавить значения денежных характеристик этой фактуры к совокупным итогам по книге продаж в целом.

Как и в случае с формированием объекта типа ОТГРУЗКА, эти действия будет выполнять привязанная к объекту типа КНИГА_ПРОДАЖ макроязыковая процедура — метод КНИГА_ПРОДАЖ.ДОБАВИТЬ с соответствующими аргументами вызова. Метод вызывается из объекта типа ОТГРУЗКА при наступлении события “Готовность” в этом объекте в результате срабатывания реагирующей на это событие макропроцедуры — триггера по готовности. По окончании работы метода КНИГА_ПРОДАЖ.ДОБАВИТЬ объект типа ОТГРУЗКА сформирует отчет счет-фактура на соответствующем бланке.

 

Таблица № 3

Идентификатор

Тип

Обязательность ввода Список

Умолчание

Обязательные идентификаторы

Содержание

@ДАТА Дата

Да

 

@$СЕГОДНЯ

  Дата выписки счета
@ЕДИЗМ Строка

Да

 

Шт.

  Единица измерения
@КОДТОВ Строка

Да

Номенклатура     Код номенклатуры
@КОЛВО Число

Да

      Количество
@НОМЕНК Строка

Нет

 

Из списка Номенклатура по @КОДТОВ

@КОДТОВ Название номенклатуры
@НОМСЧ Число

Да

 

0

  Номер счета
@НПОР Число

Да

 

Вычисляется в цикле

  Номер по порядку
@ПАРТНЕР Строка

Нет

 

Из списка Партнер по @ПОКУПАТЕЛЬ

@ПОКУПАТЕЛЬ Наименование партнера
@ПОКУ
ПАТЕЛЬ
Строка

Да

Партнер     Код партнера
@СУММА Число

Нет

 

@КОЛВО * @ЦЕНА

@КОЛВО

@ЦЕНА

Сумма по позиции счета
@ЦЕНА Число

Да

  Из списка Номенклатура @КОДТОВ Цена за единицу измерения

 

 

Номер создавшего счет-фактуру объекта типа ОТГРУЗКА запоминается в переменной @ОБЪЕКТ объекта @КНИГА_ПРОДАЖ. В дальнейшем переменная @ОБЪЕКТ будет использоваться объектом типа УЧЕТ_ОПЛАТЫ для проставления в объекте КНИГА_ПРОДАЖ даты оплаты товара покупателем.

Структура метода КНИГА_ПРОДАЖ.ДОБАВИТЬ представлена ниже на рисунке 2, а структура объекта типа КНИГА_ПРОДАЖ — на рисунке 3.

Элементы структуры

Содержание элемента структуры

Начало  
Блок

Цикл по позициям счета-фактуры (@НПОР)

Начало  
Оператор

Суммирование денежных сумм по всем позициям счета-фактуры с
НДС=20 % в переменных @СУММА20 и @НДС20

Оператор

Суммирование денежных сумм по всем позициям счета-фактуры с
НДС=10 % в переменных @СУММА10 и @НДС10

Оператор

Суммирование денежных сумм по всем позициям счета-фактуры с
НДС=0 % в переменных @СУММА0 и @ЭКСПОРТ

Конец  
Оператор

Вычисление @ВСЕГО_ПРОДАЖ (из @СУММА20, @СУММА10,
@СУММА0, @НДС20, @НДС10)

Оператор

Определение @НОМСЧФ

Оператор

Определение @ПАРТНЕР

Оператор

Определение @ДАТА_СЧФ

Оператор

Определение @ИНН

Группа

Группа, создающая строки в объекте КНИГА_ПРОДАЖ
и передающая в него параметры

Iia?aoi?

Присвоение переменной @ОБЪЕКТ уникального номера
объекта-создателя данного счета-фактуры

Строка            
Строка @НОМСЧФ @ПАРТНЕР @ВСЕГО_ПРОДАЖ @СУММА20 @СУММА10 @СУММА0
Строка @ДАТА_СЧФ @ ИНН   @НДС20 @НДС10 @ЭКСПОРТ
Строка @ДАТА_ОПЛ  
Конец  

Рис.2 Структура метода КНИГА_ПРОДАЖ. ДОБАВИТЬ

Элементы структуры

Содержание элемента структуры

Начало  
Строка

**************** К Н И Г А П Р О Д А Ж ********************

Строка  
Строка

Налогоплательщик-продавец: @ НАЗВ_ОРГ

Строка        
Строка № сч.ф. и дата Наименование Всего

В т. числе

Строка поставщика покупателя продаж, Продажи, облагаемые Необла-
Строка Дата оплаты ИНН вкл-я 20 % 10 % гаемые
Строка Покупателем покупателя НДС Стоим. без НДС Стоим. без НДС Всего
Строка   Сумма НДС Сумма НДС Экспорт
Группа

Группа атрибутов отдельной позиции книги продаж

Строка            
Строка @НОМСЧФ @ПАРТНЕР @ВСЕГО_ПРОДАЖ @СУММА20 @СУММА10 @СУММА0
Строка @ДАТА_СЧФ @ ИНН   @НДС20 @НДС10 @ЭКСПОРТ
Строка @ДАТА_ОПЛ
Конец  

Рис.3 Структура хозяйственной операции КНИГА_ПРОДАЖ

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

Менеджер по маркетингу
Екатерина Клементьева,
Руководитель проекта
Александр Медведев



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