Tạo trường tra cứu cho một chiều tài chính trong Dynamics 365
Đã xuất bản: lúc 11:35:23 UTC 16 tháng 2, 2025
Cập nhật lần cuối: lúc 08:56:22 UTC 12 tháng 1, 2026
Bài viết này giải thích cách tạo trường tra cứu cho chiều dữ liệu tài chính trong Dynamics 365 for Operations, bao gồm cả ví dụ mã X++.
Creating a Lookup Field for a Financial Dimension in Dynamics 365
Thông tin trong bài viết này dựa trên Dynamics 365 for Operations, nhưng hầu hết cũng sẽ áp dụng được cho Dynamics AX 2012 (xem bên dưới).
Gần đây tôi được giao nhiệm vụ tạo một trường mới cho phép chỉ định một chiều dữ liệu tài chính duy nhất, trong trường hợp này là Sản phẩm. Tất nhiên, trường mới này cũng cần có khả năng tra cứu các giá trị hợp lệ của chiều dữ liệu đó.
Việc này phức tạp hơn một chút so với việc tra cứu thông thường trong bảng, nhưng nếu bạn biết cách làm thì thực ra cũng không quá khó.
May mắn thay, ứng dụng tiêu chuẩn cung cấp một biểu mẫu tra cứu tiện lợi (DimensionLookup) có thể được sử dụng cho mục đích này, nếu bạn chỉ cần cho nó biết thuộc tính chiều nào cần tra cứu.
Đầu tiên, bạn cần tạo trường biểu mẫu. Trường này có thể dựa trên trường bảng hoặc phương thức chỉnh sửa, điều đó không quan trọng đối với chính chức năng tìm kiếm, nhưng bằng cách này hay cách khác, nó phải sử dụng kiểu dữ liệu mở rộng DimensionValue.
Tiếp theo, bạn cần tạo trình xử lý sự kiện OnLookup cho trường đó. Để tạo trình xử lý sự kiện, hãy nhấp chuột phải vào sự kiện OnLookup của trường, sau đó chọn "Sao chép phương thức trình xử lý sự kiện". Sau đó, bạn có thể dán một phương thức trình xử lý sự kiện trống vào một lớp và chỉnh sửa nó từ đó.
Lưu ý: Hầu hết các bước này cũng sẽ hoạt động với Dynamics AX 2012, nhưng thay vì tạo trình xử lý sự kiện, bạn có thể ghi đè phương thức tra cứu của trường biểu mẫu.
Trình xử lý sự kiện phải có dạng như thế này (thay thế tên biểu mẫu và tên trường nếu cần):
FormControlEventHandler(formControlStr( MyForm,
MyProductDimField),
FormControlEventType::Lookup)
]
public static void MyProductDimField_OnLookup( FormControl _sender,
FormControlEventArgs _e)
{
FormStringControl control;
Args args;
FormRun formRun;
DimensionAttribute dimAttribute;
;
dimAttribute = DimensionAttribute::findByName('Product');
args = new Args();
args.record(dimAttribute);
args.caller(_sender);
args.name(formStr(DimensionLookup));
formRun = classFactory.formRunClass(args);formRun.init();
control = _sender as FormStringControl;
control.performFormLookup(formRun);
}
Đọc thêm
Nếu bạn thích bài viết này, bạn cũng có thể thích những gợi ý sau:
- Visual Studio bị treo khi khởi động trong khi tải các dự án gần đây
- Cập nhật giá trị chiều tài chính từ mã X++ trong Dynamics 365
- Đưa Dynamics 365 FO Virtual Machine Dev hoặc Test vào Chế độ bảo trì
