Bắt đầu với USPCaller và Wizard

Phạm vi áp dụng

✅ Bravo 8 · ✅ Bravo 10

Hai loại màn hình chạy thủ tục theo bước:

Màn hìnhMục đích
USPCallerThực thi một lệnh với server — 1 bước chạy
WizardThực thi danh sách các bước để giải quyết một bài toán

I. USPCaller

Đặc điểm

Về cơ sở dữ liệu: USPCaller chỉ có 1 bước chạy nên vẫn phải khai báo 1 dòng trong B00Command để định nghĩa chức năng. Tuy nhiên thủ tục thực hiện không khai báo trong B00Command mà khai báo trong DataSource.

Về Validator: Hỗ trợ kiểm tra trực tiếp ở layout khi thực hiện chức năng — VD kiểm tra đơn vị tổng hợp, dữ liệu trong thời gian khóa… thay vì phải kiểm tra ở thủ tục như trước.

Giao diện — 3 bước rõ ràng

BướcNội dung
1. Nhập tham sốHiển thị các tham số do người dùng tự gõ vào
2. Chi tiếtShow chi tiết thời gian thực hiện, các bước trong toàn bộ chức năng (thực hiện thủ tục nào, cập nhật trigger nào…)
3. Kết quảShow kết quả chi tiết của chức năng

DataSource

Các thẻ khai báo tương tự Editor. Chú ý:

Command

Khai báo thủ tục được thực hiện khi chạy chức năng (thay cho cột CtorArg1 trong B00Command của bản B7).

<Command>Ten_thu_tuc</Command>

Tham số tự khớp tên

Các tham số truyền vào thủ tục khai báo ở cột CtorArgs trong B00Command và các giá trị khai báo layout — chương trình tự hiểu mặc định.

VD: thủ tục có tham số @_DocDate1 → chương trình tự lấy tham số DocDate1.

Trường hợp tham số là chuỗi XML:

CáchCú phápKết quả
Chỉ định tên bảng và cộtIdList=@vB20Item.IdChỉ truyền cột được chỉ định
Truyền toàn bộIdList=@*Dữ liệu có thể gồm cả bảng mẹ và bảng con — người dùng tự xác định lấy từ bảng nào
<UpdateSeriesItems>
  <zCtorArgs>GetSelectedData=*;IdList=@vB20Item.Id;AutoRun=False;</zCtorArgs>
</UpdateSeriesItems>

Validators

Kiểm tra tính hợp lệ trước khi cho thực hiện chức năng — thường dùng để kiểm tra thời gian hợp lệ, kiểm tra tham số nhập ở layout.

→ Validator Overview

Layout — pannelParameters

ThẻNội dung
autoActionWhenCompletedHành động tiếp theo khi chức năng hoàn thành:
• None — (mặc định) không làm gì
• CloseForm — đóng chức năng
• ExitProgram — thoát chương trình
• ShutDownComputer — tắt máy tính
bAutoAddPrintSettingsHiển thị định dạng in cho màn hình trả về kết quả. Mặc định False
zCompletedTextCâu thông báo khi thành công, thay cho “Đã thực hiện thành công”
zUncompletedTextCâu thông báo khi có lỗi, thay cho “Có lỗi trong khi thực hiện”
verifyWorkingDataKhóa form khi đổi năm / đơn vị làm việc

Layout — pannelReporter

Khai báo hiển thị màn hình Reporter kết quả ở “bước 3 Kết quả”. Nguyên tắc và cách khai báo tương tự Bắt đầu với Reporter.

stepContainer

Chỉ định Text, Caption cho từng bước trong màn hình USPCaller.

<stepContainer>
  <pageStart>
    <Text>Các tham số tính giá vốn</Text>
    <Caption>Bước nhập tham số</Caption>
  </pageStart>
  <pageProgress>...</pageProgress>
  <pageEnd>...</pageEnd>
</stepContainer>

II. Wizard

Đặc điểm

Về cơ sở dữ liệu: Chỉ cần khai báo 1 dòng trong B00Command để định nghĩa chức năng — các bước thực hiện không cần khai báo trong B00Command như B7.

Thay đổi lớn nhất của Wizard

Dữ liệu kế thừa ở các bước có thể được khai báo chỉ đích danh từ BẤT KỲ bước nào trước đấy — mà không phải nhất định là kết quả của bước ngay trước đấy như B7.

⚠️ Lưu ý về biểu thức

Wizard KHÔNG dùng expr="True" và {=...}

Màn hình Wizard đã hỗ trợ sẵn thẻ Visible và Enabled nên khi khai báo biểu thức chỉ cần khai báo biểu thức trần:

<!-- SAI ở Wizard -->
<Visible expr="True">{=@_ProviderCode='VNPT'}</Visible>
 
<!-- ĐÚNG ở Wizard -->
<Visible>@_ProviderCode='VNPT'</Visible>

(Từ V4.1.2.1)

Mỗi bước định nghĩa trong thẻ Items.

Tên bước = tên SubLayout

Tên của mỗi bước (Item) thường chính là tên của SubLayout khai báo tương ứng với bước đó.

VersionHỗ trợ
4.5.8.0Khai báo zCustomConnectionName và nCommandTimeout cho từng bước dạng Command

Bốn kiểu bước

1. Thực hiện một thủ tục lưu

Trả về kết quả là đầu vào cho các bước tiếp theo.

<AccountList>
  <Command>usp_sys_ChenhLechTyGiaCuoiKy</Command>
  <Visible>False</Visible>
  <Parameters>
    <DocDate2>DocDate2</DocDate2>
    <TransCode>TransCode</TransCode>
    <BranchCode>Branch()</BranchCode>
    <Year>FiscalYear()</Year>
    <LangId>LANGID()</LangId>
  </Parameters>
</AccountList>

Quy tắc đặt tên bảng kết quả

Kết quả trả về của thủ tục ở bước X có tên tương ứng:

  • X — bảng trả về đầu tiên
  • X1 — bảng trả về thứ 2… và tiếp tục

2. Bước là màn hình Editor

<CollectExpensesEdit>
  <Assembly>Bravo.DataEditor</Assembly>
  <ClassName>DataEditor</ClassName>
  <zCtorArgs>GetDataSet=CollectExpensesGetData;CustomDataSource=True;</zCtorArgs>
  <Text>
    <Vietnamese>Xem và sửa dở dang cuối kỳ</Vietnamese>
    <English>Adjust unfinished factor</English>
  </Text>
</CollectExpensesEdit>

GetDataSet=CollectExpensesGetData → chỉ đích danh dữ liệu hiển thị ở bước này là kết quả của bước CollectExpensesGetData.

3. Bước là màn hình Reporter

<CalculateProducts>
  <Assembly>Bravo.Reporter</Assembly>
  <ClassName>Reporter</ClassName>
  <zCtorArgs expr="True">DocDate='{=DocDate}';WorkProcessCode='{=WorkProcessCode}';
    FiscalYear='{=FiscalYear}';BranchCode='{=BranchCode}';AutoRun=True;</zCtorArgs>
  <Text>
    <Vietnamese>Xác định thành phẩm</Vietnamese>
  </Text>
</CalculateProducts>

4. Bước là màn hình Explorer

<ResultReview>
  <Assembly>Bravo.DataExplorer</Assembly>
  <ClassName>DataExplorer</ClassName>
  <zCtorArgs expr="True">FilterKey=WorkProcessCode='{=WorkProcessCode}' AND
    Year=YEAR('{=DocDate}') AND Month=MONTH('{=DocDate}') AND
    FiscalYear='{=FiscalYear}';AutoSearch=True;</zCtorArgs>
  <Text>
    <Vietnamese>Kết quả tính giá thành</Vietnamese>
  </Text>
</ResultReview>

bValidateErrorToContinue

Cho phép sang bước tiếp theo nếu thực hiện không có lỗi.

Mặc địnhFalse

Điều hướng

VersionHỗ trợ
V4.1.2.1Command Backward / Forward (quay lại / tiếp tục bước) và Refresh (F5) để thực hiện lại một bước bất kỳ
Ver 4.1.7.0Khi quay lại bước trước bằng Esc hoặc Backward sẽ chỉ quay lại các bước đã được thực hiện

Lưu layout trong Wizard

Nếu đứng ở màn hình một bước và sửa đổi layout rồi lưu → không hiển thị biểu tượng lưu tạm và không lưu thật được. Phải quay ra màn hình đầu tiên để lưu thật.

→ Cơ chế lưu tạm Layout


Liên quan

Bắt đầu với Reporter · Bắt đầu với Editor · Bắt đầu với Explorer · zSubLayout · MainWindow · Thẻ khác của Reporter