หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
Microsoft Dataverse ตารางลูกค้า (account, contactและ customeraddress) จัดเก็บความสัมพันธ์ของลูกค้า รายละเอียดการติดต่อ และที่อยู่และข้อมูลการจัดส่ง บทความนี้อธิบายว่าตารางเหล่านี้เชื่อมโยงอย่างไรและวิธีการจัดการระเบียนที่อยู่ลูกค้าที่ฝังอยู่และว่างเปล่า
ตารางบัญชี
ตารางบัญชีเป็นหนึ่งในตารางใน Dataverse ซึ่งเป็นที่ตารางอื่นๆ ส่วนใหญ่นั้นแนบมาหรือเป็นรองจากตารางนี้ ใน Dataverse บัญชีแสดงถึงบริษัทที่หน่วยธุรกิจมีความสัมพันธ์ ข้อมูลที่รวมอยู่ในบัญชีคือข้อมูลการติดต่อที่เกี่ยวข้องทั้งหมด ข้อมูลบริษัท ประเภท ชนิดความสัมพันธ์ และข้อมูลที่อยู่ ข้อมูลอื่นๆ ที่มีรายการต่อไปนี้:
- บัญชีสามารถเป็นบัญชีหลักสําหรับชนิดตารางส่วนใหญ่ รวมถึงบัญชีอื่น
- บัญชีผู้ใช้สามารถเป็นตารางแบบสแตนด์อโลนได้
- บัญชีผู้ใช้สามารถมีบัญชีได้เพียงบัญชีเดียวเท่านั้นในฐานะบัญชีหลัก
- บัญชีสามารถมีบัญชีย่อยและผู้ติดต่อของบัญชีย่อยได้หลายรายการ
การจัดการบัญชีเป็นหนึ่งในแนวคิดสําคัญของการจัดการความสัมพันธ์กับลูกค้าในธุรกิจ (Dynamics 365) เนื่องจากองค์กรต้องการเห็นกิจกรรมทั้งหมดที่พวกเขามีกับบริษัทอื่น กิจกรรมทั้งหมดนี้มาบรรจบกันที่ระดับบัญชี ดูการอ้างอิงตาราง บัญชี
ตารางผู้ติดต่อ
ใน Dataverse ผู้ติดต่อหมายถึงบุคคล โดยปกติแล้วจะเป็นบุคคลโดยที่หน่วยธุรกิจมีความสัมพันธ์ เช่น ลูกค้า ผู้จัดหา หรือเพื่อนร่วมงาน ตารางผู้ติดต่อเป็นหนึ่งในตารางที่เชื่อมโยงกับตารางอื่น ๆ ส่วนใหญ่ ผู้ติดต่อสามารถเป็นตารางแบบสแตนด์อโลนได้ สิ่งที่รวมอยู่ในตารางนี้ได้แก่ ข้อมูลระดับมืออาชีพ ส่วนบุคคล และครอบครัว และที่อยู่หลายที่อยู่ ดูการอ้างอิงตารางผู้ติดต่อ
ทั้งบัญชีและผู้ติดต่อเป็นส่วนหนึ่งของการจัดการลูกค้าและมีความเกี่ยวข้องกันในวิธีต่อไปนี้:
- ผู้ติดต่อสามารถเป็นผู้ติดต่อหลักสําหรับตารางอื่นทั้งหมด ยกเว้นบัญชีและผู้ติดต่อ
- ผู้ติดต่อสามารถมีบัญชีได้เพียงบัญชีเดียวเท่านั้นในฐานะบัญชีหลัก
- คุณสามารถทําเครื่องหมายผู้ติดต่อเป็นผู้ติดต่อหลักสําหรับบัญชีได้โดยการตั้งค่า
Account.PrimaryContactIdคอลัมน์
ตารางผู้ติดต่อจัดเก็บข้อมูลเกี่ยวกับบุคคล เช่น ที่อยู่อีเมล ที่อยู่ และหมายเลขโทรศัพท์ นอกจากนี้ยังมีข้อมูลอื่น ๆ ที่เกี่ยวข้องเช่นวันเกิดของบุคคลหรือวันครบรอบ ขึ้นอยู่กับชนิดของลูกค้าที่หน่วยธุรกิจมี หน่วยธุรกิจนั้นอาจต้องใช้เพียงข้อมูลผู้ติดต่อ หรือทั้งข้อมูลผู้ติดต่อและบัญชีลูกค้า เพื่อให้สามารถมองเห็นภาพรวมของลูกค้าได้อย่างครบถ้วน
การเชื่อมโยงตารางเช่นกิจกรรมและบันทึกย่อไปยัง contact ตารางช่วยให้ผู้ใช้สามารถดูการสื่อสารทั้งหมดที่ผู้ใช้มีกับลูกค้า การดําเนินการใด ๆ ที่ผู้ใช้ใช้ในนามของลูกค้า และข้อมูลทั้งหมดที่ผู้ใช้ต้องการเกี่ยวกับลูกค้า
ตาราง CustomerAddress
ตารางนี้ประกอบด้วยรายละเอียดที่อยู่และการจัดส่งเพิ่มเติมสําหรับบันทึกลูกค้า (บัญชีและผู้ติดต่อ) ตามค่าเริ่มต้น Dataverse จะสร้างระเบียนในตารางนี้อย่างน้อยสอง customeraddress ระเบียนเมื่อคุณสร้างระเบียนลูกค้าใหม่ แม้ว่าจะไม่มีข้อมูลสําหรับระเบียนเหล่านี้ก็ตาม
เรียนรู้วิธีที่คุณสามารถเปลี่ยนลักษณะการทํางานนี้
คุณสามารถเข้าถึงเรกคอร์ดทั้งหมด customeraddress ที่เกี่ยวข้องกับเรกคอร์ดบัญชีและผู้ติดต่อผ่าน Account_CustomerAddress ความสัมพันธ์ และ Contact_CustomerAddress ได้ ทั้งสองความสัมพันธ์ใช้การค้นหาหลัก คอลัมน์ parentidtypecode ระบุชนิดของเรกคอร์ดลูกค้าที่เกี่ยวข้องกับที่อยู่
ข้อมูลที่อยู่ที่ฝังอยู่ในระเบียนลูกค้า
คุณสามารถดึงหรือแก้ไขข้อมูลของระเบียน customeraddress ฝังตัวสองหรือสามรายการร่วมกับระเบียนลูกค้าได้
- ระเบียนบัญชีมีคอลัมน์
address1_addressidและaddress2_addressid - เรกคอร์ดผู้ติดต่อมีคอลัมน์
address1_addressid,address2_addressidและaddress3_addressid
คอลัมน์เหล่านี้จะจัดเก็บ customeraddressid ค่าต่างๆ คอลัมน์ลูกค้าอื่น ๆ แต่ละคอลัมน์มีคํานําหน้าเป็น address1*, address2*หรือ address3*มีข้อมูลที่อยู่ที่สอดคล้องกันจาก customeraddress ตาราง
คอลัมน์ customeraddressaddressnumber จะระบุว่าที่อยู่ใดนําไปใช้กับคอลัมน์เรกคอร์ดลูกค้าหลัก คุณไม่สามารถตั้งค่า addressnumber คอลัมน์เป็นค่าที่ใช้โดยระเบียนอื่น customeraddress ที่เกี่ยวข้องกับลูกค้าหลักรายเดียวกันได้ คุณสามารถตั้งค่าที่มีอยู่ addressnumber เป็น 0 หรือ null จากนั้นเปลี่ยนค่าของระเบียนอื่นถ้าคุณต้องการสลับตําแหน่งสัมพัทธ์ของระเบียนสําหรับระเบียนลูกค้า แม้ว่า addressnumber จะมีการเพิ่มค่าในแต่ละระเบียนที่สร้างขึ้นสำหรับลูกค้า นอกเหนือจากการควบคุมตำแหน่งที่อยู่แบบฝังในระเบียนลูกค้า (ไม่ว่าจะเป็น 1, 2, หรือ 3) คอลัมน์ addressnumber ไม่มีการใช้ประโยชน์อื่นใด
Dataverse อัปเดตระเบียนเหล่านี้ customeraddress ผ่านคอลัมน์ระเบียนลูกค้าที่สอดคล้องกันเท่านั้นแทนที่จะอัปเดต customeraddress แถวโดยตรง อย่างไรก็ตาม ทุกคนสามารถแก้ไขระเบียนเหล่านี้เป็น customeraddress ระเบียน หรือเพิ่มระเบียนเพิ่มเติม customeraddress ที่เชื่อมโยงกับ account ระเบียน หรือ contact ที่ไม่ได้ถูกฝังเข้ากับระเบียนบัญชีและระเบียนที่ติดต่อ
ไม่อนุญาตให้ลบแถวที่อยู่ลูกค้าแบบฝังตัว
ตามค่าเริ่มต้น ถ้าคุณพยายามที่จะลบระเบียนฝัง customeraddress ตัวที่ address1_addressidการอ้างอิง , address2_addressidหรือ address3_addressid สําหรับระเบียนลูกค้า คุณจะได้รับข้อผิดพลาดเช่นข้อความแสดงข้อผิดพลาดต่อไปนี้:
ชื่อ:
CannotDeleteDueToAssociation
รหัส:0x80040227
เลข:-2147220953
ข้อความ:Customer Address can not be deleted because it is associated with another object. Address Id = 4f33c2e4-d5a3-4b03-b050-21984c0e4c15, AddressNumber=2, ParentId=4b757ff7-9c85-ee11-8179-000d3a9933c9, ObjectTypeCode=1
เรียนรู้วิธีที่คุณสามารถเปลี่ยนลักษณะการทํางานนี้
ปิดใช้งานการสร้างเรกคอร์ดที่ว่างเปล่า
แต่ละแถวในตาราง customeraddress จะนับรวมตามความจุ Dataverse ที่คุณจ่ายไป ดังนั้นคุณอาจต้องการลดค่าใช้จ่ายนี้
คุณสามารถบอก Dataverse ไม่ให้สร้างแถวตารางที่ว่างเปล่าcustomeraddressสําหรับแต่ละระเบียนลูกค้าโดยการเปลี่ยนการตั้งค่าปิดใช้งานระเบียนที่อยู่ว่างเปล่าในศูนย์การจัดการ Power Platform ก่อนที่จะเปลี่ยนลักษณะการทํางานนี้ ให้พิจารณาว่าคุณมีการเลือกกําหนดที่มีอยู่ซึ่งขึ้นอยู่กับลักษณะการทํางานเริ่มต้นหรือไม่
เรียนรู้เพิ่มเติมเกี่ยวกับการตั้งค่านี้
ขณะที่การตั้งค่านี้เปิดอยู่ จะไม่มีการสร้างแถวตารางที่ว่างเปล่า customeraddress ใหม่เมื่อมีการสร้างระเบียนลูกค้าใหม่ เรกคอร์ดจะถูกสร้างขึ้นเฉพาะเมื่อส่วนข้อมูลขาเข้ามีข้อมูลที่อยู่ โดยปกติแล้ว เพย์โหลดจะมีเฉพาะคอลัมน์ที่มีข้อมูลเท่านั้น ถ้าไม่มีข้อมูลสําหรับคอลัมน์ คอลัมน์จะไม่รวมอยู่ในส่วนข้อมูลและค่าจะเป็น null เมื่อบันทึกระเบียน อย่างไรก็ตาม ถ้าส่วนข้อมูลประกอบด้วยคอลัมน์ที่อยู่ที่มีค่าที่ตั้งค่าเป็น null ที่อยู่จะถูกสร้างขึ้นด้วยค่า null ถ้าคุณยังคงเห็นระเบียนเปล่าที่สร้างขึ้น ให้ตรวจสอบวิธีการสร้าง และดูว่าแอปพลิเคชันไคลเอ็นต์กําลังส่งข้อมูลคอลัมน์ที่มีค่า Null หรือไม่
หากปิดการตั้งค่า ปิดใช้งานการสร้างระเบียนที่อยู่ว่างเปล่า ลักษณะการทํางานเริ่มต้นจะดําเนินการต่อ การเปิดใช้งานการตั้งค่านี้จะไม่ลบแถวของตารางใด ๆ ที่มีอยู่customeraddress การสลับการตั้งค่านี้กลับไปหลังจากที่ปิดแล้ว จะไม่สร้างระเบียนที่ไม่ได้สร้างขึ้นใหม่
ตรวจสอบว่าการสร้างเรกคอร์ดที่อยู่ว่างเปล่าถูกปิดใช้งานหรือไม่
ฟังก์ชันตัวอย่างเหล่านี้แสดงวิธีการตรวจสอบว่าการตั้งค่า ปิดใช้งานการสร้างระเบียนที่อยู่ว่างเปล่า เปิดใช้งานในสภาพแวดล้อมหรือไม่
ฟังก์ชัน PowerShell นี้Test-IsEmptyAddressRecordCreationDisabledใช้คําสั่ง Microsoft Power Platform CLIpac env list-settings เพื่อตรวจสอบค่าในOrganization.OrgDbOrgSettingsคอลัมน์
function Test-IsEmptyAddressRecordCreationDisabled {
$orgdborgsettings = pac env list-settings `
--filter orgdborgsettings `
| Where-Object { $_ -match '^orgdborgsettings\s+' } `
| ForEach-Object { $_ -replace '^orgdborgsettings\s+', '' }
$xml = [xml]$orgdborgsettings
$element = $xml.SelectSingleNode("//CreateOnlyNonEmptyAddressRecordsForEligibleEntities")
# Return true only when the element exists and has the value of 'true'
return ($null -ne $element) -and ($element.InnerText -eq 'true')
}
ลบเรกคอร์ดที่อยู่แบบฝังตัว
ตามค่าเริ่มต้น คุณไม่สามารถลบแถวตารางแบบ customeraddress ฝังตัวที่มี address1_addressidคอลัมน์ , address2_addressidหรือ address3_addressid ในการอ้างอิงตารางลูกค้าได้ สําหรับข้อมูลเพิ่มเติม ดูไม่อนุญาตให้มีการลบแถวที่อยู่ลูกค้าแบบฝังตัว
การตั้งค่า เปิดใช้งานการลบระเบียนที่อยู่ ใน ศูนย์การจัดการ Power Platform จะเปลี่ยนแปลงลักษณะการทํางานนี้ เรียนรู้เพิ่มเติมเกี่ยวกับการตั้งค่านี้
ตรวจสอบว่ามีการเปิดใช้งานการลบเรกคอร์ดที่อยู่หรือไม่
ฟังก์ชันตัวอย่างเหล่านี้แสดงวิธีการตรวจหาว่าเปิดใช้งาน การลบระเบียนที่อยู่ การตั้งค่าเปิดใช้งานในสภาพแวดล้อมหรือไม่
ฟังก์ชัน PowerShell นี้Test-IsDeleteAddressRecordsEnabledใช้คําสั่ง Microsoft Power Platform CLIpac env list-settings เพื่อตรวจสอบEnableDeleteAddressRecordsค่าในOrganization.OrgDbOrgSettingsคอลัมน์
function Test-IsDeleteAddressRecordsEnabled {
$orgdborgsettings = pac env list-settings `
--filter orgdborgsettings `
| Where-Object { $_ -match '^orgdborgsettings\s+' } `
| ForEach-Object { $_ -replace '^orgdborgsettings\s+', '' }
$xml = [xml]$orgdborgsettings
$element = $xml.SelectSingleNode("//EnableDeleteAddressRecords")
# Return true only when the element exists and has the value of 'true'
return ($null -ne $element) -and ($element.InnerText -eq 'true')
}
การลบจํานวนมากของระเบียนที่อยู่ลูกค้าที่ว่างเปล่า
หลังจากที่คุณปิดใช้งานการสร้างเรกคอร์ดที่อยู่ที่ว่างเปล่าและเปิดใช้งานการลบเรกคอร์ดที่อยู่ ให้ใช้ฟังก์ชันตัวอย่างต่อไปนี้เพื่อลบเรกคอร์ดว่าง customeraddress แบบอะซิงโครนัสโดยใช้ BulkDelete ข้อความ
ตัวอย่างรหัสการลบจํานวนมาก
ฟังก์ชันเหล่านี้จะขึ้นอยู่กับ คอลัมน์/แอตทริบิวต์ของที่อยู่ (CustomerAddress) และไม่รวมคอลัมน์แบบกําหนดเองใดๆ ที่อาจอยู่ในสภาพแวดล้อมของคุณ คุณอาจต้องการเปลี่ยนคิวรีเหล่านี้ถ้าคุณต้องการรวมคอลัมน์แบบกําหนดเองของคุณ
ฟังก์ชัน Start-BulkDeleteEmptyCustomerAddressRecords PowerShell สร้างงานระบบเพื่อลบเรกคอร์ดที่ว่างเปล่าcustomeraddressโดยใช้คําสั่ง Microsoft Power Platform CLIpac data bulk-delete schedule
ฟังก์ชันนี้ขึ้นอยู่กับตัวอย่าง Test-IsDeleteAddressRecordsEnabled และ Test-IsEmptyAddressRecordCreationDisabled ฟังก์ชันที่อธิบายไว้ใน ตรวจหาว่ามีการเปิดใช้งานการลบเรกคอร์ดที่อยู่ หรือไม่ และ ตรวจสอบว่าการสร้างเรกคอร์ดที่อยู่ว่างเปล่าถูกปิดใช้งานหรือไม่ ตามลําดับ ฟังก์ชันจะสร้างงานเฉพาะเมื่อการตั้งค่าทั้งสองอนุญาตให้มีการลบเรกคอร์ดที่อยู่ลูกค้าที่ว่างเปล่าทั้งหมดและป้องกันไม่ให้มีการสร้างเรกคอร์ดที่ว่างเปล่าใหม่
function Start-BulkDeleteEmptyCustomerAddressRecords {
if (!(Test-IsDeleteAddressRecordsEnabled)) {
Write-Host 'Enable deletion of address records before running this function.'
return
}
if (!(Test-IsEmptyAddressRecordCreationDisabled)) {
Write-Host 'Disable empty address record creation before running this function.'
return
}
$fetchXml = @(
'<fetch>'
"<entity name='customeraddress'>"
"<attribute name='customeraddressid' />"
"<filter type='and'>"
"<condition attribute='city' operator='null' />"
"<condition attribute='country' operator='null' />"
"<condition attribute='county' operator='null' />"
"<condition attribute='fax' operator='null' />"
"<condition attribute='freighttermscode' operator='null' />"
"<condition attribute='latitude' operator='null' />"
"<condition attribute='line1' operator='null' />"
"<condition attribute='line2' operator='null' />"
"<condition attribute='line3' operator='null' />"
"<condition attribute='longitude' operator='null' />"
"<condition attribute='postalcode' operator='null' />"
"<condition attribute='postofficebox' operator='null' />"
"<condition attribute='primarycontactname' operator='null' />"
"<condition attribute='shippingmethodcode' operator='null' />"
"<condition attribute='stateorprovince' operator='null' />"
"<condition attribute='telephone1' operator='null' />"
"<condition attribute='telephone2' operator='null' />"
"<condition attribute='telephone3' operator='null' />"
"<condition attribute='upszone' operator='null' />"
"<condition attribute='utcoffset' operator='null' />"
'</filter>'
'</entity>'
'</fetch>'
) -join ''
pac data bulk-delete schedule `
--entity customeraddress `
--fetchxml $fetchXml `
--job-name 'Delete Empty Customer Address Records'
}