Deli putem


Kreirajte atribute automatskog broja

Pomoću izdanja Dinamics KSNUMKS Customer Engagement (on-premises) verzije KSNUMKS, možete dodati atribut automatskog broja za bilo koji entitet. Trenutno, možete dodati atribut programski. Ne postoji korisnički interfejs za dodavanje ove vrste atributa. Ovaj članak objašnjava kako možete programski kreirati atribut auto-numera i podesiti vrednost semena za sekvencijalne elemente. Pored toga, ovaj članak pokazuje kako da podesite broj sekvence za sledeći zapis ako je potrebno da resetujete seme u bilo kom trenutku kasnije.

Belešku

Podešavanje semena nije obavezno. Nema potrebe da se zove seme ako ne treba da ponovo seje.

Možete kreirati atribut auto-numera na isti način na koji kreirate string atribut koristeći klasu StringAttributeMetadata osim što koristite novu AutoNumberFormat osobinu. Koristite osobinu AutoNumberFormat da definišete obrazac koji uključuje sekvencijalne brojeve i slučajne nizove sastavljanjem držača, koji ukazuju na dužinu i tip vrednosti koje se generišu. Slučajni nizovi vam pomažu da izbegnete duplikate ili sudare, posebno kada offline klijenti pokušavaju da kreiraju auto-brojeve.

Kada kreirate atribut automatskog broja, vrednosti osobine StringAttributeMetadata.FormatName ili vrednosti osobina StringAttributeMetadata.Format moraju biti Text. Pošto su ovo podrazumevane vrednosti, obično nećete podesiti ovu osobinu. Ne možete da kreirate atribut automatskog numera koji koristi bilo koju drugu posebnu vrstu formata kao što su E-pošta, Telefon, TektArea, URL ili bilo koji drugi postojeći format.

Autonumber sekvenciranje upravlja SKL i osigurano je da bude jedinstveno.

Belešku

Autonumerisane vrednosti su unapred izabrane od strane baze podataka kada je zapis pokrenut. Ako je zapis pokrenut, ali otkazan, broj koji mu je dodeljen se ne koristi. Ako se za to vreme završi još jedan zapis sa sledećim uzastopnim brojem, praznine će biti prisutne u automatskom numerisanju zapisa.

Belešku

Možete izmeniti postojeći atribut teksta formata da bude format automatskog broja.

U nasleđenom veb klijentu, prilikom dodavanja kontrole na obrascu vezanom za atribut automatskog broja, kontrola je automatski onemogućena i ponaša se kao samo za čitanje u obliku u kojem krajnji korisnici ne mogu da uređuju kontrolu. U Unified Interface, kontrole vezane za atribut auto-numera moraju eksplicitno biti podešene kao onemogućene. Ako ne podesite početnu vrednost atributa na obrascu, vrednost se postavlja tek nakon što sačuvate entitet. Automatsko numerisanje se može primeniti na atribute vrednosti polja u prikazima, rešetkama i tako dalje.

Primeri

Sledeći primeri pokazuju kako kreirati novi atribut automatskog numera pod nazivom new_SerialNumber za prilagođeni entitet pod nazivom new_Widget, koji će imati vrednost koja izgleda ovako: VID-00001-AB7LSFG-20170913070240. Korišćenje usluge organizacije sa SDK sklopovima CreateAttributeRequest i StringAttributeMetadata klase:

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);

Korišćenje veb API-ja

Možete kreirati i ažurirati definicije entiteta koristeći Veb API.

Više informacija: Kreirajte i ažurirajte definicije entiteta koristeći atribute kreiranja Veb API-ja>.

Zahtev

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
}

Odgovor

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 opcije

Ovi primeri pokazuju kako možete konfigurisati osobinu AutoNumberFormat da biste dobili različite rezultate:

Vrednost AutoNumberFormat Primer vrednosti
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

Slučajni string zamena su opcioni. Možete uključiti više od jednog slučajnog niza zamena. Koristite bilo koju od vrednosti formata za datetime placeholders iz standardnih nizova formata datuma i vremena.

Dužina niza

Tabela prikazuje vrednost dužine niza za slučajne i sekvencijalne rezervne mesta.

Čuvar mesta Dužina niza Izlazni scenario
{RANDSTRING:MIN_LENGTH} Vrednost MIN_LENGTH je između 1 i 6. Kada sačuvate entitet, atribut automatskog broja generiše slučajni niz sa definisanom dužinom ako je vrednost između 1 i 6. Ako koristite MIN_LENGTH vrednost kao 7 ili iznad 7, videćete grešku neispravnog argumenta.
{SEQNUM:MIN_LENGTH} Minimalna vrednost MIN_LENGTH je 1. Broj nastavlja da se povećava iznad minimalne dužine. Kada sačuvate entitet, atribut automatskog broja radi dobro i nastavlja da radi dobro za veće vrednosti MIN_LENGTH.

Za sekvencijalne rezervne mesta, MIN_LENGTH je minimalna dužina. Ako podesite vrednost da bude 2, početna vrednost će biti 01, a vrednost 100. entiteta će biti 100. Broj će nastaviti da se povećava iznad minimalne dužine. Vrednost u podešavanju dužine za sekvencijalne vrednosti je da se uspostavi konzistentna dužina za autogenerisanu vrednost dodavanjem dodatnih 0s na početnu vrednost. To neće ograničiti apsolutnu vrednost. Slučajna vrednost zamena će uvek biti iste dužine.

Zato što sekvencijalne vrednosti mogu biti veće od minimalne dužine dodeljene za njih, ne treba da podesite StringAttributeMetadata.MaxLength osobinu da odgovara dužini vaše formatirane vrednosti. Malo je vrednosti u tome i to bi moglo da izazove grešku u budućnosti ako vrednost premaši vrednost MakLength . Uverite se da ostavite dovoljno prostora za realan raspon sekvencijalnih vrednosti.

Belešku

Ne postoji validacija vrednosti držača mesta kada kreirate atribut. Greška se pojavljuje samo kada pokušate da sačuvate instancu entiteta koja koristi pogrešno konfigurisanu vrednost AutoNumberFormat . Na primer, ako odredite dužinu slučajnog stringa više od 6, prva osoba koja kreira novu instancu entiteta dobija grešku Neispravnog argumenta kada prvi put pokuša da sačuva entitet koji sadrži novi atribut automatskog broja.

Ažurirajte atribute automatskog numeriranja

Ako kreirate atribut automatskog numerisanja sa netačnom konfiguracijom ili želite da izmenite postojeći atribut automatskog numeriranja, možete uskladiti atribut AutoNumberFormat vrednost.

Sledeći isječak koda objašnjava da preuzimate, modifikujete i ažurirate atribut automatskog broja.

Da biste izmenili postojeći atribut automatskog broja, morate da preuzmete atribut koristeći klasu 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);

Nakon preuzimanja atributa auto-number, potrebno je da izmenite i ažurirate atribut.

//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);

Podesite vrednost semena

Podrazumevano, sve sekvencijalne vrednosti sa automatskim brojevima počinju sa 1000 i koriste 0 kao prefiks u zavisnosti od dužine. Na ovaj način, dužina vrednosti je uvek ista. Ako želite da promenite početnu vrednost, potrebno je da promenite početnu vrednost semena koristeći API ispod da biste postavili sledeći broj koji se koristi za sekvencijalni segment.

Na primer, ako niste koristili vrednost semena, ili ako podesite vrednost semena na jednu cifru, vaš prvi broj će biti jednocifreni sa prefiksom nula dodatim da bi bio jednak dužini broja. Jednocifreno seme sa dužinom prikaza od 5 rezultiralo bi prikazivanjem "5" kao "00005". Korišćenje vrednosti semena vam omogućava da počnete sa većom početnom vrednošću, tako da ako podesite svoje seme kao "10000" vrednost 5 će se prikazati kao "10005".

Ako želite da izaberete drugu početnu vrednost nakon kreiranja atributa automatskog numerisanja, koristite SetAutoNumberSeed poruku. Koristite klasu SetAutoNumberSeedRequest kada koristite sklopove SDK i akciju SetAutoNumberSeed kada koristite Veb API.

AutoNumberSeed poruka ima sledeće parametre:

Ime Tip Opis
EntitetIme Niske Logičko ime entiteta koji sadrži atribut na koji želite da podesite seme.
AttributeName Niske Logičko ime atributa na koji želite da podesite seme.
Vrednost ceo broj Sledeća vrednost automatskog broja za atribut.

Belešku

Podešavanje semena samo menja trenutnu brojčanu vrednost za specificirani atribut u trenutnom okruženju. To ne podrazumeva zajedničku početnu vrednost atributa. Vrednost semena nije uključena u rešenje kada se instalira u različitim okruženjima. Da biste podesili početni broj nakon uvoza rešenja, koristite SetAutoNumberSeed poruku u ciljnom okruženju.

Primeri

Sledeći uzorci postavljaju seme na 10000 za atribut automatskog numera pod nazivom new_SerialNumber za prilagođeni entitet pod nazivom new_Widget.

Korišćenje usluge organizacije sa SDK sklopovima SetAutoNumberSeedRekuest klasa:

//Define the seed 
SetAutoNumberSeedRequest req = new SetAutoNumberSeedRequest();
req.EntityName = "newWidget";
req.AttributeName = "newSerialnumber";
req.Value = 10000;
_serviceProxy.Execute(req);

Korišćenje Veb API-ja SetAutoNumberSeed akcije.

Više informacija: Koristite akcije Veb API-ja > Nevezane akcije

Zahtev

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
} 

Odgovor

HTTP/1.1 204 No Content
OData-Version: 4.0

Alati zajednice

Automatski menadžer brojeva

Auto Number Manager za KsrmToolBok je alat vođen zajednicom za Dinamics KSNUMKS Customer Engagement (on-premises) koji pruža korisnički interfejs za postavljanje, ažuriranje i uklanjanje formata automatskog broja na novim ili postojećim atributima. Pogledajte članak Alati za programere za alate razvijene u zajednici i anm.xrmtoolbox.com za više informacija o Auto Number Manager-u.

Belešku

Alati zajednice nisu proizvod Microsoft Dinamics i ne proširuju podršku na alate zajednice. Ako imate pitanja koja se odnose na alat, molimo vas da kontaktirate izdavača. Više informacija: KsrmToolBok.

Takođe pogledajte

Metapodaci i modeli podataka
Prilagodite metapodatke atributa entiteta