МОДУЛИ АБС БИСКВИТ
АБС Бисквит представляет собой модульную систему. При входе в систему перед вами предстает список в виде меню доступных модулей, таких как: БАЗОВЫЙ МОДУЛЬ, КАССОВЫЕ ОПЕРАЦИИ, РОЗНИЧНЫЕ УСЛУГИ и т.д. Данное меню, осуществляет вызов соответствующей процедуры выбранного пользователем модуля, в котором он планирует работать.
Процедура модуля представляет собой экранную форму содержащую меню разделов данного модуля. Все исходники таких процедур в АБС Бисквит являются закрытыми, и о том как они организованны можно только догадываться.
В данной статье я предлагаю рассмотреть разработку подобия данных процедур. Да, речь пойдет именно о подобие данных процедур, или другими словами о своем варианте их реализации, так как исходные коды, как я уже сказал, скрыты от посторонних глаз.
Разработка подобных процедур позволит нам создавать в АБС Бисквит свои модули, согласитесь это уже интересней, чем какой-нибудь отчет.
Для создания процедуры модуля предлагаю использовать разработанные мной два инклюд-файла: 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'"