Bỏ qua, đến nội dung

Cài đặt và sử dụng ​

Kích hoạt plugin ​

Vào Settings → Plugin Manager, bật @digiforce-nc/plugin-field-formula. Plugin đăng ký field type formula và các hook tính toán tự động.

Thêm field Formula ​

  1. Mở Collection Manager → chọn collection.
  2. Thêm field mới → chọn interface Formula.
  3. Đặt tên field (ví dụ: total, fullName, profit).
  4. Viết biểu thức công thức trong Expression Editor.
  5. Chọn dataType phù hợp với kết quả (double, string, integer...).
  6. Lưu — giá trị sẽ tự động tính khi bản ghi được tạo hoặc cập nhật.
typescript
const totalField = {
  name: 'total',
  type: 'formula',
  interface: 'formula',
  dataType: 'double',
  expression: 'price * quantity',
  engine: 'mathjs',
};

Chọn Evaluator Engine ​

Plugin hỗ trợ hai engine tính toán:

mathjs ​

Cú pháp toán học tiêu chuẩn, phù hợp cho phép tính số:

Ví dụKết quả
price * quantityTích hai field
sqrt(a^2 + b^2)Căn bậc hai
(revenue - cost) / revenue * 100Tỷ lệ lợi nhuận (%)

excel-like (formula) ​

Cú pháp dạng hàm Excel, hỗ trợ logic và chuỗi:

Ví dụKết quả
IF(status == "paid", total, 0)Điều kiện
CONCAT(firstName, " ", lastName)Nối chuỗi
SUM(item1, item2, item3)Tổng nhiều field

Viết công thức ​

Trong Expression Editor:

  • Tham chiếu field bằng tên field (ví dụ: price, quantity).
  • Editor hỗ trợ autocomplete tên field trong collection.
  • Công thức được lưu dưới dạng expression string.

Ví dụ thực tế ​

Mục đíchEngineExpression
Tổng tiềnmathjsprice * quantity
Họ tên đầy đủformulaCONCAT(lastName, " ", firstName)
Giá sau thuếmathjsprice * (1 + taxRate)
Trạng tháiformulaIF(balance > 0, "Còn nợ", "Đã thanh toán")

Tự động tính lại ​

Giá trị formula được tính lại trong các trường hợp:

Sự kiệnHành vi
Tạo bản ghi mớiTính ngay sau khi lưu
Cập nhật bản ghiTính lại với giá trị mới
Tạo hàng loạt (bulk create)Tính cho tất cả bản ghi mới
Sửa công thức (field definition)Recompute toàn bộ bản ghi trong collection

Chọn kiểu dữ liệu (dataType) ​

dataTypeKhi nào dùngVí dụ
doubleKết quả là số thập phânTổng tiền, tỷ lệ
integerKết quả là số nguyênSố lượng, đếm
stringKết quả là chuỗiHọ tên, mô tả

Lưu ý ​

  • Formula field là read-only trên giao diện — người dùng không nhập giá trị trực tiếp.
  • Công thức chỉ tham chiếu field trong cùng bản ghi, không hỗ trợ tham chiếu cross-record hay relation.
  • Thay đổi công thức sẽ recompute toàn bộ bản ghi — với collection lớn, quá trình này có thể mất thời gian.