Miklix

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++.


Trang này được dịch máy từ tiếng Anh để có thể tiếp cận được với nhiều người nhất có thể. Thật không may, dịch máy vẫn chưa phải là công nghệ hoàn thiện, do đó có thể xảy ra lỗi. Nếu bạn thích, bạn có thể xem phiên bản tiếng Anh gốc tại đây:

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:


Chia sẻ trên BlueskyChia sẻ trên FacebookChia sẻ trên LinkedInChia sẻ trên TumblrChia sẻ trên XChia sẻ trên LinkedInGhim trên Pinterest

Mikkel Christensen

Về tác giả

Mikkel Christensen
Mikkel là người sáng lập và chủ sở hữu của miklix.com. Ông có hơn 20 năm kinh nghiệm làm lập trình viên máy tính/nhà phát triển phần mềm chuyên nghiệp và hiện đang làm việc toàn thời gian cho một tập đoàn CNTT lớn của Châu Âu. Khi không viết blog, ông dành thời gian rảnh rỗi cho nhiều sở thích, thú vui và hoạt động, có thể được phản ánh ở một mức độ nào đó trong nhiều chủ đề được đề cập trên trang web này.