МОДУЛИ АБС БИСКВИТ

АБС Бисквит представляет собой модульную систему. При входе в систему перед вами предстает список в виде меню доступных модулей, таких как: БАЗОВЫЙ МОДУЛЬ, КАССОВЫЕ ОПЕРАЦИИ, РОЗНИЧНЫЕ УСЛУГИ и т.д. Данное меню, осуществляет вызов соответствующей процедуры выбранного пользователем модуля, в котором он планирует работать. 

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

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

Разработка подобных процедур позволит нам создавать в АБС Бисквит свои модули, согласитесь это уже интересней, чем какой-нибудь отчет.

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

Построение процедуры модуля осуществляется на основе mmenu.i, в котором посредством передаваемых аргументов определяются параметры меню формы.

Непосредственное формирование меню в указанных инклюд-файлах осуществляется с помощью оператора CHOOSE.

АРГУМЕНТЫ MMENU.I


Описание основного меню:

  • &module-name - код модуля (значение глобальной переменной work-module);
  • &menu-title - наименование модуля;
  • &hor-exit-num - порядковый номер раздела "Выход".

Описание раздела основного меню:

  • &menuXX-name - наименование раздела (XX - порядковый номер раздела, 01, 02 и т.д.);
  • &menuXX-help - описание (подсказка) раздела XX выводимое в нижней части формы при фокусировки раздела;
  • &menuXX-frmt - ширина раздела XX (длина наименования раздела).

Описание подменю раздела:

  • &menuXX-submenu-col - порядковый номер колонки с которой начинается вывод подменю;
  • &menuXX-submenu-row - порядковый номер строки с которой осуществляется вывод подменю (как правило всегда равна 3);
  • &menuXX-submenu-exit-num - кол-во пунктов меню;
  • &menuXX-submenu-frmt - ширина области подменю выраженная в символах.

Описание пунктов подменю раздела:

  • &menuXX-submenuYY-pre - вставка разделителя перед пунктом подменю (указывается сам разделитель);
  • &menuXX-submenuYY-name - наименование YY пункта подменю раздела XX; основного меню (YY - порядковый номер пункта подменю: 01, 02 и т.д.);
  • &menuXX-submenuYY-help - описание (подсказка) пункта YY подменю;
  • &menuXX-submenuYY-proc - вызываемая процедура;
  • &menuXX-submenuYY-proc-prm - строка параметров вызываемой процедуры.

 


БРАУЗЕРЫ ПРИМЕНЯЕМЫЕ В МЕНЮ МОДУЛЯ


В данном разделе мы рассмотрим стандартный набор браузеров вызываемых из разделов меню модуля.


РАЗДЕЛ:СЧЕТА

Балансовые счета:

&menuXX-submenuYY-pre      = "Балансовые счета"
&menuXX-submenuYY-name     = " Лицевые"

&menuXX-submenuYY-help     = "Балансовые лицевые счета"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'acct,acct-cat,"b",,4'"
&menuXX-submenuYY-name     = "    2-го порядка"
&menuXX-submenuYY-help     = "Счета 2-го порядка"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'bal-acct,acct-cat,"b",,4'"

Внебалансовые счета:

&menuXX-submenuYY-pre      = "Внебалансовые счета"
&menuXX-submenuYY-name     = " Лицевые"

&menuXX-submenuYY-help     = "Внебалансовые лицевые счета"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'acct,acct-cat,"o",,4'"
&menuXX-submenuYY-name     = "    2-го порядка"
&menuXX-submenuYY-help     = "Счета 2-го порядка"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'bal-acct,acct-cat,"o",,4'"

Срочные операции:

&menuXX-submenuYY-pre      = "Срочные операции"
&menuXX-submenuYY-name     = " Лицевые"

&menuXX-submenuYY-help     = "Лицевые счета по срочным операциям"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'acct,acct-cat,"f",,4'"
&menuXX-submenuYY-name     = "    2-го порядка"
&menuXX-submenuYY-help     = "Счета 2-го порядка"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'bal-acct,acct-cat,"f",,4'"

Счета других категорий:

&menuXX-submenuYY-pre      = "Счета других категорий"
&menuXX-submenuYY-name     = "    Лицевые"

&menuXX-submenuYY-help     = "Лицевые счета по срочным операциям"
&menuXX-submenuYY-proc     = "addjoin"
&menuXX-submenuYY-proc-prm = "'acct,~001b~001o~001f,,14,29'"
&menuXX-submenuYY-name     = "    2-го порядка"
&menuXX-submenuYY-help     = "Счета 2-го порядка"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'bal-acct,~001b~001o~001f,,15,29'"


РАЗДЕЛ: КЛИЕНТЫ


Физические лица:

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

&menuXX-submenuYY-name     = "Физические лица"
&menuXX-submenuYY-help     = "Физические лица - клиенты банки"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'person,crClass-Code~001SetFirstFrm,
~ImaginClient~0015,crClass-Code,4'"

Юридические лица:

&menuXX-submenuYY-name     = "Юридические лица"
&menuXX-submenuYY-help     = "Предприятия и организации - клиенты банка"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'cust-corp,,,,4'"

Клиенты - банки:

Выделение банков - клиентов из общего справочника банков осуществляется по реквизиту client.

&menuXX-submenuYY-name     = "Клиенты - банки"
&menuXX-submenuYY-help     = "Предприятия и организации - клиенты банка"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'banks,client~001bank-code-type,yes
~001МФО-9,client,4'"


РАЗДЕЛ: ОПЕРАЦИИ


Операционные дни:

&menuXX-submenuYY-name     = "Операционные дни"
&menuXX-submenuYY-help     = "Документы и проводки по датам"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'op-date,,,,4'"


РАЗДЕЛ: СПРАВОЧНИКИ


Физические лица:

&menuXX-submenuYY-name     = "Физические лица"               
&menuXX-submenuYY-help     = "Справочник физических лиц"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'person,crClass-Code~001SetFirstFrm,
~*~0015,,4'"

Юридические лица:

&menuXX-submenuYY-name     = "Юридические лица"                         
&menuXX-submenuYY-help     = "Справочник предприятий и организаций"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'cust-corp,crClass-Code,*,,4'"

Банки:

&menuXX-submenuYY-name     = "Банки"
&menuXX-submenuYY-help     = "Справочник банков"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'banks,bank-code-type~001SetFirstFrm,
~МФО-9~0014,,4'"

Классификаторы:

В браузере классификаторов модуля как правило выводят классификаторы заданной группы. Для этого используется специальная процедура class.p. В примере осуществляется вызов браузера классификаторов, входящих в группу ПлатНас.

&menuXX-submenuYY-name     = "Классификаторы"
&menuXX-submenuYY-help     = "Справочник классификаторов"
&menuXX-submenuYY-proc     = "class"
&menuXX-submenuYY-proc-prm = "'КЛАССИФИКАТОРЫ,ПлатНас,4'"

Настроечные параметры:

В браузере настроечных параметров осуществляется вывод только относящихся к заданному модулю настроечных параметров, т.е. тех настроечных параметров, у которых реквизит module равен коду модуля.

&menuXX-submenuYY-name     = "Настроечные параметры"
&menuXX-submenuYY-help     = "Настроечные параметры"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'setting,module,' ~+ work-module ~+ ',
~module,4'"

Стандартные транзакции:

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

&menuXX-submenuYY-name     = "Стандартные транзакции"
&menuXX-submenuYY-help     = "Шаблоны типовых транзакций для автоматического выполнения"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'op-kind,module,' ~+ work-module ~+ ',
~module,4'"

Комиссии и тарифы:

Браузер комиссий и тарифов автоматически формируется по отношению к заданному модулю по переменной модуля.

&menuXX-submenuYY-name     = "Комиссии и тарифы"
&menuXX-submenuYY-help     = "Процентные ставки и тарифы комиссионного вознаграждения"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'commission,,,,4'"

Схемы начисления процентов:

&menuXX-submenuYY-name     = "Схемы начисления процентов"
&menuXX-submenuYY-help     = "Схемы начисления процентов"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'interest-sch,,,,4'"

Справочник валют:

&menuXX-submenuYY-name     = "Валюты"
&menuXX-submenuYY-help     = "Справочник валют"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'currency,,,,4'"

Расчетно-денежные документы:

&menuXX-submenuYY-name     = "Расчетно-денежные документы"
&menuXX-submenuYY-help     = "Справочник видов расчетно-денежных документов"
&menuXX-submenuYY-proc     = "browseld"
&menuXX-submenuYY-proc-prm = "'doc-type,,,,4'"