मैं गतिविधि इतिहास से पूछताछ कर रहा हूं, और ऐसा लगता है कि आप इसे किसी अन्य ऑब्जेक्ट के विरुद्ध किसी सबक्वायरी के ऑब्जेक्ट के रूप में ही पूछ सकते हैं। यह ठीक है - मैंने अपनी क्वेरी को खाता ऑब्जेक्ट के विरुद्ध क्वेरी करने के लिए बदल दिया है, जिसमें सबक्वायरी में ActivityHistory है। ठीक काम करने के लिए समझा। लेकिन परीक्षण में, मुझे एक ऐसा मामला मिला जहां ActivityHistory subquery ने 200 से अधिक परिणामों को वापस कर दिया। मैं इस त्रुटि हो रही शुरू कर दिया: एसक्यूएल समस्या जब गतिविधि subiery के रूप में गतिविधि है ..
FATAL_ERROR|System.QueryException: entity type ActivityHistory does not support query
... डीबग लॉग में। यह केवल एक मुद्दा प्रतीत होता है जहां ActivityHistory ऑब्जेक्ट में किसी खाते में 199 से अधिक संबंधित प्रविष्टियां होती हैं। यह देखने के लिए कि क्या यह कारण था, मैंने उपखंड में एक LIMIT 199 और एक LIMIT 200 खंड डालने का प्रयास किया। निश्चित रूप से, जब मैं 199 (या कुछ भी कम) का उपयोग करता हूं तो यह ठीक काम करता है। उपरोक्त त्रुटि में 200 (या कुछ भी उच्च) का उपयोग करना।
मेरा कोड नीचे है। ध्यान देने योग्य एक बात यह है कि क्वेरी फॉर लूप में है। एक सिद्धांत यह है कि यह क्यों है कि यह LIMIT क्लॉज के उच्च मानों के लिए त्रुटि का उत्पादन क्यों कर रहा है, शायद 200 वह बिंदु है जहां फोर लूप क्वेरी को अलग-अलग हिस्सों में बैच कर रहा है - शायद दूसरा खंड 'सबक्वायरी' के रूप में योग्य नहीं है (चूंकि यह अलग से चल रहा है?) - और सेल्सफोर्स इसे पसंद नहीं कर रहा है।
ओह, और एक और बात: एक ही कोड बेनामी एपेक्स संपादक में ठीक चल रहा है (हालांकि मुझे कुछ संशोधन करना था - स्पष्ट मानों के साथ इनलाइन चर को बदलना)। अजीब है कि एनन संपादक इसके साथ पूरी तरह से खुश है, लेकिन एसएफडीसी सर्वर इसे पसंद नहीं करते हैं।
वैसे भी, मैं कुछ और समस्या निवारण करने के लिए बंद हूं। किसी के पास कोई अंतर्दृष्टि है?
धन्यवाद!
कोड:
// ActivityHistory's on Account for (Account a : [ // you can't query ActivityHistory directly; only in a subquery against another object type SELECT Id ,Name ,(SELECT ActivityDate ,ActivityType ,CRM_Meeting_Type__c ,Description ,CreatedBy.Name ,Status ,WhatId FROM ActivityHistories WHERE ActivityType IN :included_activity_history_types //LIMIT 200 ) FROM Account WHERE Id = :accountId ]) { for (ActivityHistory ah : a.ActivityHistories) { if (ah.WhatId==null) { continue; } // skip adding activities without a WhatId if (((string)ah.WhatId).startsWith('001')) { // only add ActivityHistory's tied directly to an Account (the query above pulls back all ActivityHistory's on related Oppty's as well) activities.add(new ActivityWrapper(ah)); } } }