2012-07-29 21 views
14

Có cách nào để phát hiện rằng bản ghi được chèn vào là kết quả của một thao tác sao chép trong trình kích hoạt không?Phát hiện khi bản ghi đang được sao chép trong trình kích hoạt

Là một phần của gói được quản lý, tôi muốn xóa một số trường tùy chỉnh khi bản ghi Cơ hội và Cơ hộiLineItem được sao chép.

Hoặc là trình kích hoạt không đúng địa điểm để ngăn các trường nhất định được sao chép?

Tôi đã cân nhắc tạo mã chuyên dụng để gọi sObject.Clone() và loại trừ các trường không bắt buộc. Điều này dường như không phải là giải pháp lý tưởng cho gói được quản lý vì nó cũng sẽ loại trừ bất kỳ trường tùy chỉnh nào khác trên Cơ hội.

+0

Ý tưởng: [Clone - Có khả năng kiểm soát Fields được nhân bản vô tính] (http://success.salesforce.com/ideaview?id=08730000000BpUXAA0) –

Trả lời

6

Trong Winter '16 release, Apex có hai phương pháp mới cho phép bạn phát hiện nếu bản ghi đang được nhân bản và từ id bản ghi nguồn nào. Bạn có thể sử dụng điều này trong trình kích hoạt của mình.

  • isClone() - Trả về true nếu thực thể được sao chép từ thứ gì đó, ngay cả khi thực thể chưa được lưu.
  • getCloneSourceId() - Trả về ID của đối tượng mà từ đó một đối tượng được sao chép.

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_sobject.htm#apex_System_SObject_getCloneSourceId

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_methods_system_sobject.htm#apex_System_SObject_getCloneSourceId

+0

này cần tình yêu hơn – booky99

1

Bạn không thể phát hiện hoạt động sao chép bên trong trình kích hoạt. Nó được coi là thao tác "Chèn".

Bạn vẫn có thể sử dụng mã chuyên dụng để gọi sObject.Clone() và loại trừ các trường không bắt buộc. Bạn có thể đảm bảo rằng bạn bao gồm tất cả các trường bằng cách sử dụng sObject mô tả thông tin để giữ tất cả các trường cho đối tượng đó, và sau đó loại trừ các trường không cần thiết.

Hy vọng điều này có ý nghĩa!

Anup

5

Một cách tiếp cận, mặc dù loại kludgy, sẽ tạo ra một lĩnh vực mới, nói original_id__c, mà được dân cư của một quy trình làm việc (hoặc kích hoạt, tùy thuộc vào sở thích của bạn cho order of execution) khi trống với id bán hàng của hồ sơ. Đối với các bản ghi mới, trường này sẽ khớp với id salesforce tiêu chuẩn, cho các bản ghi nhân bản vô tính. Có một số biến thể về thời gian và cách thức và những gì để điền vào trường với, nhưng điều quan trọng là để cung cấp cho mình móc của riêng bạn để phân biệt các bản ghi mới và nhân bản.

Nếu bạn chỉ tìm cách để kiểm soát trải nghiệm cho người dùng cuối (như trái ngược với một nhà phát triển mở rộng gói quản lý của bạn), bạn có thể ghi đè nút bản sao tiêu chuẩn với một trang tùy chỉnh mà xóa các giá trị cho một tập hợp con của các lĩnh vực sử dụng url hacking. Có một số cảnh báo, cụ thể là trường có thể chỉnh sửa và hiển thị trên bố cục trang cho người dùng đã nhấp vào nút bản sao. Theo văn bản này, tôi không tin rằng bạn có thể đóng gói ghi đè tiêu chuẩn, nhưng danh sách những thay đổi có thể có với việc phát hành bao giờ.

Các vấn đề liên quan