Meny
Är gratis
registrering
Hem  /  Utbildning/ Det fördefinierade elementet saknas i data 1c 8.3. Ställa in fördefinierade objekt

Den fördefinierade posten saknas i data 1c 8.3. Ställa in fördefinierade objekt

God dag.

Idag ska vi prata om en innovation i 8.3-plattformen när det gäller fördefinierade element.

Introduktion

Låt mig påminna dig om att jag tidigare, i praktiken, väldigt ofta ville titta på ett katalogelement för att ta reda på dess fördefinierade namn. Du har till exempel skapat två fördefinierade entreprenörer och kallat dem IPSidorov och OOOMeteor. Och de sydde någon form av logik på dem.

När allt var felsökt och fungerade visade det sig att uppgiften ställdes åt andra hållet och logiken för enmansinnehavaren behövs för LLC, och logiken för LLC är för ensamföretagaren. "Inga problem", säger vi, och i företagsläge byter vi namn på objekten. Det är mycket svårare att komma in i koden. Ett år går och du får en ny uppgift: att ställa in lite mer logik för IP Sidorov. Du går in i konfiguratorn, skriver logiken, börjar kolla och ingenting fungerar, eftersom i IPSidorov-konfiguratorn och i företaget - Meteor LLC. Hjärnan är trasig och jag vill förstöra den här raken. Det enklaste och mest intuitiva är att mata ut namnet på ett fördefinierat element i form av en lista. Här är ett bakhåll, du kan få namnet på den fördefinierade i 8.2 endast genom metoden. Och metoden har sina egna besvär, den kan inte erhållas i begäran. De där. det första besväret är att få namnet på den fördefinierade genom hänvisning till katalogen.

Den andra olägenheten är när vi redan har ett katalogelement och vi behöver göra det fördefinierat. Vi skapar ett fördefinierat objekt och får två objekt i katalogen. En fördefinierad, en annan fungerar, vilket hänvisas till i alla våra dokument. Att ersätta länkar hjälper verkligen, men om databasen är stor är det svårt.

Nu på affärer

Den första är att referensboken nu har egenskapen "Uppdatera fördefinierade data".

Vad ger detta fält oss? Om den är inställd på "Uppdatera inte automatiskt" så kommer vi inte att se det i referensen omedelbart genom att lägga till ett fördefinierat element. De där. metadata har inget med data att göra. Och om det inte skapas i katalogen kommer ett syntaxfel att uppstå om du hänvisar till det med dess namn via kataloghanteraren.

Mycket intressant, men varför? Hur skapar vi en artikel i referensen? Och som du vill kan du skapa, eller så kan du länka den till en befintlig. Nu har uppslagningen attributet "PredefinedDataName". Vi skapar en katalogartikel programmatiskt som vanligt genom "References.Contractors.CreateElement ()" och fyller dess "PredefinedDataName"-attribut lika med namnet på den fördefinierade artikeln. Eller, om elementet redan finns, hämtar vi dess objekt och fyller återigen i "PredefinedDataName" i det. Allt.

Och sist lite sirap

Denna nya rekvisita är inte bara läs/skriv, utan även tillgänglig i förfrågningar. Således kan du ställa villkor på den i frågor, avgöra om den är fördefinierad eller inte.

Tack för uppmärksamheten.

Själva idén att programmatiskt arbeta med fördefinierade element, enligt min mening, är mycket korrekt. Det finns bara några nyanser som måste beaktas när du arbetar.

Först måste du själv klart förstå att det finns fördefinierade element i konfigurationen och det finns fördefinierade element i infobasen (IB). Tekniskt fördefinierade informationssäkerhetselement är de vanligaste elementen i ordböcker, där attributet "PredefinedDataName" anger vilket fördefinierat konfigurationselement de motsvarar. De skiljer sig inte längre från vanliga element. Följaktligen kan vilket ordinärt IB-element som helst göras fördefinierat, vilket som helst fördefinierat ordinärt. För att göra detta räcker det att ange önskat värde i rekvisita. "Fördefinierat datanamn".

Periodvis visar sig den här egenskapen inte vara det värde som utvecklaren tillhandahållit. Som ett resultat uppstår fel i arbetet med 1C. Från kritiskt, där arbete i princip är omöjligt, till icke-kritiskt, där logiken i algoritmerna kränks.

Det kan villkorligt särskiljas tre typer av fel:
1. "Det fördefinierade objektet saknas i data";

3. Ogiltig indikation fördefinierat element;

1. "Ett fördefinierat objekt saknas i data" - o Frånvaron av ett fördefinierat element som beskrivs i konfigurationen i IB-data.

Detta är den enklaste typen av fel att felsöka och åtgärda. Dess enkelhet är att plattformen korrekt nog rapporterar om denna situation "Ett fördefinierat element saknas i data" och det är ganska tydligt hur man fixar det.

När du kommer åt det saknade elementet i koden "Directories.Types of ContactInformation.EmailContactPerson" visas meddelandet

När du kommer åt ett element i begäran "VALUE (Directory.Types of ContactInformation.EmailContactPerson)", visas följande meddelande:

Detta fel uppstår om ett element beskrivs i konfigurationen, men elementet inte är associerat med det i databasen.

Till att börja med, låt oss förtydliga att denna situation inte alltid är fel. Det är fullt möjligt att använda fördefinierade data i någon form av programlogik, som för de flesta användare kanske inte används. I det här fallet är det logiskt att definiera fördefinierade element i konfigurationen, för att inte röra upp referensboken för alla användare av konfigurationen, men inte skapa dem i alla informationssäkerhetssystem, utan endast för de informationssäkerhetssystem i som den nödvändiga konfigurationslogiken används. I det här fallet kan programmeraren specificera egenskapen "Uppdatera inte fördefinierade data" för referensboken och skapa element programmatiskt när du kommer åt modulens funktionalitet. Eller för att göra det möjligt för användaren att självständigt binda de fördefinierade elementen i modulen till de vanliga elementen han har.

Inte använd heller automatiskt skapande fördefinierade element när du arbetar i RIB-läge. Eftersom nya element ska överföras från den centrala basen och inte skapas i noder med olika UID.

De där. ibland är det ett misstag att hänvisa till ett omatchat föremål, snarare än själva närvaron av ett sådant föremål.

Du måste analysera varför objektet inte skapades. Kanske bör det skapas när något läge av programmet körs. Till exempel efter att ha utfört ett utbyte i RIB. Eller så har den bara raderats av misstag.

Om logiken ger möjlighet att fylla i fördefinierade element inte automatiskt, utan i ett separat läge, innan du använder anropet med namn " Kataloger.Typer av kontaktinformation.EmailContactPerson"För att förhindra ett undantag är det tillrådligt att kontrollera att elementet redan finns i databasen. Om elementet saknas, informera sedan användaren om det och förklara vilket läge han behöver köra för att fylla elementet. För en sådan kontroll, du kan köra en fråga på data.

Request = Ny begäran; Query.Text = "VÄLJ | Typer av kontaktinformation.Länk | FROM | Katalog. Typer av kontaktinformation AS Typer av kontaktinformation | VAR | Typer av kontaktinformation. PredefinedData Name =" " E -postadress till kontaktpersonen"" "; ElementNoNo.VD = Request.Run (). Tom ();

Om detta fortfarande är ett fel i databasdatan är det nödvändigt att binda till ett fördefinierat element i IB -elementet. De där. det är nödvändigt att förklara för systemet vilken del av informationssäkerheten som bör behandlas programkodförnamn... Tekniskt sett är bindning bara att specificera namnet på ett fördefinierat element i en egenskap "Fördefinierat DataName"IB-element. För att installera det, kör bara koden:

2. "Det fördefinierade elementet är inte unikt" - h advoi fördefinierade element:

Denna situation består i att flera IB-element är bundna till ett fördefinierat element. I det här fallet, när man hänvisar till ett fördefinierat namn, kommer elementet att väljas slumpmässigt. Denna situation är alltid fel. Dess svårighet är att plattformen inte kommunicerar om det på något sätt. Det är bara det att algoritmerna börjar fungera fel.

Ramverket kommer att rapportera felet "Fördefinierat objekt är inte unikt" endast när man försöker redigera ett duplicerat objekt.

Tills ingen behöver redigera elementet kommer ingen att veta om felet.

Sådana dubbletter kan till exempel skapas om RIB används för referensboken och läget "Uppdatera automatiskt" anges i egenskaperna för fördefinierade data. I det här fallet, när utbytet utförs, kommer en instans av fördefinierade data att skapas när konfigurationen uppdateras. En andra instans av fördefinierade objekt med samma namn kommer att överföras från den centrala databasen under utbytet.

Dessa dubbletter kommer också att uppstå vid användning av utbytesbehandling mellan konfigurationer i händelse av att olika informationssäkerhetselement motsvarar fördefinierade element i olika databaser. I det här fallet finns redan en kopia av fördefinierade data i databasen, den andra kommer när data laddas med ett annat UID. Om du utför dataöverföringar måste du bestämma vilka databaselement som anses vara primära och använda dem i den underordnade databasen. I den underordnade basen är det nödvändigt att ersätta användningen av gamla element med element från huvudbasen.

Sådana fel i databasen kan upptäckas av en fråga i formen:

VÄLJ Typer av kontaktinformation .PredefinedData Namn, ANTAL (OLIKA SLAG AV KONTAKTINFORMATION.Link) SOM Nummer Fördefinierad från katalogen.Types of Contact Information AS Types of Contact Information.

Denna fråga returnerar en lista med fördefinierade element med mer än ett IB-element associerat med det.

Om det finns sådana element är det nödvändigt att ta bort anslutningen med den fördefinierade för en av dem. De där. det är nödvändigt att entydigt bestämma för systemet vilket informationssäkerhetselement programkoden ska referera till när man använder detta namn. För att göra detta behöver du bara köra koden.

3. Ogiltig indikation på ett fördefinierat element.

Felet ligger i det faktum att det fördefinierade elementet motsvarar fel element, vilket tillhandahålls av programlogiken. Sådana fel är svårast att diagnostisera. Till skillnad från de två första typerna kan du inte automatiskt kontrollera konfigurationen för dessa fel. De kan bara identifieras genom att analysera arbetets logik. Om du är osäker kan du kontrollera om rätt vara används.

För att göra detta, kör bara ett av kommandona.

// Definition av ett IB -element som är knutet till den fördefinierade rapporten (Directories.Types of ContactInformation.EmailContactPerson) // Bestäm det fördefinierade elementet som den valda rapporten är knuten till (ReferenceOnItem.Name of PredefinedData)

Om sådana fel hittas är det nödvändigt att ta bort den felaktiga länken med det gamla elementet och lägga till en länk med det nya elementet. Op-koden liknar korrigeringskoden för de två första typerna av fel.

Tja, kort om felen när programmatiskt arbete eller i konfiguratorläge:

"Det fördefinierade objektet tillhör inte<Имя справочника>" - ett fel uppstår när man försöker skriva ett fördefinierat element med ett namn som inte matchar namnet i samkonfiguratorn.

"Icke fördefinierade objekt kan inte ha fördefinierade subkontontypsposter" - ett fel uppstår när du försöker göra ett fördefinierat kontoplanselement odefinierat. För att eliminera fel är det nödvändigt att avmarkera flaggan "Fördefinierad" för varje rad i elementunderleverantören.

"Icke-fördefinierade objekt kan inte ha fördefinierade poster av ledande beräkningstyper"- ett fel uppstår när du försöker göra ett fördefinierat element i ett diagram över beräkningstyper odefinierade. För att eliminera fel är det nödvändigt att rensa flaggan "Fördefinierad" för varje rad i den ledande typen av elementberäkning.

"Fördefinierade artiklar är inte unika"- ett fel visas i konfiguratorn vid uppdatering informationsbas för en konfigurationsversion utan 8.3.4-kompatibilitetsläge. Det är nödvändigt att kontrollera dubbletter och eliminera dem innan du uppdaterar.

"Namnet på det fördefinierade elementet är inte unikt" - felet uppstår om det finns flera fördefinierade element med samma namn i konfigurationen vid uppdatering till plattformen8.3.6.2332 och senare. Det är nödvändigt att eliminera dubbletter i konfigurationen.

För att arbeta med fördefinierade data rekommenderar jag bearbetning. Hon vet hur man utför alla åtgärder med fördefinierade data och kan också kontrollera konfigurationen som helhet för förekomsten av fel av de två första typerna (duplicerade och saknade element) i alla informationssäkerhetsobjekt (referensböcker, kontoplaner, PVC , PVR).

Enkel hantering för att arbeta med fördefinierade värden.

Gör att du kan matcha IB -element med fördefinierade element i konfigurationen.

Låter dig kontrollera den övergripande konfigurationen för förekomst av dubbletter (flera IB -element knutna till ett fördefinierat element - ett fel) och saknade element (fördefinierade element som inte är associerade med IB -element - ett fel). Sådan element kan uppstå under utbyten eller fel och leda till fel i konfigurationen.

Du kan bara se de aktuella värdena, du kan göra nödvändiga ändringar.

Normalt tillvägagångssätt:

1. Vi börjar bearbeta.

2. Vi väljer typ (referensbok, kontoplan, PVC, PVR).

3. Vi väljer själva katalogen för den valda typen.

4. Alla fördefinierade element som finns tillgängliga i IB och beskrivs i konfigurationen visas i tabelldelen av bearbetningen.

Om det finns flera element i databasen som är bundna till en fördefinierad egenskap, eller några av elementen som beskrivs i konfigurationen inte är tilldelade IB-element, kommer systemet att informera dig om detta när du väljer en referensbok. Duplicerade och saknade objekt visas högst upp i listan och är markerade i orange.

5. Vi ställer in nya värden för de nödvändiga fördefinierade elementen.

I det här fallet är linjer markerade med rött, för vilket ett fördefinierat element försvinner från konfigurationen. Blå linjer för vilka ett fördefinierat element ändras, gröna linjer för vilka ett fördefinierat element visas.
Med ett stort antal dubbletter är det bekvämt att med musen välja alla onödiga rader och ange för alla valda ångra länken med knappen "Avmatcha" (sedan version 1.3.1)

6. Vi utför omfördelningen genom att klicka på knappen "Utför omfördelning av element".

Kontrollerar dubbletter(fel "Det fördefinierade objektet är inte unikt"):

När du trycker på knappen "Kontrollera dubbletter" kommer bearbetningen att kontrollera alla kataloger, kontoplaner, PVC och PVR och visa en lista med tabeller med dubblerade element som anger antalet dubblerade element.

Efter det är det nödvändigt att separat kontrollera de objekt för vilka fel hittades.

Kontrollera missade(fel "Ett fördefinierat objekt saknas i data"):

När du klickar på knappen "Kontrollera saknas" kommer bearbetningen att kontrollera alla referensböcker, kontoplaner, PVC och PVR och visa en lista med fördefinierade element som inte är associerade med IB-data.

Kräver plattform 8.3.3 eller högre för att kunna användas.

Mångsidig, kan användas med alla konfigurationer.

Upptäck språk Afrikaans Albanska Arabiska Armeniska Azerbajdzjan baskiska Bengali Vitryska Bulgariska Katalanska Kinesiska (Simp) Kinesiska (Trad) Kroatiska Tjeckiska Danska Holländska Engelska Esperanto Estniska Filippinska Finska Franska Galiciska Georgiska Tyska Grekiska Gujarati Haiti Haiti Kreol Hebreiska Hindi Ungerska Isländska Indonesiska Latin Irländska Japanska Latv Korea Latv Litauiska makedonska malaysiska maltesiska norska persiska polska portugisiska rumänska ryska serbiska slovakiska slovenska spanska swahili svenska tamil telugu thailändska turkiska ukrainska urdu vietnamesiska walisiska jiddisch Afrikaans Albanska Arabiska Armeniska Azerbajdzjan Baskiska Bengali Vitryska Bulgariska Katalanska Kinesiska (Simp) Kinesiska (Trad) Kroatiska Tjeckiska Danska Holländska Engelska Esperanto Estniska Filippinska Finska Franska Galiciska Georgiska Tyska Grekiska Gujarati Haitiansk Kreol Hebreiska Hindi Ungerska Isländska Indonesiska Irländska Italienska Japanska Latinska Kannada Koreanska Lithuanian Lao Malajiska Maltesiska Norska Persiska Polska Portugisiska Rumänska Ryska Serbiska Slovakiska Slovenska Spanska Swahili Svenska Tamil Telugu Thai Turkiska Ukrainska Urdu Vietnamesiska Welsh Jiddisch