Salesforce Screen Flow में यूज़र को कई तारीखें कैसे चुनने दें
Flow हर स्क्रीन एलिमेंट में एक ही Date फ़ील्ड देता है। अगर किसी को नौ दिन चुनने हों, तो दिक्कत है। ये रहे विकल्प, और हर एक के फ़ायदे-नुकसान।
हर एडमिन के सामने कभी न कभी यह आता है। छुट्टी का अनुरोध, उपलब्धता फ़ॉर्म, ट्रेनिंग साइन-अप: यूज़र को कई तारीखें चुननी हैं जो ज़रूरी नहीं कि लगातार हों, और Flow का स्टैंडर्ड Date कंपोनेंट ठीक एक तारीख लेता है।
वैकल्पिक तरीके, और उनकी कमियाँ
| तरीका | कैसे चलता है | नुकसान |
|---|---|---|
| एक स्क्रीन पर कई Date फ़ील्ड | Date 1, Date 2, Date 3, Date 4... | तय ऊपरी सीमा, भद्दा, और ज़्यादातर खाली |
| एक loop जो एक-एक करके पूछता है | “एक और तारीख जोड़ें?” और फिर वापस स्क्रीन पर | लगभग तीन तारीखों के बाद मुश्किल |
| एक फ़्री-टेक्स्ट फ़ील्ड | यूज़र तारीखें टेक्स्ट में टाइप करता है | न पार्स हो, न रिपोर्ट बने, और गलतियों से भरा |
| सिर्फ़ शुरुआत और अंत की तारीख | इसे एक लगातार रेंज मान लें | जब भी दिन लगातार न हों, गलत |
| तारीखों की multi-select picklist | तारीख के मान पहले से बनाकर रखें | पुरानी पड़ जाती है, लगातार रखरखाव चाहिए |
| कई तारीखों वाला कैलेंडर कंपोनेंट | एक स्क्रीन पर हर ज़रूरी तारीख पर क्लिक करें | collection लौटाता है, loop के लिए तैयार |
शुरुआत-और-अंत वाला तरीका सबसे आम है, और चुपचाप सबसे गलत। “मुझे 3, 4, 11 और 18 तारीख की छुट्टी चाहिए” बन जाता है 3 से 18 तारीख, यानी सोलह दिन की मानी गई गैरहाज़िरी। डेटा साफ़ दिखता है, पर सीधे-सीधे गलत है।
असली हल: ऐसा स्क्रीन कंपोनेंट जो collection लौटाए
Flow को असल में ऐसा स्क्रीन कंपोनेंट चाहिए जिसमें यूज़र जितनी चाहे तारीखों पर क्लिक करे और जो एक collection वापस दे। यह मिल जाए, तो बाकी फ़्लो सामान्य है: collection पर loop चलाएँ, हर तारीख का एक रिकॉर्ड बनाएँ, बस।
आप क्या दर्ज कर रहे हैं, उसके हिसाब से MultiDatePick कई आउटपुट लौटाता है:
| आउटपुट | इसमें क्या होता है | API नाम |
|---|---|---|
| Selected Dates | ISO तारीखों का एक Text collection, loop के लिए तैयार | selectedDates |
| Date Ranges JSON | जुड़ी हुई रेंज, जब लगातार दिनों को एक रिकॉर्ड में सिमटना हो | selectedDateRangesJson |
| Dates With Times JSON | हर तारीख के शुरुआत और अंत का समय | selectedDatesWithTimesJson |
| Successful Bookings Count, Conflict Dates | क्या सहेजा गया, और कहाँ टकराव हुआ | bookingSuccessCount |
JSON को वापस रिकॉर्ड में बदलना
इनमें से दो आउटपुट JSON हैं, क्योंकि Flow में “कई फ़ील्ड वाले ऑब्जेक्ट की सूची” के लिए कोई नेटिव टाइप नहीं है। formula में टेक्स्ट पार्स करने की ज़रूरत नहीं। पैकेज के साथ एक Flow action आता है, Parse Date Entries from JSON, जो JSON लेकर From Date, To Date, Start Time और End Time वाला सही collection लौटाता है। उस collection पर आप किसी भी दूसरे की तरह loop चलाते हैं।
एक पेच जो लोगों का एक घंटा खा जाता है
$GlobalConstant.True या $GlobalConstant.False चाहिए।
चाहते हैं कि कंपोनेंट खुद रिकॉर्ड सहेजे? parent रिकॉर्ड का Id Parent Record Id में पास करें, और यह हर तारीख का एक चाइल्ड रिकॉर्ड बना देता है। आउटपुट पर loop चलाकर अपने तरीके से रिकॉर्ड बनाने हों तो इसे खाली छोड़ें।
बनाने से पहले रिकॉर्ड का स्वरूप तय करें
वही नौ चुनी गई तारीखें नौ रिकॉर्ड बन सकती हैं, या चार, अगर लगातार दिन रेंज में सिमट जाएँ, या sub-block वाला एक parent रिकॉर्ड। हर एक किसी अलग रिपोर्ट के लिए सही है। फ़्लो बनाने से पहले यह तय करें, क्योंकि बाद में बदलने का मतलब है फ़्लो एडिट करने के साथ डेटा माइग्रेट करना भी।
अपने अगले Flow में असली मल्टी-डेट पिकर लगाएँ
लाइव डेमो में तारीखों पर क्लिक करें, फिर फ़्लो स्क्रीन में कंपोनेंट जोड़ने के लिए “शुरुआत करें” गाइड देखें।
- $20/यूज़र/माह, हर फ़ीचर
- 30 दिन का फ़्री ट्रायल, कार्ड नहीं
- 100% नेटिव Salesforce
- कोई Apex नहीं
- जल्द ही Salesforce AppExchange पर