BravoServerConstraintValidator
Phạm vi áp dụng
✅ Bravo 8 · ✅ Bravo 10
Ý nghĩa
Validator kiểm tra sự hợp lệ của giá trị trả về từ một hàm hoặc một thủ tục.
Quy ước giá trị trả về
- Thủ tục / hàm trả về
= 0→ dữ liệu hợp lệ- Trả về
<> 0→ giá trị không hợp lệ
Các thẻ hỗ trợ
| Thẻ | Nội dung |
|---|---|
| SourceColumn | Danh sách các trường cần kiểm tra |
| TargetColumn | Danh sách cột hiển thị câu cảnh báo lỗi |
| Command | Khai báo hàm hoặc thủ tục |
| Caption | Tiêu đề cột hiển thị thông báo lỗi |
| Expr | Điều kiện chạy validator |
| Text | Câu hiển thị lỗi |
| zCustomConnectionName | Kết nối đến Server khác |
| Parameters | Các tham số truyền vào thủ tục check — cách khai báo tương tự ở BravoServerConstraint |
Ví dụ 1 — kiểm tra số Serial tồn kho
Trong validator của bảng <ChildTable_Phys> trên phiếu xuất:
<ItemSerialNo_Unique>
<ClassName>BravoServerConstraintValidator</ClassName>
<Command>ufn_sys_CheckUniqueItemSerialNo</Command>
<SourceColumn>FiscalYear,ItemCode,ItemSerialNo,WarehouseCode,DocGroup,RowId</SourceColumn>
<Expr>!Empty(ItemSerialNo)</Expr>
<Text>
<Vietnamese>Số serial không có.</Vietnamese>
<English>Serial number not found.</English>
</Text>
</ItemSerialNo_Unique>Ví dụ 2 — truyền cả bảng vào thủ tục check
Kiểm tra tổng số lượng xuất có vượt dự toán theo sản phẩm:
<CheckWarningOverCashPaymentPlan>
<ClassName>BravoServerConstraintValidator</ClassName>
<Command>usp_WarningOverItemPlan</Command>
<SourceColumn>ProductCostId,ItemCode,Quantity</SourceColumn>
<TargetColumn>ProductCostId,ItemCode,Quantity9</TargetColumn>
<Expr>ISNULL(DebitAccount,'') LIKE '62%'</Expr>
<Parameters>
<BranchCode>BranchCode</BranchCode>
<Stt>Stt</Stt>
<ProductCostId>ProductCostId</ProductCostId>
<ItemCode>ItemCode</ItemCode>
<vB30AccDocItemIssue_Edit>*</vB30AccDocItemIssue_Edit>
</Parameters>
<bValidateIfModify>True</bValidateIfModify>
<Text>
<Vietnamese>Xuất kho vượt quá dự toán</Vietnamese>
<English>Delivery over estimate</English>
</Text>
</CheckWarningOverCashPaymentPlan>Hai phương án cho bài toán "kiểm tra tổng"
Cách Ưu điểm Nhược điểm C1 — Evaluator trong ServerUpdating / ServerCommand Chỉ chạy 1 lần khi lưu → nhanh Người dùng chỉ biết lỗi khi ấn Lưu C2 — Validator dạng ServerConstraint truyền cả bảng Cảnh báo ngay khi gõ Gọi thủ tục nhiều lần → cân nhắc tốc độ
Ghi chú
- Danh sách cột trong SourceColumn tương ứng với các tham số truyền vào hàm/thủ tục khai báo trong Command — đúng thứ tự
- Validator này chỉ chạy khi có sự thay đổi giá trị các cột trong
SourceColumn. Muốn luôn chạy → kết hợp bValidateIfModify - Với Validator này thì ngầm định bValidateIfModify và bValidateIfNotEmpty là
True
Từ v4.1.7.0
Gộp
DataValidationvàoLayoutEngine— việc tạo và thực hiện validators dùng chung cơ chế với evaluators.
- Nếu không khai báo
Parameters→ sử dụngSourceColumnlàm các tham số như trước- Nếu có khai báo
Parameters→ bỏ quaSourceColumnĐiều đó có nghĩa là tham số truyền vào thủ tục hoàn toàn có thể là cả dataset trên màn hình Editor.
Liên quan
BravoServerConstraint · Command · Parameters · bValidateIfModify · Validator Overview