หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ด้วยรุ่น Dynamics 365 Customer Engagement (on-premises) รุ่น 9 คุณสามารถเพิ่มแอตทริบิวต์หมายเลขอัตโนมัติสําหรับเอนทิตีใดๆ ได้ ปัจจุบัน คุณสามารถเพิ่มแอตทริบิวต์โดยทางโปรแกรมได้ ไม่มีส่วนติดต่อผู้ใช้เพื่อเพิ่มแอตทริบิวต์ชนิดนี้ บทความนี้อธิบายวิธีที่คุณสามารถสร้างแอตทริบิวต์หมายเลขอัตโนมัติโดยทางโปรแกรม และตั้งค่าเมล็ดพันธุ์สําหรับองค์ประกอบตามลําดับ นอกจากนี้ บทความนี้แสดงวิธีการตั้งค่าหมายเลขลําดับสําหรับเรกคอร์ดถัดไปหากคุณต้องการรีเซ็ตเมล็ดพันธุ์เมื่อใดก็ได้ในภายหลัง
หมายเหตุ
การตั้งค่าเมล็ดพันธุ์เป็นทางเลือก ไม่จําเป็นต้องเรียกข้อมูลเริ่มต้น หากคุณไม่จําเป็นต้องใช้ข้อมูลเริ่มต้น
คุณสามารถสร้างแอตทริบิวต์หมายเลขอัตโนมัติในลักษณะเดียวกับที่คุณสร้างแอตทริบิวต์สตริงโดยใช้คลาส StringAttributeMetadata ยกเว้นว่าคุณใช้คุณสมบัติ AutoNumberFormat ใหม่ ใช้คุณสมบัติ AutoNumberFormat เพื่อกําหนดรูปแบบที่มีหมายเลขลําดับและสายอักขระแบบสุ่ม โดยการเขียนตัวยึด ซึ่งระบุความยาวและชนิดของค่าที่สร้างขึ้น สตริงแบบสุ่มช่วยให้คุณหลีกเลี่ยงการซ้ําซ้อนหรือการชนกัน โดยเฉพาะอย่างยิ่งเมื่อไคลเอ็นต์ออฟไลน์พยายามสร้างหมายเลขอัตโนมัติ
เมื่อสร้างแอตทริบิวต์หมายเลขอัตโนมัติ คุณสมบัติ StringAttributeMetadata.FormatName หรือค่าคุณสมบัติ StringAttributeMetadata.Format ต้องเป็น Text เนื่องจากเป็นค่าเริ่มต้น คุณจึงจะไม่ตั้งค่าคุณสมบัตินี้ คุณไม่สามารถสร้างแอตทริบิวต์หมายเลขอัตโนมัติที่ใช้รูปแบบพิเศษอื่นๆ เช่น อีเมล โทรศัพท์ พื้นที่ข้อความ URL หรือรูปแบบอื่นๆ ที่มีอยู่
การจัดลําดับหมายเลขอัตโนมัติได้รับการจัดการโดย SQL และมั่นใจได้ว่าไม่ซ้ํากัน
หมายเหตุ
ค่าการกําหนดหมายเลขอัตโนมัติจะถูกเลือกไว้ล่วงหน้าโดยฐานข้อมูลเมื่อระเบียนเริ่มต้นขึ้น ถ้าเรกคอร์ดเริ่มต้นแต่ถูกยกเลิก จะไม่ใช้หมายเลขที่กําหนด ถ้าในช่วงเวลานี้ เรกคอร์ดอื่นเสร็จสมบูรณ์ด้วยหมายเลขลําดับถัดไป ช่องว่างจะปรากฏในการกําหนดหมายเลขอัตโนมัติของเรกคอร์ด
หมายเหตุ
คุณสามารถปรับเปลี่ยนแอตทริบิวต์ข้อความรูปแบบที่มีอยู่ให้เป็นรูปแบบการกําหนดหมายเลขอัตโนมัติได้
ในเว็บไคลเอ็นต์ดั้งเดิม เมื่อเพิ่มตัวควบคุมบนฟอร์มที่ผูกไว้กับแอตทริบิวต์หมายเลขอัตโนมัติ ตัวควบคุมจะถูกปิดใช้งานโดยอัตโนมัติและทํางานเป็นแบบอ่านอย่างเดียวในฟอร์มที่ผู้ใช้ปลายทางไม่สามารถแก้ไขตัวควบคุมได้ ในส่วนติดต่อแบบรวม ตัวควบคุมที่ผูกไว้กับแอตทริบิวต์หมายเลขอัตโนมัติจําเป็นต้องตั้งค่าเป็นปิดใช้งานอย่างชัดเจน ถ้าคุณไม่ได้ตั้งค่าแอตทริบิวต์เริ่มต้นบนฟอร์ม ค่าจะถูกตั้งค่าหลังจากที่คุณบันทึกเอนทิตีแล้วเท่านั้น การกําหนดหมายเลขอัตโนมัติสามารถนําไปใช้กับค่าฟิลด์แอตทริบิวต์ในมุมมอง กริด และอื่นๆ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีการสร้างแอตทริบิวต์หมายเลขอัตโนมัติใหม่ที่ชื่อ new_SerialNumber สําหรับเอนทิตีแบบกําหนดเองที่ชื่อ new_Widget ซึ่งจะมีค่าที่มีลักษณะดังนี้: WID-00001-AB7LSFG-20170913070240 การใช้บริการองค์กรกับแอสเซมบลี SDK คลาส CreateAttributeRequest และ StringAttributeMetadata :
CreateAttributeRequest widgetSerialNumberAttributeRequest = new CreateAttributeRequest
{
EntityName = "newWidget",
Attribute = new StringAttributeMetadata
{
//Define the format of the attribute
AutoNumberFormat = "WID-{SEQNUM:5}-{RANDSTRING:6}-{DATETIMEUTC:yyyyMMddhhmmss}",
LogicalName = "new_serialnumber",
SchemaName = "new_SerialNumber",
RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
MaxLength = 100, // The MaxLength defined for the string attribute must be greater than the length of the AutoNumberFormat value, that is, it should be able to fit in the generated value.
DisplayName = new Label("Serial Number", 1033),
Description = new Label("Serial Number of the widget.", 1033)
}
};
_serviceProxy.Execute(widgetSerialNumberAttributeRequest);
ใช้ Web API
คุณสามารถสร้างและอัปเดตข้อกําหนดเอนทิตีได้โดยใช้ Web API
ข้อมูลเพิ่มเติม: สร้างและอัปเดตข้อกําหนดเอนทิตีโดยใช้แอตทริบิวต์ Web API > Create
ส่งคำขอ
POST [Organization URI]/api/data/v9.1/EntityDefinitions(LogicalName='new_widget')/Attributes HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"AttributeType": "String",
"AttributeTypeName": {
"Value": "StringType"
},
"Description": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Serial Number of the widget.",
"LanguageCode": 1033
}
]
},
"DisplayName": {
"@odata.type": "Microsoft.Dynamics.CRM.Label",
"LocalizedLabels": [
{
"@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
"Label": "Serial Number",
"LanguageCode": 1033
}
]
},
"RequiredLevel": {
"Value": "None",
"CanBeChanged": true,
"ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"
},
"SchemaName": "new_SerialNumber",
"AutoNumberFormat": "WID-{SEQNUM:5}-{RANDSTRING:6}-{DATETIMEUTC:yyyyMMddhhmmss}",
"@odata.type": "Microsoft.Dynamics.CRM.StringAttributeMetadata",
"FormatName": {
"Value": "Text"
},
"MaxLength": 100
}
การตอบสนอง
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.1/EntityDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)/Attributes(11bb11bb-cc22-dd33-ee44-55ff55ff55ff)
ตัวเลือก AutoNumberFormat
ตัวอย่างเหล่านี้แสดงวิธีที่คุณสามารถกําหนดค่าคุณสมบัติ AutoNumberFormat เพื่อให้ได้ผลลัพธ์ที่แตกต่างกัน:
| ค่า AutoNumberFormat | ค่าตัวอย่าง |
|---|---|
CAR-{SEQNUM:3}-{RANDSTRING:6} |
CAR-123-AB7LSF |
CNR-{RANDSTRING:4}-{SEQNUM:4} |
CNR-WXYZ-1000 |
{SEQNUM:6}-#-{RANDSTRING:3} |
123456-#-R3V |
KA-{SEQNUM:4} |
KA-0001 |
{SEQNUM:10} |
1234567890 |
QUO-{SEQNUM:3}#{RANDSTRING:3}#{RANDSTRING:5} |
QUO-123#ABC#PQ2ST |
QUO-{SEQNUM:7}{RANDSTRING:5} |
QUO-0001000P9G3R |
CAS-{SEQNUM:6}-{RANDSTRING:6}-{DATETIMEUTC:yyyyMMddhhmmss} |
CAS-002000-S1P0H0-20170913091544 |
CAS-{SEQNUM:6}-{DATETIMEUTC:yyyyMMddhh}-{RANDSTRING:6} |
CAS-002002-2017091309-HTZOUR |
CAS-{SEQNUM:6}-{DATETIMEUTC:yyyyMM}-{RANDSTRING:6}-{DATETIMEUTC:hhmmss} |
CAS-002000-201709-Z8M2Z6-110901 |
ตัวยึดสตริงแบบสุ่มเป็นตัวเลือก คุณสามารถใส่ตัวยึดสตริงแบบสุ่มได้มากกว่าหนึ่งรายการ ใช้ค่ารูปแบบใดๆ สําหรับตัวยึดวันที่ และ เวลา จาก สตริง รูปแบบ วันที่และเวลา มาตรฐาน
ความยาวสตริง
ตารางแสดงค่าความยาวสตริงสําหรับตัวยึดตําแหน่งแบบสุ่มและตามลําดับ
| ตัวกำหนดตำแหน่ง | ความยาวสตริง | สถานการณ์เอาต์พุต |
|---|---|---|
{RANDSTRING:MIN_LENGTH} |
ค่าของ MIN_LENGTH อยู่ระหว่าง 1 ถึง 6 | เมื่อคุณบันทึกเอนทิตี แอตทริบิวต์หมายเลขอัตโนมัติจะสร้างสตริงแบบสุ่มที่มีความยาวที่กําหนดไว้หากค่าอยู่ระหว่าง 1 ถึง 6 หากคุณใช้ค่า MIN_LENGTH เป็น 7 หรือเกิน 7 คุณจะเห็นข้อผิดพลาดอาร์กิวเมนต์ไม่ถูกต้อง |
{SEQNUM:MIN_LENGTH} |
ค่าต่ําสุดของ MIN_LENGTH คือ 1 ตัวเลขยังคงเพิ่มขึ้นเกินความยาวขั้นต่ํา | เมื่อคุณบันทึกเอนทิตี แอตทริบิวต์หมายเลขอัตโนมัติจะทํางานได้ดีและยังคงทํางานได้ดีสําหรับค่า MIN_LENGTH ที่ใหญ่กว่า |
สําหรับตัวยึดค่าตามลําดับ MIN_LENGTH คือความยาวขั้นต่ํา ถ้าคุณตั้งค่าเป็น 2 ค่าเริ่มต้นจะเป็น 01 และค่าเอนทิตีที่ 100 จะเป็น 100 ตัวเลขจะเพิ่มขึ้นอย่างต่อเนื่องเกินความยาวขั้นต่ํา ค่าในการตั้งค่าความยาวสําหรับค่าตามลําดับคือการสร้างความยาวที่สอดคล้องกันสําหรับค่าที่สร้างขึ้นโดยอัตโนมัติโดยการเพิ่ม 0 เพิ่มเติมให้กับค่าเริ่มต้น จะไม่มีการจำกัดค่าสัมบูรณ์ ตัวยึดค่าแบบสุ่มจะมีความยาวเท่ากันเสมอ
เนื่องจากค่าตามลําดับอาจใหญ่กว่าความยาวขั้นต่ําที่จัดสรรไว้ คุณจึงไม่ควรปรับคุณสมบัติ StringAttributeMetadata.MaxLength ให้ตรงกับความยาวของค่าที่จัดรูปแบบ มีคุณค่าเพียงเล็กน้อยในการทําเช่นนี้ และอาจทําให้เกิดข้อผิดพลาดในอนาคตหากค่าเกินค่า MaxLength ตรวจสอบให้แน่ใจว่าคุณมีที่ว่างเพียงพอสําหรับช่วงค่าตามลําดับที่สมจริง
หมายเหตุ
ไม่มีการตรวจสอบความถูกต้องของค่าตัวยึดเมื่อคุณสร้างแอตทริบิวต์ ข้อผิดพลาดจะปรากฏขึ้นเฉพาะเมื่อคุณพยายามบันทึกอินสแตนซ์เอนทิตีที่ใช้ค่า AutoNumberFormat ที่กําหนดค่าไม่ถูกต้อง ตัวอย่างเช่น ถ้าคุณระบุความยาวของสตริงแบบสุ่มมากกว่า 6 บุคคลแรกที่สร้างอินสแตนซ์เอนทิตีใหม่จะได้รับข้อผิดพลาด อาร์กิวเมนต์ไม่ถูกต้องเมื่อ พวกเขาพยายามบันทึกเอนทิตีที่มีแอตทริบิวต์หมายเลขอัตโนมัติใหม่เป็นครั้งแรก
อัปเดตแอตทริบิวต์การกําหนดหมายเลขอัตโนมัติ
หากคุณสร้างแอตทริบิวต์หมายเลขอัตโนมัติที่มีการกําหนดค่าไม่ถูกต้อง หรือต้องการแก้ไขแอตทริบิวต์หมายเลขอัตโนมัติที่มีอยู่ คุณสามารถอัปเดตแอตทริบิวต์ค่า AutoNumberFormat ได้
ข้อมูลโค้ดต่อไปนี้จะอธิบายให้คุณดึงข้อมูล แก้ไข และอัปเดตแอตทริบิวต์หมายเลขอัตโนมัติ
เมื่อต้องการแก้ไขแอตทริบิวต์หมายเลขอัตโนมัติที่มีอยู่ คุณต้องดึงแอตทริบิวต์โดยใช้คลาส RetrieveAttributeRequest
// Create the retrieve request
RetrieveAttributeRequest attributeRequest = new RetrieveAttributeRequest
{
EntityLogicalName = entityName.ToLower(),
LogicalName = "new_serialnumber",
RetrieveAsIfPublished = true
};
// Retrieve attribute response
RetrieveAttributeResponse attributeResponse = (RetrieveAttributeResponse)_serviceProxy.Execute(attributeRequest);
หลังจากดึงแอตทริบิวต์หมายเลขอัตโนมัติแล้ว คุณจําเป็นต้องแก้ไขและอัปเดตแอตทริบิวต์
//Modify the retrieved auto-number attribute
AttributeMetadata retrievedAttributeMetadata = attributeResponse.AttributeMetadata;
retrievedAttributeMetadata.AutoNumberFormat = "CAR-{RANDSTRING:5}{SEQNUM:6}"; //Modify the existing attribute by writing the format as per your requirement
// Update the auto-number attribute
UpdateAttributeRequest updateRequest = new UpdateAttributeRequest
{
Attribute = retrievedAttributeMetadata,
EntityName = "newWidget",
};
// Execute the request
_serviceProxy.Execute(updateRequest);
ตั้งค่าเมล็ดพันธุ์
ตามค่าเริ่มต้น ค่าลําดับหมายเลขอัตโนมัติทั้งหมดจะเริ่มต้นด้วย 1000 และใช้ 0 เป็นคํานําหน้าขึ้นอยู่กับความยาว ด้วยวิธีนี้ความยาวของค่าจะเท่ากันเสมอ หากคุณต้องการเปลี่ยนค่าเริ่มต้น คุณต้องเปลี่ยนค่าเมล็ดเริ่มต้นโดยใช้ API ด้านล่างเพื่อตั้งค่าหมายเลขถัดไปที่ใช้สําหรับกลุ่มตามลําดับ
ตัวอย่างเช่น ถ้าคุณไม่ได้ใช้ค่าเมล็ดพันธุ์ หรือถ้าคุณตั้งค่าเมล็ดพันธุ์เป็นตัวเลขเดียว ตัวเลขแรกของคุณจะเป็นตัวเลขหลักเดียวที่มีการเพิ่มคํานําหน้าเป็นศูนย์ให้เท่ากับความยาวของตัวเลข ค่าตัวเลขหลักเดียวที่เมื่อแสดงผลจะมีความยาว 5 หลัก จะทำให้ตัวเลข "5" แสดงเป็น "00005" การใช้ค่าเมล็ดพันธุ์ช่วยให้คุณเริ่มต้นด้วยค่าเริ่มต้นที่ใหญ่ขึ้น ดังนั้นหากคุณตั้งค่าเมล็ดพันธุ์เป็น "10000" ค่า 5 จะแสดงเป็น "10005"
ถ้าคุณต้องการเลือกค่าเริ่มต้นอื่นหลังจากสร้างแอตทริบิวต์การกําหนดหมายเลขอัตโนมัติ ให้ใช้ข้อความ SetAutoNumberSeed ใช้คลาส SetAutoNumberSeedRequest เมื่อใช้แอสเซมบลี SDK และการดําเนินการ SetAutoNumberSeed เมื่อใช้ Web API
ข้อความ AutoNumberSeed มีพารามิเตอร์ต่อไปนี้:
| ชื่อ | ชนิด | คำอธิบาย: |
|---|---|---|
| ชื่อเอนทิตี | สตริง | ชื่อตรรกะของเอนทิตีที่มีแอตทริบิวต์ที่คุณต้องการตั้งค่าเมล็ดพันธุ์ |
| ชื่อแอตทริบิวต์ | สตริง | ชื่อตรรกะของแอตทริบิวต์ที่คุณต้องการตั้งค่าตัวเลือก |
| ค่า | int | ค่าหมายเลขอัตโนมัติถัดไปสําหรับแอตทริบิวต์ |
หมายเหตุ
การตั้งค่าเมล็ดพันธุ์จะเปลี่ยน ค่าตัวเลขปัจจุบัน สําหรับแอตทริบิวต์ที่ระบุในสภาพแวดล้อมปัจจุบันเท่านั้น ไม่ได้หมายความถึง ค่าเริ่มต้น ทั่วไปสําหรับแอตทริบิวต์ ค่าเมล็ดพันธุ์ไม่รวมอยู่ในโซลูชันเมื่อติดตั้งในสภาพแวดล้อมที่แตกต่างกัน เมื่อต้องการตั้งค่าหมายเลขเริ่มต้นหลังจากการนําเข้าโซลูชัน ให้ใช้ข้อความ SetAutoNumberSeed ในสภาพแวดล้อมเป้าหมาย
ตัวอย่าง
ตัวอย่างต่อไปนี้ตั้งค่าเมล็ดพันธุ์เป็น 10000 สําหรับแอตทริบิวต์หมายเลขอัตโนมัติที่ชื่อ new_SerialNumber สําหรับเอนทิตีแบบกําหนดเองที่ชื่อ new_Widget
การใช้บริการองค์กรร่วมกับแอสเซมบลีของ SDK คลาส SetAutoNumberSeedRequest:
//Define the seed
SetAutoNumberSeedRequest req = new SetAutoNumberSeedRequest();
req.EntityName = "newWidget";
req.AttributeName = "newSerialnumber";
req.Value = 10000;
_serviceProxy.Execute(req);
การใช้ Action ของ Web API SetAutoNumberSeed
ข้อมูลเพิ่มเติม: ใช้การดำเนินการ Web API > การดำเนินการที่ไม่ถูกผูกมัด
ส่งคำขอ
POST [Organization URI]/api/data/v9.1/SetAutoNumberSeed HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"EntityName": "new_Widget",
"AttributeName": "new_Serialnumber",
"Value": 10000
}
การตอบสนอง
HTTP/1.1 204 No Content
OData-Version: 4.0
เครื่องมือของชุมชน
ตัวจัดการหมายเลขอัตโนมัติ
ตัวจัดการหมายเลขอัตโนมัติ สําหรับ XrmToolBox เป็นเครื่องมือที่ขับเคลื่อนด้วยชุมชนสําหรับ Dynamics 365 Customer Engagement (on-premises) ที่มี UI เพื่อตั้งค่า อัปเดต และลบรูปแบบหมายเลขอัตโนมัติในแอตทริบิวต์ใหม่หรือที่มีอยู่ ดูบทความ เครื่องมือสําหรับนักพัฒนาสําหรับ เครื่องมือที่พัฒนาโดยชุมชนและ anm.xrmtoolbox.com สําหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวจัดการหมายเลขอัตโนมัติ
หมายเหตุ
เครื่องมือของชุมชนไม่ใช่ผลิตภัณฑ์ของ Microsoft Dynamics และไม่ขยายการสนับสนุนไปยังเครื่องมือของชุมชน ถ้าคุณมีคำถามที่เกี่ยวข้องกับเครื่องมือ โปรดติดต่อผู้เผยแพร่ ข้อมูลเพิ่มเติม: XrmToolBox
ดูเพิ่มเติม
ข้อมูลเมตาและโมเดลข้อมูล
ปรับแต่งข้อมูลเมตาของแอตทริบิวต์เอนทิตี