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

Bài viết này giải thích cách tạo trường tra cứu cho chiều tài chính trong Dynamics 365 for Operations, bao gồm 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 đăng này dựa trên Dynamics 365 for Operations, nhưng phần lớn cũng có thể áp dụng 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 trong đó có thể chỉ định một chiề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 cũng có thể tra cứu các giá trị hợp lệ của chiều này.

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 thì thực ra cũng không quá khó.

May mắn thay, ứng dụng chuẩn cung cấp biểu mẫu tra cứu tiện lợi (DimensionLookup) có thể được sử dụng cho mục đích này, chỉ cần bạn cho ứng dụng biết thuộc tính kích thước nào cần tra cứu.

Đầu tiên, bạn cần tạo chính trường biểu mẫu. Điều này có thể dựa trên trường bảng hoặc phương pháp chỉnh sửa, không quan trọng đối với chính tra cứu, nhưng theo cách này hay cách khác, nó phải sử dụng kiểu dữ liệu mở rộng DimensionValue.

Sau đó, bạn cần tạo một trình xử lý sự kiện OnLookup cho trường. Để tạo một trình xử lý sự kiện, hãy nhấp chuột phải vào sự kiện OnLookup cho trường, sau đó chọn "Sao chép phương thức xử lý sự kiện". Sau đó, bạn có thể dán một phương thức xử lý sự kiện trống vào một lớp và chỉnh sửa từ đó.

Lưu ý: Hầu hết các thao tác này cũng có thể áp dụng cho 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 trông giống 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);
}
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 Bang Christensen

Về tác giả

Mikkel Bang 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.