Organisering av utbyte med filialens bas (butik) i distributionsnätet via XML (universell utbyte). Schemalagt utbyte med standardmedel 1s 8.3 exempel på att skapa en utbytesplan

Automatiserade system förvaltningen består i de flesta fall av separata databaser och har ofta en geografiskt fördelad struktur. Samtidigt är korrekt implementerat datautbyte en nödvändig förutsättning för att sådana system ska fungera effektivt.

I det här fallet kan den initiala inställningen av utbytet kräva ett antal åtgärder, inte bara när det gäller programmering, utan också konsultation, även om vi har att göra med homogena källor, vilket är fallet med produkter baserade på 1C:Enterprise-plattformen . Varför att sätta upp en 1C-växel (eller, som det också kallas, datasynkronisering i 1C 8.3) kan bli den mest tidskrävande och kostsamma uppgiften för ett integrationsprojekt, kommer vi att överväga i den här artikeln.

Datautbyte i 1C-miljön låter dig:

  • Eliminera dubbelinmatning av dokument;
  • Automatisera relaterade affärsprocesser;
  • Optimera interaktionen mellan distribuerade avdelningar;
  • Uppdatera omgående data för arbetet med specialister från olika avdelningar;
  • "Avgränsa" olika typer bokföring.*

*I de fall då uppgifterna för en typ av redovisning avsevärt skiljer sig från en annan, är det nödvändigt att säkerställa informationens konfidentialitet och "separata" informationsflöden. Exempelvis kräver datautbyte mellan 1C UT och 1C Accounting inte uppladdning av ledningsdata till den regulatoriska bokföringsdatabasen, d.v.s. synkronisering i 1C kommer att vara ofullständig här.

Om vi ​​representerar standardprocessen för att implementera det primära datautbytet, när minst ett av dess objekt är en 1C-produkt, kan följande steg urskiljas:

  • Samordning av utbytets sammansättning;
  • Definition av transport (utbytesprotokoll);
  • Sätta regler;
  • Schemaläggning.

Identifiering av växelns sammansättning 1C

Utbytesobjekt kan villkorligt delas in i "källa" och "mottagare". Samtidigt kan de utföra två roller samtidigt, vilket kommer att kallas ett tvåvägsutbyte. Definitionen av källan och destinationen sker på ett logiskt sätt, beroende på behov eller på funktionalitet system.*

*Till exempel, när du integrerar "WA: Financier" - en lösning för finansiell redovisning och hantering av treasury-processer, utvecklad på basis av "1C: Enterprise", rekommenderar WiseAdvice-experter det som ett mastersystem. Detta beror på tillgången på kontrollverktyg för att följa reglerna för tillämpningspolicyn och följaktligen för att säkerställa lösningens effektivitet.

Vidare, baserat på de mottagna och registrerade kraven från användarna, skapas en lista över data för utbyte, deras volym, krav på utbytesfrekvens bestäms, processen att arbeta med fel och hantera exceptionella situationer (kollisioner) föreskrivs.

I samma skede, beroende på flottan av befintliga system och företagets struktur, bestäms utbytesformatet:

Distribuerad informationsbas

  • RIB innebär ett utbyte mellan identiska 1C-databaskonfigurationer, med en tydlig master-slave-kontrollstruktur för varje utbytespar. Som en del av den tekniska plattformen kan RIB, förutom data, överföra ändringar i databasens konfiguration och administrativ information (men bara från mastern till slaven).

Universellt datautbyte i 1C

  • En mekanism som låter dig konfigurera utbytet av 1C-databaser, både med konfigurationer på 1C:Enterprise-plattformen och med tredjepartssystem. Utbytet sker genom att överföra data till ett universellt xml-format i enlighet med "Utbytesplanerna".

EnterpriseData

  • Den senaste utvecklingen av 1C-företaget, designad för att implementera utbyte av data i xml-format mellan produkter skapade på 1C:Enterprise-plattformen med alla automationssystem. Användningen av EnterpriseData förenklar förbättringarna i samband med utbytet. Tidigare, när en ny konfiguration ingick i systemet, var det nödvändigt att implementera en mekanism för import och export av data, både för det och för befintliga system. Nu behöver system som stöder EnterpriseData inte modifieras, eftersom de bara har en ingångspunkt.

Definition av transport (utbytesprotokoll)

Systemet baserat på plattformen 1C:Enterprise 8 ger ett brett utbud av alternativ för att organisera utbyte med alla informationsresurser genom allmänt accepterade universella standarder (xml, textfiler, Excel, ADO-anslutning, etc.). Därför, när man bestämmer transporten för datautbyte, bör man utgå från kapaciteten i databasen för ett tredjepartssystem.

Synkronisering av kataloger

Huvudprincipen för effektiv katalogsynkronisering är närvaron av en ingångspunkt. Men om vi pratar om att arbeta med kataloger som historiskt har fyllts i enligt olika regler, är det nödvändigt att tydligt definiera synkroniseringsfälten för att föra utbytet till en "gemensam nämnare."*

*I detta skede kan det bli nödvändigt att utföra arbete med normalisering av referensdata på sidan av datakällan. Beroende på katalogernas tillstånd och deras volym kan processen att jämföra element, känna igen, identifiera fel och dubbletter, samt fylla i de saknade fälten och tilldela synkroniseringsfält, kräva arbete av en hel grupp experter, både från sidan av integratören (ägaren avn) och från kundens sida.

Sätta regler

Möjligheten att visa data från källsystem i mottagare beror på korrekt definierade utbytesregler. Reglerna som presenteras i xml-formatet reglerar överensstämmelsen mellan nyckelattributen för källdestinationsobjekten. 1C: Data Conversion-lösningen är utformad för att automatisera skapandet av regler för implementering av både en engångsutbyte och en permanent.

Säkerställer ingen dataförlust under utbyte Exchange-plan. Detta är en integrerad del av alla konfigurationer på 1C:Enterprise-plattformen, som fullständigt beskriver 1C-utbytesproceduren: datasammansättning (dokument med "identifierande" detaljer) och noder (mottagare-sändarinformationsbaser), samt aktiveringen av RIB för utvalda bytesriktningar.

Varje förändring av data som matas in i utbytesplanen är fixerad och får tecknet "förändring". Förrän de ändrade data matchar varandra i mottagar-sändarnoderna kommer flaggan inte att återställas, och systemet kommer att skicka kontrollmeddelanden till båda noderna. Efter att ha laddat ur data och bekräftat deras fulla överensstämmelse i båda systemen, återställs skylten.

Utbytesschema i 1C

För att automatisera det vanliga utbytet ställs frekvensen för uppladdning av data in. Utbytesfrekvensen beror på behov och tekniska möjligheter. Dessutom tillåter konfigurationer på 1C:Enterprise-plattformen dig att konfigurera datautbyte när en händelse inträffar.

Efter att ha övervägt standardprocessen för att implementera utbytet, låt oss uppmärksamma de faktorer som kommer att kräva förbättringar i olika skeden:

  • Icke-standardiserade, kraftigt modifierade databaskonfigurationer;
  • Olika versioner av 1C:Enterprise-plattformen;
  • Inte uppdaterat på länge nuvarande versioner konfiguration;
  • Byt ut objekt som tidigare har modifierats;
  • Behovet av icke-standardiserade utbytesregler;
  • En mycket annorlunda uppsättning och sammansättning av detaljer i de tillgängliga katalogerna.

Eftersom även standardåtgärder för implementering av det primära datautbytet kräver expertkunskap, rekommenderas de att utföras med deltagande av 1C-specialister. Först efter att ha slutfört alla ovanstående steg bör du fortsätta med att ställa in utbytet i konfigurationen. Tänk på integrationen av databaser på exemplet "1C: UPP" och "1C: Retail" (enligt samma schema är utbytet med "1C: UT" konfigurerat). Typisk synkronisering inkluderar också utbyte av SCP - SCP, vilket är typiskt för storskaliga automationssystem hos de största industriföretagen.

I undermenyn "Tjänst" väljer du "Datautbyte med produkter på plattformen ..." (att välja ett direktutbyte med "Detaljhandel" hotar ofta med fel på nivån för COM-objekt). Var uppmärksam på servicemeddelandet "Denna funktion är inte tillgänglig."


För att lösa detta problem måste du välja "Inställningar för datadelning"


...och kryssa i rutan. Vidare ignoreras felmeddelandet.


I inställningarna för datasynkronisering, välj "Skapa ett utbyte med" Retail "...



Innan du konfigurerar anslutningsinställningar via lokal eller nätverkskatalog du bör se till att det finns utrymme på disken för katalogen. Även om det i regel inte tar mer än 30-50 MB, kan det i undantagsfall kräva upp till 600 MB. Du kan skapa den önskade katalogen direkt från konfiguratorn.



När vi ansluter via nätverkskatalogen ignorerar vi förslagen att konfigurera anslutningen via FTP-adressen och via e-post genom att klicka på "Nästa".


I inställningarna, lägg ner prefixen manuellt - symbolerna för databaserna (vanligtvis BP, UPP, RO), ställ in reglerna och startdatumet för uppladdning av data. Prefixet kommer att anges i titeln på dokumenten för att ange i vilken bas de skapades. Om uppladdningsreglerna inte redigeras kommer standarddata att laddas upp enligt alla tillgängliga parametrar.



Vi skapar en fil för utbytesinställningar för Retail för att inte upprepa våra handlingar. Om du behöver skicka data direkt efter att du har ställt in synkroniseringen, markera rutan.


För att automatisera utbytesprocessen måste du sätta upp ett schema.


Detaljhandelsmeny.


Markera rutan och välj Synkronisera.


Vi gör en "omvänd" inställning genom att välja Leda ett tillverkningsföretag.




Ladda filen med de inställningar som skapats i SCP.


Vi sätter en bock, systemet hämtar adressen automatiskt.





Vi agerar på samma sätt som i UPP.









Verifieringsjämförelse av data (Manuell jämförelse av data rekommenderas att utföras på förberedande skede, eftersom dessa jobb kan bli de mest tidskrävande i processen för att implementera utbytet). Jämförelsefönstret öppnas genom att dubbelklicka med musen.



I händelse av ett fel i synkroniseringen kommer "Detaljer..." att ersättas med "Aldrig...".


"Detaljer..." öppnar registreringsloggen med uppdaterad information om börsen.


Redo.

Utbytesplaner i 1C 8.3 är ett konfigurationsmetadataobjekt som används för att implementera datasynkronisering i 1C 8-systemet.

En utbytesplan kan jämföras med en katalog, där element är infobasnoder. Det finns dock många nyanser i arbetet med utbytesplaner, vi kommer att prata om dem nedan.

Vanligtvis byggs växeln i 1C med hjälp av speciella växlingsregler, som bildas med hjälp av konfigurationen.

Som tidigare noterats är utbytesplanen mycket lik den vanliga, och därför kommer vi bara att överväga de viktigaste skillnaderna i utbytet.

Hur man arbetar med utbytesplanen

Bytesplanen kan lagra information och ändringar av element från utbytesplanen, och lagrar även information om numret aktuellt meddelande. I allmänhet är arbetsschemat följande:

  1. Vi ändrar data (kataloger, dokument etc.) i databasen - utbytesplanen kommer ihåg ändringarna. Antingen genom automatisk registrering eller genom programkod (till exempel metoden Exchange Plans.RegisterChanges).
  2. När det är dags får vi en lista med ändrade element - metoden ReadChanges(), ta bort denna data.
  3. Vid upp-/nedladdning, för att undvika kollisioner, kontrollerar vi bytesplanens meddelandenummer. Om de inte stämmer överens avbryter vi datautbytet, om de gör det tar vi bort registreringen av ändringar och ökar meddelandenumret.

Få 267 1C-videolektioner gratis:

Distribuerad infobas

Om denna flagga är inställd i inställningarna är denna utbytesplan en distribuerad infobas (DIB).

- ett geografiskt distribuerat system baserat på samma konfiguration 1C 8.3. RIB kan, förutom dataändringar, även överföra konfigurationsändringar, vilket är mycket bekvämt, till exempel när du uppdaterar en konfigurationsrelease.

Sammansättning av utbytesplanen

Inställningen med vilken utvecklaren hanterar uppsättningen objekt som ska utbytas:

Som en del av utbytesplanen kan det finnas tre tillstånd för objektet:

  1. Ingår inte i utbytesplanen- Följaktligen kan du inte på något sätt konfigurera datautbyte för denna utbytesplan för ett sådant objekt.
  2. Autoregistrering Neka- detta betyder att det är nödvändigt att registrera ändringar för denna nod endast med programkod enligt något villkor, som regel, . Metoden ExchangePlans.RegisterChanges() används.
  3. Tillåt automatisk registrering- om den här kryssrutan är inställd, kommer alla ändringar av elementet automatiskt att inkluderas i listan över bytesplanändringar.

Utbytesplaner och prestation 1C

På grund av systemfunktionerna för implementeringen av utbytesplaner, rekommenderas det inte att missbruka uppladdningen av ändringar enligt utbytesplaner. Saken är att vid läsning av ändringar blockeras alla tabeller över ändringar. De där. vid lossning tillåter utbytesplanen inte att skriva nya ändringar och blockerar därför själva elementen - kataloger, dokument etc.


Nyckelord: distribuerad, URDB, XML, registrering, nod, nod, automatisk registrering, initial, bild, POP3, SMTP, MailMessage, perifer, central, replikering, utbyte

Friskrivningsklausul och användarvillkor

Alla varumärken som av misstag nämns i denna artikel tillhör sina respektive ägare.
Den här artikeln är publicerad under licensen Creative Commons Attribution-Share Alike 3.0 Unported.
http://creativecommons.org/licenses/by-sa/3.0/

Jag kommer omedelbart att notera att allt av följande gäller för utgåvan av plattformen 8.0.7.36 och högre.

Steg 1. Skapa en utbytesplan

Vi skapar en utbytesplan i konfigurationen. Vi kallar det till exempel "DistributedBase". Obligatoriskt i
I bytesplanens egenskaper, kryssa i rutan "Distribuerad infobas".

På fliken "Övrigt", genom att klicka på knappen "Komposition", bestämmer vi vilka objekt som ska inkluderas i utbytet. Förbi
Som standard kan du aktivera alla objekt ("Actions" - "Enable All"). Den viktiga punkten är parametern
"Automatisk registrering". I allmänhet måste det vara aktiverat för alla objekt.

Obs: när nya objekt läggs till i konfigurationen ingår de inte i utbytesplanen. De där. efter
lägger till ett objekt måste det läggas till i utbytesplanen.

Om du vill att vissa objekt inte ska delta i utbytet, uteslut dem helt enkelt från kompositionen
utbytesplan. Men då förblir kontrollen av referensintegriteten helt och hållet på ditt samvete. Om, till
till exempel, ett visst dokument ingår inte i utbytesplanen, och registret genom vilket det gör rörelser ingår,
då är det i mottagarbasen fullt möjligt att få registerförflyttningar utan registrarhandling, vilket
håller med, det är inte bra.

I princip räcker dessa åtgärder för att RDB ska fungera i "manuellt" läge. För att göra detta springer vi
Enterprise, öppna vår utbytesplan via menyn "Operations". I utbytesplanen är alltid närvarande
fördefinierad nod "med en punkt". Detta är en beskrivning av den aktuella noden. Den måste öppnas och fyllas. I vår
I det här fallet kommer fälten "Kod" och "Namn" att vara tillgängliga. Låt oss tilldela koden "AA" till vår nod och kalla den
"Central". Låt oss lägga till en nod till utbytesplanen. Låt oss tilldela den koden "BB" och kalla den "Peripheral".

Nu kan vi skapa en bild av den perifera basen. Detta görs genom att trycka på "Skapa initial
image". I listan över noder måste väljas perifer bas. Databasbilden skapas som en färdig IB
i katalogen eller på 1C:Enterprise-servern. (till skillnad från 7.7, där IB-bilden skapades som en fil
avlastning). Vidare kan den skapade databasen flyttas till rätt plats genom att helt enkelt kopiera filen 1CV8.1CD
(för filversionen), eller genom konfiguratorn genom att ladda upp och ladda ner data.

Om du öppnar utbytesplanen i den perifera IS ser du att noden "med en prick", d.v.s. nuvarande
"Perifer"-noden blev noden, och ikonen för "Central"-noden blev röd, dvs. Knut
"Central" är huvudnoden i förhållande till den nuvarande.

Utbyte i "manuellt" läge kan göras med hjälp av knapparna "Spela in ändringar" och "Läs
ändringar". I det första fallet kommer du att bli ombedd att välja en fil där ändringarna ska skrivas, i det andra
- filen varifrån ändringarna kommer att läsas. Utbytet utförs i xml-format. Ändringar registreras för
vald nod.

Steg 2: Ladda upp ändringar till en XML-fil och e-posta dem

Så vi skapade en utbytesplan, skapade perifer informationssäkerhet och till och med lärde oss hur man överför data mellan
baser. Nu är vår uppgift att lära baserna att utbyta via e-post.

Vi lägger till två detaljer till utbytesplanen: e-postadress av typen "sträng" och "UtförExchange" av typen
"boolean". I attributet EmailAddress kommer vi att lagra nodens e-post, d.v.s. adressen till vilken
skicka utbytesmeddelanden. Den erforderliga PerformExchange behövs för att snabbt inaktivera den automatiska
skicka-sända meddelanden.

Vi kommer att göra proceduren för att arbeta med e-post universell, d.v.s. låt oss göra det möjligt
använd som MAPI (skicka-ta emot via e-postklient, till exempel MS Outlook), och
direkt åtkomst till SMTP/POP3-servrar.

Låt oss lägga till några konstanter till konfigurationen:

någonstans i en allmän form tillhandahåller vi redigering av värdena för dessa konstanter.

Låt oss lägga till en gemensam modul, låt oss kalla den "rbDistributedBase". I den skriver vi:

Procedur pbSendExchangeMessages() Export UseSMTP = Constants.UseExchangeBySMTP.Get(); // Skapa först Mail-objektet, som, beroende på inställningarna, kommer att vara av typen InternetMail, //om direktåtkomst till servrar används, eller Mail om MAPI används. Om AnvändSMTP Då //För ett objekt av typen InternetMail, skapa och fyll i en e-postprofil. MailProfile = Ny InternetMailProfile; MailProfile.SMTPServerAddress = Constants.SMPTPServerAddressExchange.Get(); MailProfile.SMTPPort = Constants.InterchangeSMTPserverPort.Get(); MailProfile.SMTPUser = Constants.SMPTPServerUserExchange.Get(); MailProfile.SMTPassword = Constants.SMTPUserPasswordExchange.Get(); MailProfile.Timeout = Constants.TimeoutServer.Get(); Mail = New InternetMail(); Försöker Mail.Connect(MailProfile); Undantagsrapport(" EXCHANGE: Fel vid anslutning till e-postprofil! Utbytet misslyckades!" + ErrorDescription(), MessageStatus.VeryImportant); Return; EndTry; Annars Mail = NewMail(); Attempt Mail.Connect(); Exception Report("" + ErrorDescription(), MessageStatus.VeryImportant); Return; EndTry; EndIf ; //Nästa, välj alla noder från utbytesplanen, förutom den nuvarande, //för vilket PerformExchange-attributet är inställt. NodeSelection = Exchange Plans.DistributedBase.Select(); Medan SelectNodes.Next() Loop Om inte SelectNodes.PerformExchange Fortsätt sedan; EndIf; Om NodeSelection.Reference = Exchange Plans.DistributedBase.ThisNode() Fortsätt sedan; EndIf; E-adress = Förkortad LP(Val av noder. E-adress); Om EmailAddress = "" Fortsätt då; EndIf; //Med hjälp av XMLWrite- och MessageWrite-objekten skriver vi ändringarna //för den valda noden till en xml-fil. Node = NodeSelection.Reference; XMLWriter = Ny XMLWriter(); MessageFileName = TempFile Directory() + "Message_ " + Abbreviated LP(Exchange Plans.DistributedBase.ThisNode().Code) + "_" + AbbreviatedLP(Node.Code) + ".xml "; WriteXML.OpenFile(MessageFileName); MessageRecord = ExchangePlans.CreateMessageRecord(); WriteMessage.StartWrite(WriteXML, Node); Exchange Plans.WriteChanges(WriteMessage); WriteMessage.EndWrite(); WriteXML.Close(); //Då skapar vi en ny bokstav, bifogar den resulterande xml-filen till den, och //skicka till adressen som anges i nodens e-adressattribut. File = New File(MessageFileName); MessageSubject = "1C: Exchange" + Abbreviated LP(Exchange Plans.DistributedBase.ThisNode().Code) + "_" + AbbreviatedLP(Node.Code); If UseSMTP Then MailMessage = New InternetMailMessage; MailMessage.Subject = MessageSubject; MailMessage.Attachments.Add(MessageFileName, File.Name); MailMessage.Recipients.Add(EmailAddress); Mail.Send(MailMessage); Else MailMessage = Nytt MailMessage; MailMessage.Subject = MessageSubject; MailMessage.Attachments.Add(MessageFileName); MailMessage.Recipients.Add(EmailAddress); Mail.Send(MailMessage, False); EndIf; If Constants.OutputMessages.Get() Then Report(" EXC: Byt meddelande mot nod" + Node.Name + " skickat! ", MessageStatus.Information); EndIf; DeleteFiles(MessageFileName); EndCycle; Mail.Disconnect(); EndProcedure

Jag rekommenderar att du lägger till i gränssnittet extra panel, på en av knapparna som lägger på samtalet för detta
förfaranden. Nu återstår det att starta Enterprise, konfigurera e-postadress perifer IS,
markera rutan "Utför utbyte", klicka på procedurknappen på panelen och kör för att ta emot e-post för
angiven e-postadress. adresser. Du bör få ett brev med ämnet "1C: Exchange AA_BB" och en bifogad fil
"Meddelande_AA_BB.xml".

Så hälften av arbetet är gjort: vi lärde "åttan" att skicka RDB-utbytesmeddelanden via e-post.
post.

Steg 3. Ta emot uppdateringar via e-post och registrera dem i IB

Låt oss nu göra omvänd procedur: ta emot uppdateringar via e-post och skriva dem till IB.

Låt oss lägga till parametern "DistributedBaseExchange in Progress" av den booleska typen till sessionsparametrarna. Nedan ska jag förklara det
utnämning.

Låt oss lägga till följande procedur till den gemensamma modulen rbDistributedBase:

Procedur rbGetInterchangeMessages() Export UseSMTP = Constants.UseExchangeBySMTP.Get(); //samma som i rbSendExchangeMessages()-proceduren, skapa först ett objekt Mail If UseSMTP Then MailProfile = New InternetMailProfile; MailProfile.POP3ServerAddress = Constants.POP3ExchangeServerAddress.Get(); MailProfile.POP3 Port = Constants.POP3ExchangeServerPort.Get(); MailProfile.User = Constants.POP3ExchangeServerUser.Get(); MailProfile.Password = Constants.POP3UserPasswordExchange.Get(); MailProfile.Timeout = Constants.TimeoutServer.Get(); Mail = New InternetMail(); Försöker Mail.Connect(MailProfile); Undantagsrapport(" EXCHANGE: Fel vid anslutning till e-postprofil! |Utbytet misslyckades!", MessageStatus.Very Important); Return; EndTry; Else Mail = New Mail(); Attempt Mail.Connect(); Exception Report(" EXCHANGE: Fel vid anslutning till användarens e-postprofil! |Utbytet misslyckades!", MessageStatus.Very Important); Return; EndTry; EndIf;MessageArray = New Array; If UseSMTP Then AllMessages = Mail.Select(False); Else AllMessages = Mail.Select(False, False); EndIf; //Välj bland alla bokstäver de som har ämnet "1C: Exchange". //Liten men viktig anmärkning: //vi anser att alla mottagna brev med ämnet "1C: Exchange" är avsedda //nämligen för den aktuella noden, //de där. att olika noder vad gäller utbyte har OLIKA mailadresser. För varje meddelande från AllMessages Loop If Lion(Message.Subject, 8 )<>"1C: Exchange" Fortsätt sedan; EndIf; TryingMessageArray.Add(Message); //Spara brevbilagan till disk. //Låt oss lämna en noggrann häckningskontroll bakom kulisserna tills vidare. Attachment = Meddelande Bilagor; MessageFileName = TempFileDirectory() + Attachment.Name; ExchangeData = Attachment.Data; ExchangeData.Write(MessageFileName); //Med hjälp av XMLReader- och MessageReader-objekten läser vi data //uppdateringar från den sparade filen. Innan du skriver uppdateringar till IB //ställ in sessionsparametern DistributedBaseExchange In Progress till True. //Läs sedan ändringarna i IB: Exchange Plans.ReadChanges(ReadingMessage). //Samtidigt sparar vi meddelandena i en array, så att vi senare kan radera alla på en gång. XMLReader = Ny XMLReader(); ReadingXML.OpenFile(MessageFileName); ReadMessage = ExchangePlans.CreateReadMessage(); ReadingMessage.StartReading(ReadingXML); SessionParameters.DistributedBaseExchange pågår = True; Exchange Plans.ReadChanges(ReadMessage); ReadMessage.FinishReading(); ReadXML.Close(); If Constants.OutputMessages.Get() Then Report(" UTBYTE: Utbytesdata accepteras",MessageStatus.Information); EndIf; Exception Report(" EXCHANGE: Fel när utbytesdata hämtades:" + ErrorDescription(), MessageStatus.Very Important); EndTry; //Återgå efter att utbytesdataavläsningen är klar //sessionsparameter IsExchangingDistributedBase-värdet är False. SessionParameters.DistributedBaseExchange pågår = False; Försök att ta bort filer(meddelandefilnamn); Undantag // om det inte fungerar, ok Slut på försök; EndCycle; If UseSMTP Then Mail.DeleteMessages(MessageArray); EndIf; Mail.Disconnect(); Slutprocedur

Nu om vad sessionsparametern är till för.
Faktum är att när man läser data med Exchange Plans.ReadChanges()-metoden uppstår ett anrop
händelsehanterare procedurer BeforeWrite() för ändrade/tillagda objekt. Och om vid inspelning
av något objekt i hanterarproceduren kommer parametern Cancel att ställas in på True
vid exekvering av ExchangePlans.ReadChanges(), kommer ett undantag att inträffa, och följaktligen utbytet
kommer inte att verkställas. Värdet på sessionsparametern IsInDistributedBaseExchange kan vara
analyseras i hanterarprocedurer för att undvika denna situation.
Med releasen av revision 12 (även om jag kan ha fel om versionerna), är relevansen av denna metod något
avskrivenA eftersom objekt har en egenskap Utbytesalternativ, som, i hans . Den här egenskapen är inställd på True when
spara data genom en utbytesplan.

Nu i gränssnittet på vår panel lägger vi till ytterligare en knapp, på vilken vi lägger på samtalet för detta
förfaranden. Vi startar Enterprise och njuter.
Nästan allt är klart, det är lite kvar: att få våra rutiner att köra in automatiskt läge.
Steg 4. Ställa in automatisk utbyte

Så vi är nästan nära målet med vår berättelse. Det är bara ett steg kvar: starta
utförande av utbytesprocedurer i automatiskt läge. Låt oss börja.

Låt oss lägga till DistributedBaseAutoExchange Interval-konstanten av typen Number(5,0).

Låt oss lägga till parametern PerformDistributedBaseExchange till användarinställningarna. För konfiguration
"Handelshantering" görs så här:

* I planen för typer av egenskaper "Användarinställningar" lägg till en fördefinierad
egenskapen PerformExchange för DistributedBases av typen Boolean.
* I form av katalogelementet "Users" konfigurerar vi ändringen av denna parameter (som
kan ses i formulärmodulen, analogt med andra parametrar).

Lägg till en procedur till rbDistributedBase-modulen:

Procedur rbExecuteExchange(prUser) Export If npGetDefaultValue(prUser, "") Sedan rbGetExchangeMessages(); rbSendExchangeMessages(); EndIf; Slutprocedur

till applikationsmodulen:

Procedur CheckConnectionAutoExchange() Export If npGetDefaultValue(chCurrentUser, " UtförDistributedBaseExchange") And Constants.DistributedBaseAutoExchange Interval.Get() > 0 Sedan ConnectWaitingHandler(" Utför Auto Exchange", Constants.DistributedBaseAutoExchange Interval.Get()); Else DisableWaitingHandler(" Utför Auto Exchange"); EndIf; EndProcedure Procedure ExecuteAutoExchange() Exportera rbExecuteExchange(chCurrentUser); DisableWaitingHandler(" Utför Auto Exchange"); Om npGetDefaultValue(chCurrentUser, " UtförDistributedBaseExchange") And Constants.DistributedBaseAutoExchange Interval.Get() > 0 Sedan ConnectWaitingHandler(" Utför Auto Exchange", Constants.DistributedBaseAutoExchange Interval.Get()); EndIf; EndProcedure Procedur DisableAutoExchange() Export DisableWaitingHandler(" Utför Auto Exchange"); Slutprocedur

lägg till följande rader i AtStartSystem()-proceduren för applikationsmodulen:

(efter anslutning av kommersiell utrustning)
...
SessionParameters.DistributedBaseExchange pågår = False; CheckConnectionAutoExchange();

Låt oss lägga till ytterligare ett par knappar till vår panel för att styra processen: vi hänger proceduren på en
CheckConnectingAutoExchange(), till en annan - DisableAutoExchange()

Vi lanserar företaget, ställer in användaregenskaper och automatiskt bytesintervall och det är allt!

Nu, när du går in i databasen under denna mest konfigurerade användare, kommer hanteraren att startas
väntar ExecuteAutoExchange(). Naturligtvis, i den perifera databasen måste du också konfigurera användaren
för utbyte.

En annan liten men viktig anmärkning:

I alla charm vi har skapat finns det en olägenhet: konfigurationsförändringar. På
När kantbasen får ett meddelande som innehåller konfigurationsändringar, kommer den
kommer att accepteras, men ett undantag kommer att inträffa. I det här fallet kommer den ändrade konfigurationen
lastad. För att uppdatera databaskonfigurationen måste du sparka ut alla användare, gå till
konfigurator och uppdatera databaskonfigurationen (innan det är det en bra idé att ladda ner data). Till
Tyvärr är detta ett nödvändigt ont. Du kan göra ditt liv lite enklare genom att skriva en kort bat-fil
något i stil med detta innehåll:

1cv8.exe CONFIG /F<путь к ИБ>/N<Пользователь>/P<Пароль>/UpdateIBCfg

Och en anmärkning till:

Tyvärr är xml-filer inte kompakta, men lyckligtvis komprimeras de perfekt. Kan vara med
procedurer för att skicka och ta emot meddelanden lägger till packnings- och uppackningsfiler. COLOR="#666666">Du kan göra detta antingen med en extern arkiverare eller med VK, till exempel Wheel.AddIn
(http://1c.proclub.ru/modules/mydownloads/personal.php?cid=81&lid=2714) .
Med releasen av den 10:e (tycks det) upplagan är den föregående meningen något föråldrad, eftersom plattformen
var inbyggda sätt att komprimera filer med ZIP-algoritmen. De där. nu är det möjligt att komprimera filer
utan att använda VK.

Tekniken för distribuerade informationsbaser (RIB) gör att du kan skapa ett geografiskt distribuerat system baserat på 1C Enterprise-konfigurationer. Detta gör att du kan ha en gemensam informationsutrymmeäven med de enheter som inte har en pålitlig kommunikationskanal, kombinerar nodernas höga autonomi med förmågan att snabbt utbyta information. I våra artiklar kommer vi att överväga funktionerna och den praktiska implementeringen av denna mekanism på 8.2-plattformen.

Först av allt, låt oss ställa oss själva en fråga: varför automatiskt utbyte? Modern teknik, kombinerat med billigt och snabbt internet, låter dig organisera distansarbete utan några svårigheter. Valet av metoder är bredare än någonsin: RDP, tunna och webbklienter, nätverk när VPN-hjälp– det finns något att tänka på. Men alla dessa metoder har en betydande nackdel - ett starkt beroende av kvaliteten på kommunikationskanalen.

Även med den lokala leverantörens idealiska arbete är det omöjligt att garantera 100% tillgänglighet för kommunikationskanalen. Problem med stamnätsleverantören, brist på strömförsörjning, fysisk skada på kommunikationslinjen och många andra faktorer gör denna uppgift olöslig. Samtidigt leder otillgängligheten av informationsbasen i ett avlägset lager eller butik till ganska betydande förluster. Och slutligen, låt oss inte glömma att det finns platser (till exempel industrizoner i utkanten av städer) där det är dyrt och / eller problematiskt att ta med en kommunikationskanal av hög kvalitet.

RIB-mekanismen låter dig bli av med dessa brister, varje enhet har sin egen kopia av informationsbasen med vilken du kan arbeta självständigt även i frånvaro av kommunikation med omvärlden. En liten mängd överförd information gör att du kan använda vilken kommunikationskanal som helst för utbytet, inklusive mobilt Internet.

RIB på plattform 8.2 är inte något fundamentalt nytt, som representerar ytterligare utveckling URIB-plattform 7.7, först nu har denna teknik blivit mer tillgänglig och enklare. Till skillnad från URIB-komponenten, som måste köpas separat, är RIB en integrerad del av många typiska konfigurationer och fungerar helt i användarläge, vilket gör att du kan klara dig utan konfiguratorn även på konfigurationsstadiet.

Vid det här laget skulle det vara dags att gå vidare till den praktiska delen, men ytterligare en avvikelse måste göras. Faktum är att övergången till 8.2-plattformen, som redan verkar ha skett, faktiskt ledde till uppkomsten av två typer av konfigurationer: baserad på en hanterad applikation, inbyggd i 8.2-plattformen, och anpassad från 8.1, fortsätter att använda föråldrade teknologier och mekanismer. Eftersom en betydande del av konfigurationerna (Enterprise Accounting, Payroll and Human Resources) är anpassade eller övergångsmässiga kan de inte diskonteras, så den första delen av vår artikel kommer att ägnas åt dessa konfigurationer (i huvudsak plattform 8.1), medan vi i den andra kommer att analysera konfigurering av automatiskt utbyte för hanterade applikationsbaserade konfigurationer (8.2-plattform).

Låt oss överväga en praktisk uppgift: ställ in automatiskt utbyte via FTP för Enterprise Accounting 2.0-konfigurationen. Trots att RIB tillåter utbyte med hjälp av E-post eller filresurser rekommenderar vi att du använder FTP som det enklaste och mest pålitligt sätt anslutningar. Du kan läsa hur du ställer in din egen FTP-server i, eller så kan du använda FTP-tjänsten från vilken värdleverantör som helst.

Först och främst måste vi sätta upp utbytesnoder. För att göra detta, kör konfigurationen med administratörsrättigheter och välj Verksamhet - Utbytesplaner.

Välj i listan som visas Full planera eller Efter organisation om en databas för register över flera företag och utbytet endast behöver göras för ett av dem. I fönstret som öppnas finns det redan en nod - den centrala, vi måste redigera den genom att ange koden och namnet.

Efter det kommer vi att skapa en annan nod för grenen, fylla den på samma sätt (för att lägga till, klicka på den gröna cirkeln med ett plus). Nästa steg är att skapa en initial bild för denna nod, som är en färdig infobas i filläge. För att göra detta, klicka Högerklicka klicka på önskad nod och välj i rullgardinsmenyn Skapa en första bild.

Nu går vi vidare Service - Distributed Information Base (RIB) - Konfigurera DIB-noder.

Klicka på knappen i fönstret som öppnas Lägg till och anpassa nytt utbyte, med angivande av fjärrvärd, utbytestyp (via FTP) och serveranslutningsinställningar.

Bokmärke Automatiskt utbyte låter dig konfigurera schemat för utbyten, utbyte efter händelser (start och slut på arbete, etc.), dessa inställningar görs för användaren för vars räkning utbytet kommer att utföras, så se till att han har rättigheterna att utbyta data .

Glöm inte att ange värdprefixet för numrering av dokument (annars får du olika dokument med samma nummer) i Verktyg - Programinställningar, här kan du även konfigurera några andra utbytesinställningar. På samma flik bör du välja en användare för att utföra utbytesuppgifter, om du inte gör detta kommer schemat inte att fungera. Kom ihåg att bytet kommer att göras endast om given användare inloggad i programmet.

Detta slutför konfigurationen av den centrala noden, nu måste du göra liknande inställningar för den perifera noden genom att ansluta den initiala bilden som en befintlig IB. Efter det kan du börja utbyta data. För kontrollanvändning Kommunikationsmonitor, det låter dig inte bara kontrollera framgången för uppladdningen / nedladdningen, utan visar också kollisioner eller väntande rörelser som har inträffat (om användaren som gjorde utbytet inte har tillräckligt med rättigheter att utföra några åtgärder i databasen). Närvaron av detta verktyg gör att du snabbt och effektivt kan lösa olika typer av problem som uppstår under automatiskt utbyte.

På detta kan växeluppställningen anses vara komplett och du kan börja arbeta i distribuerat läge. Separat är det värt att uppehålla sig vid att uppdatera eller göra ändringar i konfigurationen. Dessa åtgärder är endast tillgängliga på den centrala noden, alla ändringar som görs kommer automatiskt att spridas till perifera noder på nästa växel. Automatiska ändringar kräver att kantbasen är i exklusivt läge, annars måste du springa Konfigurator och verkställa Uppdaterar databaskonfigurationen manuellt.

Om din organisation sysselsätter fler än 5 personer använder du troligen 1C-produkter. Nästan alltid installerar organisationer flera 1C-databaser, eftersom var och en av dem löser ett visst antal uppgifter. Till exempel, ett företag ägnar sig åt detaljhandel och bokför, i en sådan situation installerar kunden vanligtvis UT (Trade Management) och BP (Enterprise Accounting). Även en enkel enskild företagare med flera anställda kan mycket väl agera som ett sådant företag!

Varför ska jag ställa in datautbyte?

Låt oss fortsätta att överväga situationen med UT och BP. Föreställ dig att vi nu inte har en växel konfigurerad, vilka åtgärder behöver vi utföra för att återspegla bokföringstransaktioner i båda databaserna? Det stämmer, först fyller vi i uppgifterna i UT, och sedan måste vi ange samma uppgifter i BP, eftersom vi till exempel inte kan ange varumottagandet i UT, men det kan inte göras i BP.

Även om du väljer att använda ett typiskt datautbyte (konfigurera ett typiskt datautbyte (1C-synkronisering)), betyder det inte att det är möjligt att konfigurera det i din databas. Problem uppstår om du till exempel inte har uppdaterat databasen på länge (för att upprätthålla typutbytet måste dina databaser vara uppdaterade) eller om objekten som du ska överföra från en databas till en annan ändras (i det här fallet kommer typutbytet inte att fungera korrekt), förutom allt detta även om databasplattformsversionerna skiljer sig (7.7 - 8.3), då måste datautbytet med största sannolikhet också slutföras eller utvecklas från grunden.

Vem behöver använda datautbyte mellan 1C-databaser?

Om påståendena nedan är relevanta för dig måste du konfigurera utbytet mellan dina konfigurationer:

  • Du har mer än 1 bas 1C
  • Du måste snabbt överföra information från en databas till en annan och vice versa
  • Behöver automatiskt utbyte eller realtidsbyte

Utveckling och konfigurering av datautbyte mellan 1C-konfigurationer

Ett korrekt utformat datautbyte gör att du kan:

  • Avlasta och ladda objekt från en databas till en annan
  • Utför utbyten mellan olika versioner 1C
  • Dela data i realtid
  • Avsevärt minska lönekostnaderna för anställda, för nu kommer de att ha mer fritid
  • Spara din tid och budget

Utveckling av regler för datautbyte på exemplet med modifierade UT- och BP-databaser

Vi har två baser där dokumentet "Mottagande av varor och tjänster" slutförs, särskilt i dokument och tabellformade delar nya detaljer har lagts till, vissa typiska detaljer har tagits bort, vilket gör att standarddatautbytet inte fungerar. Vi har tagit fram en ny utbytesregel och skrivit den till en fil.