Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Dynamics 365 Customer Engagement (on-premises) sürüm 9 sürümüyle, herhangi bir varlık için otomatik numara özniteliği ekleyebilirsiniz. Şu anda, özniteliği programlama yoluyla ekleyebilirsiniz. Bu tür bir öznitelik eklemek için kullanıcı arabirimi yoktur. Bu makalede, program aracılığıyla nasıl bir otomatik sayı özniteliği oluşturabileceğiniz ve sıralı öğeler için bir çekirdek değer ayarlayabileceğiniz açıklanmaktadır. Buna ek olarak, bu makalede, daha sonra herhangi bir zamanda çekirdeği sıfırlamanız gerekirse, bir sonraki kayıt için sıra numarasının nasıl ayarlanacağı gösterilmektedir.
Uyarı
Tohumun ayarlanması isteğe bağlıdır. Yeniden tohumlamanız gerekmiyorsa tohumu çağırmanıza gerek yoktur.
Yeni AutoNumberFormat özelliğini kullanmanız dışında, StringAttributeMetadata sınıfını kullanarak bir dize özniteliği oluşturduğunuz gibi bir otomatik sayı özniteliği oluşturabilirsiniz. Oluşturulan değerlerin uzunluğunu ve türünü belirten yer tutucular oluşturarak sıralı sayılar ve rastgele dizeler içeren bir desen tanımlamak için AutoNumberFormat özelliğini kullanın. Rastgele dizeler, özellikle çevrimdışı istemciler otomatik numaralar oluşturmaya çalışırken yinelemeleri veya çakışmaları önlemenize yardımcı olur.
Otomatik sayı özniteliği oluştururken, StringAttributeMetadata.FormatName özelliği veya StringAttributeMetadata.Format özellik değerleri Text olmalıdır. Bunlar varsayılan değerler olduğundan, genellikle bu özelliği ayarlamazsınız. E-posta, Telefon, TextArea, Url veya mevcut diğer biçimler gibi başka herhangi bir özel biçim kullanan bir otomatik numara özelliği oluşturamazsınız.
Otomatik sayı sıralaması SQL tarafından yönetilir ve benzersiz olması sağlanır.
Uyarı
Otomatik sayı değerleri, kayıt başlatıldığında veritabanı tarafından önceden seçilir. Bir kayıt başlatılır ancak iptal edilirse, atandığı numara kullanılmaz. Bu süre zarfında, bir sonraki sıralı numara ile başka bir kayıt tamamlanırsa, kayıtların otomatik numaralandırılmasında boşluklar olacaktır.
Uyarı
Varolan bir biçim metin özniteliğini otomatik sayı biçimi olacak şekilde değiştirebilirsiniz.
Eski web istemcisinde, otomatik sayı özniteliğine bağlı bir forma denetim eklerken, denetim otomatik olarak devre dışı bırakılır ve son kullanıcıların denetimi düzenleyemediği formda salt okunur olarak davranır. Birleşik Arabirim'de, otomatik numara özniteliğine bağlı denetimlerin açıkça devre dışı olarak ayarlanması gerekir. Formda ilk öznitelik değerini ayarlamazsanız, değer yalnızca varlığı kaydettikten sonra ayarlanır. Otomatik numaralandırma, görünümlerdeki, ızgaralardaki vb. öznitelik alanı değerlerine uygulanabilir.
Örnekler
Aşağıdaki örneklerde, new_Widget adlı özel bir varlık için new_SerialNumber adlı yeni bir otomatik sayı özniteliğinin nasıl oluşturulacağı gösterilmektedir ve bu özellik şuna benzer bir değere sahip olacaktır: WID-00001-AB7LSFG-20170913070240. Kuruluş hizmetini SDK derlemeleri CreateAttributeRequest ve StringAttributeMetadata sınıflarıyla kullanma:
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'si kullanma
Web API'sini kullanarak varlık tanımları oluşturabilir ve güncelleştirebilirsiniz.
Daha fazla bilgi: >
İstek
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
}
Yanıt
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 seçenekleri
Bu örneklerde, farklı sonuçlar elde etmek için AutoNumberFormat özelliğini nasıl yapılandırabileceğiniz gösterilmektedir:
| AutoNumberFormat değeri | Örnek değer |
|---|---|
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 |
Rastgele dize yer tutucuları isteğe bağlıdır. Birden fazla rasgele dize yer tutucusu ekleyebilirsiniz. Standart Tarih ve Saat Biçim Dizeleri'ndeki datetime yer tutucuları için biçim değerlerinden herhangi birini kullanın.
Dize uzunluğu
Tablo, rasgele ve sıralı yer tutucular için dize uzunluğu değerini gösterir.
| Yer tutucu | Dize Uzunluğu | Çıktı Senaryosu |
|---|---|---|
{RANDSTRING:MIN_LENGTH} |
MIN_LENGTH değeri 1 ile 6 arasındadır. | Varlığı kaydettiğinizde, otomatik sayı özniteliği, değer 1 ile 6 arasındaysa, tanımlanan uzunlukta rastgele dizeyi oluşturur. MIN_LENGTH değeri 7 veya 7'nin ötesinde kullanırsanız, Geçersiz Argüman hatası görürsünüz. |
{SEQNUM:MIN_LENGTH} |
MIN_LENGTH minimum değeri 1'dir. Sayı, minimum uzunluğun ötesine geçmeye devam eder. | Varlığı kaydettiğinizde, otomatik sayı özniteliği düzgün çalışır ve daha büyük MIN_LENGTH değerleri için düzgün çalışmaya devam eder. |
Sıralı değer yer tutucuları için, MIN_LENGTH minimum uzunluktur. Değeri 2 olarak ayarlarsanız, başlangıç değeri 01 olur ve 100. varlık değeri 100 olur. Sayı, minimum uzunluğun ötesine geçmeye devam edecektir. Sıralı değerler için uzunluk ayarlamadaki değer, başlangıç değerine ek 0'lar ekleyerek otomatik olarak oluşturulan değer için tutarlı bir uzunluk oluşturmaktır. Mutlak değeri sınırlamaz. Rastgele değer yer tutucuları her zaman aynı uzunlukta olacaktır.
Sıralı değerler kendileri için ayrılan en düşük uzunluktan daha büyük olabileceğinden, StringAttributeMetadata.MaxLength özelliğini biçimlendirilmiş değerinizin uzunluğuyla eşleşecek şekilde ayarlamamanız gerekir. Bunu yapmanın çok az değeri vardır ve değer MaxLength değerini aşarsa gelecekte bir hataya neden olabilir. Gerçekçi bir ardışık değer aralığı için yeterli alan bıraktığınızdan emin olun.
Uyarı
Özniteliği oluşturduğunuzda yer tutucu değerlerinin doğrulanması yoktur. Hata yalnızca yanlış yapılandırılmış bir AutoNumberFormat değeri kullanan bir varlık örneğini kaydetmeye çalıştığınızda görünür. Örneğin, rastgele dizenin uzunluğunu 6'dan fazla belirtirseniz, yeni bir varlık örneği oluşturan ilk kişi, yeni otomatik sayı özniteliğini içeren varlığı ilk kez kaydetmeye çalıştığında Geçersiz Bağımsız Değişken hatası alır.
Otomatik numara özelliklerini güncelleme
Yanlış bir yapılandırmaya sahip bir otomatik sayı özniteliği oluşturursanız veya mevcut bir otomatik sayı özniteliğini değiştirmek isterseniz, özniteliği AutoNumberFormat değeri olarak güncelleyebilirsiniz.
Aşağıdaki kod parçacığı, otomatik numara özniteliğini almanızı, değiştirmenizi ve güncellemenizi açıklar.
Varolan bir otomatik numara özniteliğini değiştirmek için, RetrieveAttributeRequest sınıfını kullanarak özniteliği almanız gerekir.
// 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);
Otomatik numara özelliğini aldıktan sonra, özelliği değiştirmeniz ve güncellemeniz gerekir.
//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);
Başlangıç değeri ayarlayın
Varsayılan olarak, tüm otomatik sayı sıralı değerleri 1000 ile başlar ve uzunluğa bağlı olarak önek olarak 0'ı kullanır. Bu şekilde, değerin uzunluğu her zaman aynıdır. Başlangıç değerini değiştirmek istiyorsanız, sıralı segment için kullanılan bir sonraki sayıyı ayarlamak için aşağıdaki API'yi kullanarak ilk çekirdek değerini değiştirmeniz gerekir.
Örneğin, bir çekirdek değeri kullanmadıysanız veya çekirdek değerini tek bir basamağa ayarlarsanız, ilk numaranız, sayı uzunluğuna eşit olacak şekilde sıfırlardan oluşan bir önek eklenmiş tek bir basamak olacaktır. Görüntüleme uzunluğu 5 olan tek basamaklı bir tohum, "5"in "00005" olarak görüntülenmesine neden olur. Bir çekirdek değeri kullanmak, daha büyük bir başlangıç değeriyle başlamanıza olanak tanır, bu nedenle tohumunuzu "10000" olarak ayarlarsanız, 5 değeri "10005" olarak gösterilir.
Otomatik numaralandırma özniteliğini oluşturduktan sonra farklı bir başlangıç değeri seçmek isterseniz, SetAutoNumberSeed iletisini kullanın. SDK derlemelerini kullanırken SetAutoNumberSeedRequest sınıfını ve Web API'sini kullanırken SetAutoNumberSeed eylemini kullanın.
AutoNumberSeed iletisi aşağıdaki parametrelere sahiptir:
| İsim | Türü | Açıklama |
|---|---|---|
| VarlıkAdı | Dize | Çekirdeği ayarlamak istediğiniz özniteliği içeren varlığın mantıksal adı. |
| Öznitelik Adı | Dize | Çekirdeği ayarlamak istediğiniz özniteliğin mantıksal adı. |
| Değer | int | Özellik için bir sonraki otomatik sayı değeri. |
Uyarı
Çekirdeğin ayarlanması yalnızca geçerli ortamda belirtilen öznitelik için geçerli sayı değerini değiştirir. Bu, öznitelik için ortak bir başlangıç değeri anlamına gelmez. Farklı bir ortama kurulduğunda çözümde başlangıç değeri yer almaz. Çözüm içeri aktarma işleminden sonra başlangıç numarasını ayarlamak için hedef ortamda SetAutoNumberSeed iletisini kullanın.
Örnekler
Aşağıdaki örnekler, new_Widget adlı özel bir varlık için new_SerialNumber adlı bir otomatik sayı özniteliği için çekirdeği 10000 olarak ayarlar.
Organizasyon hizmetini SDK derlemeleri SetAutoNumberSeedRequest sınıfıyla kullanma:
//Define the seed
SetAutoNumberSeedRequest req = new SetAutoNumberSeedRequest();
req.EntityName = "newWidget";
req.AttributeName = "newSerialnumber";
req.Value = 10000;
_serviceProxy.Execute(req);
Web API SetAutoNumberSeed Eylemini kullanma.
Daha fazla bilgi: Web API eylemleri kullanma > Bağımsız eylemler
İstek
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
}
Yanıt
HTTP/1.1 204 No Content
OData-Version: 4.0
Topluluk araçları
Otomatik Numara Yöneticisi
XrmToolBox için Otomatik Numara Yöneticisi, Dynamics 365 Customer Engagement (on-premises) için yeni veya mevcut özniteliklerde otomatik numara biçimini ayarlamak, güncelleştirmek ve kaldırmak için bir kullanıcı arabirimi sağlayan, topluluk tarafından yönetilen bir araçtır. Otomatik Numara Yöneticisi hakkında daha fazla bilgi için topluluk tarafından geliştirilen araçlar ve anm.xrmtoolbox.com için Geliştirici araçları makalesine bakın.
Uyarı
Topluluk araçları bir Microsoft Dynamics ürünü değildir ve topluluk araçlarına desteği genişletmez. Araca ilişkin sorularınız varsa yayımcıyla iletişime geçin. Daha Fazla Bilgi: XrmToolBox.
Ayrıca Bkz.
Meta veriler ve veri modelleri
Varlık özniteliği meta verilerini özelleştirme