Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Организация программирования в Б5 версии 3.4

 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
Титов Александр



Joined: 26 Jul 2002
Posts: 975
Location: Титов Александр Александрович
Occupation: Компания БЭСТ
Interests: Москва

PostPosted: 20 Oct 2007 14:22    Post subject: Организация программирования в Б5 версии 3.4 Reply with quote

Уважаемые коллеги!

Попробую немного поподробнее осветить программистский аспект версии 3.4.
В системе БЭСТ-5 возможна разработка двух типов программных модулей:
- пользовательские функции, расширяющие функционал стандартных приложений (так называемые плагины), вызываемые по наступлению определенных событий;
- приложения пользователя.
Если плагины задаются и вызывается непосредственно внутри стандартных приложений, то для пользовательских приложений предусмотрен специальный пункт меню “Дополнительно-Приложение пользователя”.

1. Начиная с версии 3.4, в систему включена оболочка XBA (XBase++ for Application) для программирования в БЭСТе. Она включает в себя редактор кода, компилятор, отладчик. Оболочка XBA подключена для работы с плагинами, а также непосредственно в прикладных модулях для программирования алгоритмов расчета себесстоимости в производстве, формирования выходных форматов налоговой отчетности, программ интеграции с мобильной торговлей и др. Для перехода в XBA достаточно кликнуть на верхней панели правую иконку "Вызов редактора XBA". Слева при этом отобразится инспектор плагинов, который позволит создать либо отредактировать пользовательскую функцию и т.д. HELP по программированию
постоянно развивается, последнюю версию можно взять вот отсюда:
ftp://ftp.bestnet.ru/download/BEST-5/HELP/BestXBA.chm
Режим отладки предоставляет следующие возможности:
-просмотр открытых рабочих областей, переменных, стека выполнения, переменных окружения;
-останов по функции останова Altd() или по команде оператора;
-пошаговое выполнение программы;
-непосредственное выполнение выражений и отображение результата.

2. Шаги создания любого прикладного плагина (модуля) следующие:
- исходный код на XBase++ (используется синтаксис XBase языков с объектным подходом, за основу брался XHarbour - www.xharbour.com, который был переработан, расширен и адаптирован под БЭСТ-5);
- компиляция исходного текста в hrb-модуль с включением отладочной информации;
- отладка модуля в отладчике в старт-стопном режиме;
- компиляция без отладочной информации (если модуль большой, то это может повысить скорость и снизить ресурсоемкость) и запуск в работу.

3. Для плагинов, начиная с версии 3.4, будет применяться схема, аналогичная Б4 (хотя предыдущая схема с UserLibPro тоже поддерживвается): все ппагины располагаются в папке server\data\pro\plugins\extensns\. Папка содержит поддиректории, по своим названиям совпадающие с поддиректориями базы данных, размещающие файлы конкретных приложений. Полный путь к файлу с программой, будет строиться в зависимости от того, из какого приложения вызывается эта функция. Например, для приложения "Заработная плата" поиск файла с программой будет производиться в директории Data\Pro\Plugins\Extensns\Salary\ . Следует отметить, что в указанных папках лежат как откомпилированные модули, так и их исходные тексты (необходимые при отладке). При вызове программы в режиме "Специальные функции" по умолчанию файл с программой должен быть расположен в соответствии с выше приведенными правилами.

4. Привязка плагинов к событиям производится в реестре по клавише Ctrl-F5. На каждый плагин, вызываемый по требованию можно назначить горячую клавишу для быстрого запуска. Все такие плагины автоматически помещаются в меню правой кнопки "Функции".

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

Опишем кратко эти события.

Для вызова программы по требованию необходимо отметить документы (карточки), которые должны быть обработаны с помощью программы (как правило, отметка выполняется нажатием клавиши Ins), и выполнить плагин из меню кнопки "Функции" или нажать клавишу вызова плагина. Программа будет выполнена последовательно для каждой отмеченной строки реестра или только для текущей строки, если не было сделано отметок. Для каждой строки реестра производится отдельный вызов программы, поэтому при вызове программы для последующих строк (даже в одном сеансе обработки) значения локальных переменных будут теряться.
Плагин “Работа в ресстре” применяется, когда необходимо, перед тем как войти в реестр, выполнить некоторую обработку данных или подменить стандартный реестр своим. Если функция возвращает 0 (или .F.), то вход в стандартный реестр не производится. Также эта функция используется, когда необходимо отобразить дополнительные данные при перемещении по реестру.
“Вход документ” выполняется после того как отображена форма с документом и инициализированы все рабочие переменные, непосредственно перед начало процесса ввода/редактирования данных. При этом существует переменная nApp, которая говорит о ре-жиме вызова: nApp=1 – редактирование, nApp=3 – ввод нового документа. Если функция возвращает 0 (или .F.), то дальнейший вход в документ не производится.
Плагин “Перед записью” вызывается после проверки правильности документа, как правило, для дополнительной (пользовательской) проверки. Если функция возвращает 0 (или .F.), то документ не записывается.
Плагин “Запись документа” выполняется после стандартной процедуры записи и используется, как правило, для записи дополнительных параметров или выполнения каких-либо заключительных операций.
Плагин “Перед удалением” выполняется после стандартной проверки на предмет удаления: если плагин возвращает 0 (или .F.), то удаления не производится.
Плагин “После удаления” выполняется после удаления документа, но в момент выполне-ния плагина текущей записью еще является удаляемая запись (то есть указаитель записи еще не сошел с удаленной записи).
Специальные события для конкретных реестров разрабатываются специально для конкретных реестров. Пока известно только одно такое событие: подмена прайс-листа при выписке заказа и накладной на реализацию.

Кроме того, любой плагин можно вызвать из формул типовых операций или других предложением
FileEval(<имя файла с расширением>) или
HFileEval(<имя файла с расширением>).
Если расширение .hrb – то считается, что это откомпилированный hrb-модуль, если другое – то – неоткомпилированнй текстовый файл программы, который выполняется путем обычной интерпретации программного текста. Как правило, в БЭСТ-5 используются hrb-модули, которые позволяют использовать встроенные средства отладки.

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

7. Что касается разработки отдельных прикладных приложений, то для этого поставляется дизайнер приложений Client\Bin\BestIde.exe, который в перспективе планируется интегрировать в XBA.

7. В версии 3.4 мы даем исходный код приложения "Договоры", вы можете его откомпилировать c помощью BestIde и посмотреть в отладчике:
- Client\Source\xHarbour\Contract_cls.BPR - сборочный файл
- Client\Source\xHarbour\Codes\BCLASSES\Contract - папка с исходниками
- Client\Source\xHarbour\forms\Contract - папка с формами

8. Выделена и поставляется папка Client\Source\xHarbour\common с точками вызова и описанием общих функций, которые могут быть использованы в плагинах. Эта работа только началась, и папка будет наращиваться по вашим пожеланиям.

9. Далее, в зависимости от возникающих вопросов, этот текст будет наращиваться и включаться в документацию.
_________________
С уважением, Александр Титов, Компания БЭСТ, Москва, отдел разрабо
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru