Suplanuotas keitimas naudojant standartines priemones. Mainų su filialo baze (mažmeninės prekybos parduotuve) organizavimas mažmeninės prekybos tinkle per XML (universalus birža) Registracijos taisyklių kūrimas

Paskirstytų informacinių bazių (RIB) technologija leidžia sukurti geografiškai paskirstytą sistemą, pagrįstą 1C Enterprise konfigūracijomis. Tai leidžia turėti bendrą informacinę erdvę net su tais padaliniais, kurie neturi patikimo ryšio kanalo, derinant aukštą mazgų autonomiją su galimybe greitai keistis informacija. Savo straipsniuose apžvelgsime šio mechanizmo ypatybes ir praktinį įgyvendinimą 8.2 platformoje

Visų pirma, paklauskime savęs: kodėl vyksta automatiniai mainai? Šiuolaikinės technologijos kartu su nebrangiu ir greitu internetu leidžia be jokių sunkumų organizuoti nuotolinį darbą. Metodų pasirinkimas kaip niekad platus: KPP, plonieji ir žiniatinklio klientai, tinklų sujungimas naudojant VPN – yra apie ką galvoti. Tačiau visi šie metodai turi vieną reikšmingą trūkumą – stiprią priklausomybę nuo komunikacijos kanalo kokybės.

Net ir idealiai veikiant vietiniam tiekėjui, neįmanoma užtikrinti 100% ryšio kanalo prieinamumo. Problemos su pagrindinio tinklo tiekėju, maitinimo trūkumas, fiziniai ryšio linijos pažeidimai ir daugelis kitų veiksnių daro šią užduotį neįveikiama. Tuo pačiu metu informacijos bazės neprieinamumas nuotoliniame sandėlyje ar mažmeninėje parduotuvėje sukelia gana didelių nuostolių. Ir galiausiai nepamirškime, kad yra vietų (pavyzdžiui, pramonės zonos miestų pakraščiuose), kur kokybiško ryšio kanalo suteikimas yra brangus ir/ar problemiškas.

RIB mechanizmas leidžia atsikratyti šių trūkumų, kiekvienas skyrius turi savo informacinės bazės kopiją, su kuria galite dirbti savarankiškai net ir visiškai nebendraujant su išoriniu pasauliu. O mažas perduodamos informacijos kiekis leidžia keistis bet kuriuo ryšio kanalu, įskaitant mobilųjį internetą.

RIB 8.2 platformoje nėra kažkas iš esmės naujo, reprezentuojanti tolesnę RIB platformos 7.7 plėtrą, tik dabar ši technologija tapo prieinamesnė ir paprastesnė. Skirtingai nuo RIB komponento, kurį reikėjo įsigyti atskirai, RIB yra neatsiejama daugelio standartinių konfigūracijų dalis ir veikia tik vartotojo režimu, todėl galite apsieiti be konfigūratoriaus net sąrankos etape.

Šiuo metu laikas būtų pereiti prie praktinės dalies, tačiau teks padaryti dar vieną nukrypimą. Faktas yra tas, kad perėjimas prie 8.2 platformos, kuris, atrodo, jau įvyko, iš tikrųjų paskatino dviejų tipų konfigūracijų atsiradimą: pagrįstą valdoma programa, „gimtoji“ 8.2 platformai ir pritaikyta iš 8.1, tęsiant naudoti pasenusias technologijas ir mechanizmus. Kadangi nemaža dalis konfigūracijų (įmonių apskaita, darbo užmokestis ir žmogiškieji ištekliai) yra pritaikytos arba pereinamosios, jos negali būti diskontuojamos, todėl pirmoji mūsų straipsnio dalis bus skirta šioms konfigūracijoms (iš esmės platforma 8.1), o antrojoje mes analizuos valdomų programų konfigūracijų automatinio mainų konfigūravimą (8.2 platforma).

Panagrinėkime praktinę užduotį: nustatykite automatinį apsikeitimą per FTP, kad būtų galima konfigūruoti Enterprise Accounting 2.0. Nepaisant to, kad RIB leidžia keistis naudojant el. paštą ar bendrinamus failus, rekomenduojame naudoti FTP kaip lengviausią ir patikimiausią ryšio būdą. Galite perskaityti, kaip nustatyti savo FTP serverį, arba galite naudoti bet kurio prieglobos teikėjo FTP paslaugą.

Visų pirma, turime sukonfigūruoti mainų mazgus. Norėdami tai padaryti, paleiskite konfigūraciją administratoriaus teisėmis ir pasirinkite Sandoriai – mainų planai.

Pasirodžiusiame sąraše pasirinkite Pilnas planas arba Pagal organizaciją, jei vienoje duomenų bazėje saugomi kelių įmonių įrašai ir keistis reikia tik vienai iš jų. Atsidariusiame lange jau yra vienas mazgas - centrinis, jį reikia redaguoti, nurodant kodą ir pavadinimą.

Tada sukursime kitą šakos mazgą, užpildydami jį tokiu pačiu būdu (norėdami pridėti, spustelėkite žalią apskritimą su pliusu). Kitas žingsnis yra sukurti pradinį šio mazgo vaizdą, kuris yra paruošta informacijos bazė failo režimu. Norėdami tai padaryti, dešiniuoju pelės mygtuku spustelėkite norimą mazgą ir išskleidžiamajame sąraše pasirinkite Sukurkite pradinį vaizdą.

Dabar eikime toliau Paslauga – paskirstytos informacijos bazė (DIB) – konfigūruoti RIB mazgus.

Atsidariusiame lange spustelėkite mygtuką Papildyti ir sukonfigūruoti naują biržą, nurodydami nuotolinį pagrindinį kompiuterį, mainų tipą (per FTP) ir serverio ryšio parametrus.

Skirtukas Automatinis keitimas leidžia nustatyti mainų grafiką, keistis pagal įvykius (darbo pradžia ir pabaiga ir pan.), šie nustatymai atliekami vartotojui, kurio vardu bus atliekami mainai, todėl įsitikinkite, kad jis turi teises keistis duomenimis.

Nepamirškite nurodyti mazgo priešdėlio dokumentų numeravimui (kitaip gausite skirtingus dokumentus su tais pačiais numeriais) skiltyje Įrankiai - Programos nustatymai, čia galite sukonfigūruoti ir kai kuriuos kitus mainų parametrus. Tame pačiame skirtuke turėtumėte pasirinkti vartotoją, kuris atliks mainų užduotis; jei to nepadarysite, tvarkaraštis neveiks. Atminkite, kad mainai bus atlikti tik tuo atveju, jei vartotojas bus prisijungęs prie programos.

Tai užbaigia centrinio mazgo konfigūraciją; dabar reikia atlikti panašius periferinio mazgo nustatymus, prijungiant pradinį vaizdą kaip esamą informacijos apsaugos sistemą. Po to galite pradėti keistis duomenimis. Kontroliniam naudojimui Ryšio monitorius, leidžia ne tik stebėti įkėlimo/atsiuntimo sėkmę, bet ir parodo visus kilusius susidūrimus ar uždelstus judesius (jei keitimą atlikęs vartotojas neturi pakankamai teisių atlikti kokius nors veiksmus duomenų bazėje). Šio įrankio buvimas leidžia greitai ir efektyviai išspręsti įvairių tipų problemas, kylančias automatinio mainų metu.

Šiuo metu mainų sąranka gali būti laikoma baigta ir galite pradėti dirbti paskirstytu režimu. Verta konkrečiai pasilikti ties konfigūracijos atnaujinimu ar pakeitimu. Šie veiksmai galimi tik centriniame mazge; visi atlikti pakeitimai bus automatiškai perkelti į periferinius mazgus kito mainų metu. Kad pakeitimai būtų atlikti automatiškai, periferinė duomenų bazė turi būti išskirtiniu režimu, priešingu atveju turėsite paleisti Konfigūratorius ir vykdyti Duomenų bazės konfigūracijos atnaujinimas rankiniu būdu.


Raktiniai žodžiai: paskirstytas, URDB, XML, registracija, mazgas, mazgas, automatinė registracija, pradinis, vaizdas, POP3, SMTP, MailMessage, periferinis įrenginys, centrinis, replikacija, mainai

Atsisakymas ir naudojimo sąlygos

Visi šiame straipsnyje atsitiktinai paminėti prekių ženklai priklauso atitinkamiems jų savininkams.
Šis straipsnis paskelbtas pagal Creative Commons Attribution-Share Alike 3.0 Unported licenciją.
http://creativecommons.org/licenses/by-sa/3.0/

Iš karto norėčiau atkreipti dėmesį į tai, kad visa tai taikoma 8.0.7.36 ir naujesnės versijos platformai.

1 veiksmas: sukurkite mainų planą

Konfigūracijoje sukuriame mainų planą. Pavadinkime tai, pavyzdžiui, „DistributedBase“. Reikalingas į
Mainų plano ypatybėse pažymėkite žymimąjį laukelį „Paskirstyta informacijos bazė“.

Skirtuke „Kita“ spustelėkite mygtuką „Sudėtis“, kad nustatytumėte, kurie objektai bus įtraukti į mainus. Autorius
Pagal numatytuosius nustatymus galite įjungti visus objektus ("Veiksmai" - "Įjungti viską"). Svarbus dalykas yra parametras
„Automatinė registracija“. Apskritai jis turėtų būti įjungtas visiems objektams.

Pastaba: pridedant naujų objektų į konfigūraciją, jie neįtraukiami į mainų planą. Tie. po to
Norint įtraukti objektą, jis turi būti įtrauktas į mainų planą.

Jei norite, kad kai kurie objektai nedalyvautų mainuose, tiesiog pašalinkite juos iš kompozicijos
mainų planas. Bet tada nuorodos vientisumo kontrolė lieka tik jūsų sąžinei. Jei, į
pavyzdžiui, tam tikras dokumentas nėra įtrauktas į mainų planą, o registras, pagal kurį jis atlieka judėjimą, yra įtrauktas,
tada imtuvų bazėje visiškai įmanoma gauti registro judesius be registratoriaus dokumento, kuris
sutinku, tai nėra gerai.

Iš esmės šių veiksmų pakanka, kad RDB veiktų „rankiniu“ režimu. Norėdami tai padaryti, paleidžiame
Įmonė, atidarykite mūsų mainų planą per meniu „Operacijos“. Kalbant apie mainus, jis visada yra
iš anksto nustatytas mazgas „su tašku“. Tai dabartinio mazgo aprašymas. Jį reikia atidaryti ir užpildyti. Mūsų
Tokiu atveju bus pasiekiami laukai „Kodas“ ir „Pavadinimas“. Priskirkime savo mazgui kodą „AA“ ir pavadinkime jį
"Centrinis". Į mainų planą įtraukime vieną mazgą. Priskirkime jam kodą „BB“ ir pavadinkime „Periferiniu“.

Dabar galime sukurti periferinės bazės vaizdą. Tai daroma paspaudus mygtuką „Sukurti pradinį“.
vaizdas". Mazgų sąraše turi būti pasirinkta periferinė bazė. Duomenų bazės vaizdas sukuriamas paruoštos informacijos saugos forma
kataloge arba 1C:Enterprise serveryje. (skirtingai nei 7.7, kur informacijos saugos vaizdas buvo sukurtas kaip failas
iškrovimas). Toliau sukurtą duomenų bazę galima perkelti į norimą vietą tiesiog nukopijavus failą 1CV8.1CD
(failo versijai) arba per konfigūratorių įkeliant ir atsisiunčiant duomenis.

Atsivertę mainų planą periferinėje informacijos apsaugos sistemoje pamatysite, kad mazgas yra „su tašku“, t.y. srovė
„Periferinis“ mazgas tapo mazgu, o „Centrinio“ mazgo piktograma tapo raudona, t.y. mazgas
„Centrinis“ yra pagrindinis mazgas dabartinio atžvilgiu.

Keitimasis „rankiniu“ režimu gali būti atliekamas naudojant mygtukus „Rašyti pakeitimus“ ir „Skaityti“.
pakeitimai". Pirmuoju atveju jūsų bus paprašyta pasirinkti failą, kuriame bus įrašyti pakeitimai, antruoju
- failas, iš kurio bus skaitomi pakeitimai. Keitimasis vykdomas xml formatu. Pakeitimai įrašomi
pasirinktas mazgas.

2 veiksmas: įkelkite pakeitimus į XML failą ir el. paštu

Taigi mes sukūrėme mainų planą, sukūrėme periferinės informacijos saugumą ir netgi išmokome perkelti duomenis
bazės. Dabar mūsų užduotis – išmokyti bazes keistis el.

Į mainų planą pridedame dvi detales: el. pašto adresas „string“ tipo ir „PerformExchange“ tipo
"bulio". Atribute EmailAddress išsaugosime mazgo el. paštą, t.y. adresas, kuriuo būsime
siųsti mainų žinutes. Norint greitai išjungti automatinį, reikia „Props ExecuteExchange“.
žinučių siuntimas-siuntimas.

Padarykime darbo su el. paštu tvarką universalią, t.y. padarykime tai įmanoma
naudojant MAPI (siuntimas-gavimas per el. pašto klientą, pavyzdžiui, MS Outlook), ir
tiesioginė prieiga prie SMTP/POP3 serverių.

Prie konfigūracijos pridėkime keletą konstantų:

Kažkur bendroje formoje pateikiame šių konstantų reikšmių redagavimą.

Pridėkime bendrą modulį, pavadinkime jį „rbDistributedBase“. Jame rašome:

Procedūra pbSendExchangeMessages() Eksportuoti UseSMTP = Constants.UseExchangeBySMTP.Get(); //Pirmiausia sukurkite pašto objektą, kuris, priklausomai nuo nustatymų, bus InternetMail tipo, //jei naudojama tiesioginė prieiga prie serverių, arba paštas, jei naudojamas MAPI. Jei naudokite SMTP, tada //InternetMail tipo objektui sukurkite ir užpildykite pašto profilį. MailProfile = naujas InternetMailProfile; MailProfile.SMTPServerAddress = Constants.SMTPExchangeServerAddress.Get(); MailProfile.SMTPPort = Constants.SMTPExchangeServerPort.Receive(); MailProfile.SMTPUser = Constants.SMTPExchangeServerUser.Receive(); MailProfile.SMTP Slaptažodis = Constants.SMTPExchangeUserPassword.Receive(); MailProfile.WaitTime = Constants.ServerWaitTime.Get(); Paštas = New InternetMail(); Bandyti Mail.Connect(MailProfile); Išimčių ataskaita (" EXCHANGE: prisijungiant prie pašto profilio įvyko klaida! Keitimas nepavyko!" + ErrorDescription(), MessageStatus.VeryImportant); Grįžti; Pabaiga; Priešingu atveju Mail = Naujas paštas (); Bandymas Mail.Connect(); Išimčių ataskaita ("" + Klaidos aprašymas(), Pranešimo būsena.Labai svarbu); Grįžti; Pabaiga; Pabaiga; EndIf ; //Toliau pasirinkite visus mainų plano mazgus, išskyrus dabartinį, //kurių atributas Perform Exchange nustatytas. SelectionNodes = ExchangePlans.DistributedBase.Select(); Nors SelectNodes.Next() Loop If Not SelectNodes.PerformExchange Then Continue; EndIf; Jei SelectionNodes.Link = ExchangePlans.DistributedBase.ThisNode() Tada Continue; EndIf; ElectronicAddress = AbbrLP(SelectionNodes.ElectronicAddress); Jei el. pašto adresas = "" Tada tęsti; EndIf; //Naudodami XMLRecord ir MessageRecord objektus, įrašome pakeitimus // pasirinktam mazgui xml faile. Mazgas = SelectionNodes.Link; XMLRecord = NewXMLRecord(); MessageFileName = LaikinasFileDirectory() + "Message_" + SutrumpintasLP(ExchangePlans.DistributedBase.ThisNode().Code) + "_ " + SutrumpintasLP(Node.Code) + ".xml "; EntryXML.OpenFile(MessageFileName); MessageRecord = ExchangePlans.CreateMessageRecord(); MessageRecord.StartRecord(XMLRecord, Node); ExchangePlans.WriteChanges(WriteMessage); WriteMessage.FinishRecord(); WriteXML.Close(); //Tada sukuriame naują raidę, pridedame prie jos gautą xml failą ir //siųsti adresu, nurodytu mazgo el. pašto adresu. Failas = Naujas failas(MessageFileName); Pranešimo tema = "1C:Exchange" + Abbr.LP(ExchangePlans.DistributedBase.ThisNode().Code) + "_" + Abbr.LP(Node.Code); Jei UseSMTP tada MailMessage = New InternetMailMessage; MailMessage.Subject = Pranešimo tema; MailMessage.Attachments.Add(MessageFileName, File.Name); Pašto žinutė.Gavėjai.Pridėti(El. pašto adresas); Paštas.Siųsti(MailMessage); Else MailMessage = naujas pašto pranešimas; MailMessage.Subject = Pranešimo tema; MailMessage.Attachments.Add(MessageFileName); Pašto žinutė.Gavėjai.Pridėti(El. pašto adresas); Paštas.Siųsti (pašto žinutė, klaidinga); EndIf; Jei Constants.OutputMessages.Get() tada Report(" EXC: apsikeisti pranešimu į mazgą" + Node.Name + " išsiųstas! ", MessageStatus.Information); EndIf; DeleteFiles (MessageFileName); EndCycle; Mail.Disconnect (); EndProcedure

Rekomenduoju prie sąsajos pridėti papildomą skydelį, kurio vienu iš mygtukų galite paskambinti
procedūras. Dabar belieka paleisti Enterprise, sukonfigūruoti periferinės informacijos saugos el. pašto adresą,
pažymėkite langelį „Keisti“, spustelėkite procedūros mygtuką skydelyje ir paleiskite, kad gautumėte laiškus
nurodytas el adresus. Turėtumėte gauti laišką su tema „1C:Exchange AA_BB“ ir pridėtą failą
"Pranešimas_AA_BB.xml".

Taigi, pusė darbo atlikta: išmokėme G8 siųsti RDB mainų pranešimus el. paštu
Paštas.

3 veiksmas. Gaukite naujinimus el. paštu ir įrašykite juos į informacijos apsaugą

Dabar atlikime atvirkštinę procedūrą: gaukite atnaujinimus el. paštu ir įrašykime juos į informacijos apsaugą.

Prie seanso parametrų pridėkite Būlio tipo parametrą „Vykdomas paskirstytasis duomenų bazių mainas“. Toliau paaiškinsiu
paskyrimas.

Prie bendro modulio rbDistributedBase pridėkime šią procedūrą:

Procedūra rbGetExchangeMessages() Eksportuoti UseSMTP = Constants.UseSMTPExchange.Receive(); //kaip ir procedūroje rbSendExchangeMessages(), pirmiausia sukurkite objektą Paštas, jei naudojamas SMTP, tada MailProfile = Naujas InternetMailProfile; MailProfile.POP3ServerAddress = Constants.POP3ExchangeServerAddress.Get(); MailProfile.POP3Port = Constants.POP3ExchangeServerPort.Get(); MailProfile.User = Constants.POP3ExchangeServerUser.Get(); MailProfile.Password = Constants.UserPasswordPOP3Exchange.Receive(); MailProfile.WaitTime = Constants.ServerWaitTime.Get(); Paštas = New InternetMail(); Bandyti Mail.Connect(MailProfile); Išimčių ataskaita (" EXCHANGE: prisijungiant prie pašto profilio įvyko klaida! |Keisti nepavyko!", MessageStatus.VeryImportant); Return; EndAttempt; Kitu atveju Mail = New Mail (); Bandyti Mail.Connect (); Išimčių ataskaita (" EXCHANGE: prisijungiant prie vartotojo el. pašto profilio įvyko klaida! |Keisti nepavyko!", MessageStatus.VeryImportant); Return; EndAttempt; EndIf; MessageArray = naujas masyvas; Jei UseSMTP tada AllMessages = Mail.Select(False); Else AllMessages = Mail.Select(False, False); EndIf; //Iš visų raidžių pasirinkite tas, kurių tema yra „1C:Exchange“. //Maža, bet svarbi pastaba: //Manome, kad visi gauti laiškai su tema „1C:Exchange“ yra skirti //tiksliai dabartiniam mazgui, //tie. kad skirtingi mainų mazgai turi SKIRTINGUS elektroninio pašto adresus. Kiekvienai žinutei iš visų pranešimų įjunkite „If Leo“ (Pranešimo tema, 8 )<>„1C:Exchange“ Tada tęskite; EndIf; TryMessageArray.Add(Message); //Išsaugokite el. laiško priedą diske. //Kol kas kruopštų priedo patikrinimą paliksime užkulisiuose. Priedas = Message.Attachments; MessageFileName = LaikinasFileDirectory() + Attachment.Name; ExchangeData = Attachment.Data; ExchangeData.Write(MessageFileName); //Naudodami XMLReader ir MessageReader objektus, skaitome duomenis //atnaujinimai iš išsaugoto failo. Prieš įrašydami informacijos saugos atnaujinimus //nustatykite seanso parametrą Distributed Database Exchange in Progress į True. //Tada perskaitome informacijos saugumo pakeitimus: Exchange Plans.ReadChanges(ReadMessage). //Tuo pačiu pranešimus išsaugome masyve, kad vėliau galėtume ištrinti visus iš karto. ReadXML = naujas ReadXML(); ReadXML.OpenFile(MessageFileName); MessageReader = ExchangePlans.CreateMessageReader(); ReadMessage.StartReading(ReadingXML); SessionParameters.DistributedBaseExchange vyksta = True; ExchangePlans.ReadChanges(ReadMessage); Skaityti pranešimą.Baigti skaitymą(); ReadXML.Close(); Jei Constants.OutputExchangeMessages.Get() tada Report(" KEITIMAS: priimta keistis duomenimis",MessageStatus.Information); EndIf; Išimčių ataskaita (" EXCHANGE: klaida gaunant mainų duomenis:" + ErrorDescription(), MessageStatus.VeryImportant); EndAttempt; //Pabaigus keitimosi duomenų skaitymą, grįžkite //Seanso parametras DistributedBase Exchange yra vykdomas yra nustatytas į False. SessionParameters.DistributedBaseExchange vyksta = False; Bandymas ištrinti failus (MessageFileName); Išimtis //Jei nepavyks, gerai EndAttempt; EndCycle; Jei naudojate SMTP, tada Mail.DeleteMessages(MessageArray); EndIf; Paštas.Atjungti(); Procedūros pabaiga

Dabar apie tai, kam reikalingas Distributed Database Exchange In Progress seanso parametras.
Faktas yra tas, kad nuskaitant duomenis naudojant ExchangePlans.ReadChanges() metodą, iškviečiamas
modifikuotų / pridėtų objektų įvykio BeforeWrite() tvarkyklės procedūros. O jei įrašant
bet kurio objekto tvarkyklės procedūroje parametras Atmetimas bus nustatytas į True, tada
vykdant ExchangePlans.ReadChanges() atsiras išimtis ir atitinkamai mainai
nebus įvykdytas. Seanso parametro DistributedBase Exchange In Progress reikšmė gali būti
tvarkytojo procedūrose, siekiant išvengti tokios situacijos.
Išleidus 12 leidimą (nors galiu klysti dėl versijų), šio metodo aktualumas yra šiek tiek
pasenusiA, nes objektai dabar turi nuosavybę Keitimosi parinktys, iš kurio, savo. Ši nuosavybė nustatyta į True when
duomenų išsaugojimas naudojant bendrinimo planą.

Dabar savo skydelio sąsajoje pridedame kitą mygtuką, ant kurio pakabiname skambutį
procedūras. Paleiskime Enterprise ir mėgaukimės.
Beveik viskas padaryta, belieka tik šiek tiek: kad mūsų procedūros vyktų automatiškai.
4 veiksmas. Automatinio mainų nustatymas

Taigi, mes beveik arti savo istorijos tikslo. Liko tik vienas žingsnis: paleisti
automatiškai atlieka keitimo procedūras. Pradėkime.

Pridėkime konstantą, DistributedBase Autoexchange Interval, tipo Number(5,0).

Prie vartotojo nustatymų pridėkime parametrą Perform Distributed Database Exchange. Dėl konfigūracijos
"Prekybos valdymas" atliekamas taip:

* Į charakteristikų tipų planą „Vartotojo nustatymai“ pridėsime iš anksto nustatytą
charakteristika Atlikti keitimąsi Būlio tipo paskirstytomis duomenų bazėmis.
* Katalogo elemento „Vartotojai“ formoje nustatome šio parametro pakeitimą (kaip taip
galima atlikti formos modulyje, pagal analogiją su kitais parametrais).

Pridėkite procedūrą prie rbDistributedBase modulio:

Procedūra rbPerformExchange(user) Export If npGetDefaultValue(user, "") Tada rbGetExchangeMessages(); rbSendExchangeMessages(); EndIf; Procedūros pabaiga

į programos modulį:

Procedūra CheckConnectionAutoExchange() Eksportuoti, jei npGetDefaultValue(chCurrentUser, " Vykdykite keitimąsi paskirstytomis duomenų bazėmis") Ir Constants.DistributedBaseAutoExchangeInterval.Get() > 0 Tada ConnectWaitHandler(" Vykdykite automatinį mainą", Constants.DistributedBaseAutoExchangeInterval.Get()); Kitu atveju DisableWaitHandler (" Vykdykite automatinį mainą"); EndIf; EndProcedure procedūra ExecuteAutoExchange() Eksportuoti rbExchange(glCurrentUser); DisableWaitHandler (" Vykdykite automatinį mainą"); Jei npGetDefaultValue(chCurrentUser, " Vykdykite keitimąsi paskirstytomis duomenų bazėmis") Ir Constants.DistributedBaseAutoExchangeInterval.Get() > 0 Tada ConnectWaitHandler(" Vykdykite automatinį mainą", Constants.DistributedBaseAutoExchangeInterval.Get()); EndIf; EndProcedure procedūra DisableAutoExchange() Eksportuoti DisableWaitHandler(" Vykdykite automatinį mainą"); Pabaigos procedūra

Į programos modulio procedūrą WhenSystemStart() pridėkite šias eilutes:

(prijungus komercinę įrangą)
...
SessionParameters.DistributedBaseExchange vyksta = False; CheckAutoExchangeConnection();

Prie skydelio pridėkime dar kelis mygtukus, kad galėtume valdyti procesą: prie vieno pridėkite procedūrą
CheckConnectAutoExchange(), kita vertus - DisableAutoExchange()

Paleidžiame įmonę, sukonfigūruojame vartotojo ypatybes ir automatinio keitimo intervalą ir viskas!

Dabar, įvedant į duomenų bazę pagal šį labiausiai sukonfigūruotą vartotoją, bus paleista tvarkytuvė
laukia ExecuteAutoExchange(). Žinoma, jūs taip pat turite sukonfigūruoti vartotoją periferinėje duomenų bazėje
mainams.

Dar viena nedidelė, bet svarbi pastaba:

Visame grožyje, kurį sukūrėme, yra viena problema: konfigūracijos pasikeitimas. At
Kai periferinė bazė gauna pranešimą su konfigūracijos pakeitimais, ji
bus priimtas, bet bus išimtis. Tokiu atveju pakeista konfigūracija bus
pakrautas. Norėdami atnaujinti duomenų bazės konfigūraciją, turite pašalinti visus vartotojus, eikite į
konfigūratorių ir atnaujinkite duomenų bazės konfigūraciją (prieš tai darant naudinga įkelti duomenis). KAM
Deja, tai būtinas blogis. Galite šiek tiek palengvinti savo gyvenimą parašydami trumpą šikšnosparnio failą
kažkas panašaus į tai:

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

Ir dar viena pastaba:

Deja, xml failai nėra kompaktiški, bet, laimei, puikiai suglaudinti. Gali būti
pranešimų siuntimo ir gavimo procedūros, pridėti failų supakavimą ir išpakavimą. COLOR="#666666">Tai galima padaryti naudojant išorinį archyvatorių arba VK, pvz., Wheel.AddIn
(http://1c.proclub.ru/modules/mydownloads/personal.php?cid=81&lid=2714) .
Išleidus 10-ąjį (atrodo) leidimą, ankstesnis pasiūlymas yra šiek tiek pasenęs, nes platforma
Buvo įmontuoti failų glaudinimo įrankiai, naudojant ZIP algoritmą. Tie. dabar galima suspausti failus
nenaudojant VK.

Automatizuotos valdymo sistemos dažniausiai susideda iš atskirų duomenų bazių ir dažnai turi geografiškai paskirstytą struktūrą. Tuo pačiu metu teisingai įgyvendintas keitimasis duomenimis yra būtina efektyvaus tokių sistemų veikimo sąlyga.

Pradiniam mainų nustatymui gali prireikti daugybės veiksmų, ne tik programavimo, bet ir konsultacijų, net jei kalbame apie vienarūšius šaltinius, kaip tai daroma su 1C:Enterprise platformos produktais. Kodėl 1C biržos nustatymas (arba, kaip dar vadinamas, duomenų sinchronizavimas 1C 8.3) gali tapti daugiausiai laiko ir brangiausia integracijos projekto užduotimi, apžvelgsime šiame straipsnyje.

Keitimasis duomenimis 1C aplinkoje leidžia:

  • Pašalinkite dvigubą dokumentų įvedimą;
  • Automatizuoti susijusius verslo procesus;
  • Optimizuoti paskirstytų skyrių sąveiką;
  • Operatyviai atnaujinti duomenis apie skirtingų padalinių specialistų darbą;
  • „Atskirkite“ skirtingas apskaitos rūšis.*

*Tais atvejais, kai vienos apskaitos rūšies duomenys labai skiriasi nuo kitos, būtina užtikrinti informacijos konfidencialumą ir „apriboti“ informacijos srautus. Pavyzdžiui, keičiantis duomenimis tarp 1C UT ir 1C Accounting nereikia kelti valdymo duomenų į reguliavimo apskaitos duomenų bazę, t.y. 1C sinchronizavimas čia bus nebaigtas.

Jei įsivaizduosime standartinį pirminių duomenų mainų įgyvendinimo procesą, kai bent vienas iš jo objektų yra 1C produktas, galime išskirti šiuos etapus:

  • Mainų sudėties derinimas;
  • Transporto apibrėžimas (keitimosi protokolai);
  • Taisyklių nustatymas;
  • Planavimas.

1C mainų sudėties identifikavimas

Keitimosi objektai gali būti skirstomi į „šaltinį“ ir „imtuvą“. Tuo pačiu metu jie gali vienu metu atlikti du vaidmenis, kurie bus vadinami abipusiais mainais. Šaltinis ir paskirties vieta nustatomi logiškai, atsižvelgiant į poreikį arba sistemos funkcionalumą.*

*Pavyzdžiui, integruojant „WA: Financier“ – finansinės apskaitos tvarkymo ir iždo procesų valdymo sprendimą, sukurtą „1C:Enterprise“ pagrindu, „WiseAdvice“ ekspertai rekomenduoja jį kaip pagrindinę sistemą. Taip yra dėl to, kad yra kontrolės priemonių, kad būtų laikomasi taikymo politikos taisyklių ir atitinkamai užtikrintas sprendimo veiksmingumas.

Toliau, remiantis gautais ir užfiksuotais vartotojų reikalavimais, sudaromas keičiamų duomenų sąrašas, nustatomas jo kiekis, keitimosi dažnumo reikalavimai, darbo su klaidomis ir išskirtinių situacijų (kolizijų) valdymo procesas.

Tame pačiame etape, atsižvelgiant į esamų sistemų parką ir įmonės struktūrą, nustatomas mainų formatas:

Paskirstyta informacinė bazė

  • RIB reiškia keitimąsi tarp identiškų 1C duomenų bazės konfigūracijų su aiškia „pagrindinio-pavaldžio“ valdymo struktūra kiekvienai mainų porai. Kaip technologijų platformos elementas, RIB, be duomenų, gali perduoti duomenų bazės konfigūracijos pakeitimus ir administracinę informaciją (bet tik iš pagrindinio į pavaldinį).

Universalus duomenų mainai 1C

  • Mechanizmas, leidžiantis sukonfigūruoti keitimąsi 1C duomenų bazėmis tiek naudojant konfigūracijas 1C:Enterprise platformoje, tiek su trečiųjų šalių sistemomis. Keitimasis vykdomas perkeliant duomenis į universalų xml formatą pagal „Maitų planus“.

Įmonės duomenys

  • Naujausia 1C plėtra, skirta įgyvendinti duomenų mainus xml formatu tarp produktų, sukurtų platformoje 1C:Enterprise su bet kokiomis automatizavimo sistemomis. „EnterpriseData“ naudojimas supaprastina su mainais susijusius pakeitimus. Anksčiau, kai į sistemą buvo įtraukta nauja konfigūracija, reikėjo įdiegti duomenų importavimo ir eksportavimo mechanizmą tiek jai, tiek esamoms sistemoms. Dabar sistemoms, palaikančioms EnterpriseData, nereikia jokių modifikacijų, turi tik vieną įėjimo-išėjimo tašką.

Transporto apibrėžimas (keitimosi protokolai)

Sistemai 1C:Enterprise 8 platformoje suteikiamos plačios galimybės organizuoti mainus su bet kokiais informacijos ištekliais, naudojant visuotinai priimtus universalius standartus (xml, tekstinius failus, Excel, ADO ryšį ir kt.). Todėl, nustatydami keitimosi duomenų transportą, turėtumėte pasikliauti trečiosios šalies sistemos duomenų bazės galimybėmis.

Katalogų sinchronizavimas

Pagrindinis efektyvaus katalogų sinchronizavimo principas yra vieno įėjimo taško buvimas. Bet jei kalbame apie darbą su katalogais, kurie istoriškai buvo užpildyti pagal skirtingas taisykles, būtina aiškiai apibrėžti sinchronizavimo laukus, kad mainai būtų „bendro vardiklio“.*

*Šiame etape gali prireikti normalizuoti atskaitos duomenis duomenų šaltinio pusėje. Priklausomai nuo katalogų būklės ir jų apimties, elementų lyginimo, klaidų ir dublikatų atpažinimo, nustatymo, trūkstamų laukų užpildymo ir sinchronizavimo laukų priskyrimo procese gali prireikti visos ekspertų grupės darbo. integratoriaus (pagrindinių duomenų normalizavimo technikos savininko) dalies ir iš kliento pusės.

Taisyklių nustatymas

Galimybė rodyti duomenis iš šaltinio sistemų imtuvuose priklauso nuo teisingai apibrėžtų mainų taisyklių. Taisyklės, pateiktos xml formatu, reglamentuoja pagrindinių šaltinio-imtuvo objektų detalių atitikimą. 1C: Data Conversion sprendimas skirtas automatizuoti vienkartinių ir nuolatinių mainų įgyvendinimo taisyklių kūrimą.

Garantuoja, kad mainų plano metu nebus prarasti duomenys. Tai yra neatskiriama bet kokios 1C:Enterprise platformos konfigūracijos dalis, kuri visiškai aprašo 1C apsikeitimo procedūrą: duomenų sudėtį (dokumentus su „identifikuojančia“ detale) ir mazgus (imtuvo-siųstuvo informacijos bazes), taip pat RIB aktyvavimą. pasirinktos mainų kryptys.

Bet koks į biržos planą įrašytų duomenų pasikeitimas yra fiksuojamas ir gauna „pakeisto“ ženklą. Kol pakeisti duomenys nesutaps vieni su kitais imtuvo-siųstuvo mazguose, ženklas nebus nustatytas iš naujo, o sistema siųs valdymo pranešimus į abu mazgus. Įkėlus duomenis ir patvirtinus visišką jų atitiktį abiejose sistemose, ženklas nustatomas iš naujo.

Keitimo grafikas 1C

Norint automatizuoti reguliarius mainus, nustatomas duomenų įkėlimo dažnis. Keitimosi dažnumas priklauso nuo poreikio ir techninių galimybių. Be to, 1C:Enterprise platformos konfigūracijos leidžia konfigūruoti duomenų mainus, kai įvyksta įvykis.

Atsižvelgdami į standartinį mainų diegimo procesą, atkreipkime dėmesį į veiksnius, kuriuos reikės patobulinti įvairiais etapais:

  • Nestandartinės, labai modifikuotos duomenų bazių konfigūracijos;
  • Įvairios 1C:Enterprise platformos versijos;
  • Konfigūracijos versijos, kurios ilgą laiką nebuvo atnaujintos;
  • Mainų objektai, kurie anksčiau buvo modifikuoti;
  • Nestandartinių mainų taisyklių poreikis;
  • Labai skirtingas esamų žinynų detalių rinkinys ir sudėtis.

Kadangi net standartiniams veiksmams pirminiams duomenų mainams įgyvendinti reikia ekspertų žinių, juos rekomenduojama atlikti dalyvaujant 1C specialistams. Tik atlikę visus aukščiau aprašytus veiksmus turėtumėte pereiti prie mainų nustatymo konfigūracijoje. Pažvelkime į duomenų bazių integravimą naudodami 1C:UPP ir 1C:Retail pavyzdį (keitimasis su 1C:UT nustatomas pagal tą pačią schemą). Į standartinę sinchronizaciją taip pat įtraukta SCP - SCP mainai, būdingi didelio masto automatizavimo sistemoms didžiausiose pramonės įmonėse.

Submeniu „Paslauga“ pasirinkite „Duomenų keitimasis su produktais platformoje...“ (pasirinkus tiesioginį apsikeitimą su „Mažmeninė prekyba“ dažnai atsiranda klaidų COM objektų lygyje). Atkreipkite dėmesį į paslaugos pranešimą „Ši funkcija nepasiekiama“.


Norėdami išspręsti šią problemą, turite pasirinkti "Konfigūruoti ryšius"


...ir pažymėkite langelį. Tada nekreipkite dėmesio į klaidos pranešimą.


Duomenų sinchronizavimo nustatymuose pasirinkite „Sukurti mainą su „Mažmeninė prekyba“...



Prieš konfigūruodami ryšio nustatymus per vietinį arba tinklo katalogą, įsitikinkite, kad diske yra vietos katalogui. Nors, kaip taisyklė, ji neužima daugiau nei 30-50 MB, išimtiniais atvejais gali prireikti iki 600 MB. Galite sukurti reikiamą katalogą tiesiai iš konfigūratoriaus.



Kai jungiamės per tinklo katalogą, mes ignoruojame pasiūlymą konfigūruoti ryšį per FTP adresą ir el. paštu spustelėdami „Kitas“.


Nustatymuose rankiniu būdu įvedame priešdėlius – duomenų bazių simbolius (dažniausiai BP, UPP, RO), nustatome taisykles ir duomenų įkėlimo pradžios datą. Dokumentų pavadinime bus nurodytas priešdėlis, nurodantis duomenų bazę, kurioje jie buvo sukurti. Jei įkėlimo taisyklės neredaguojamos, duomenys bus įkeliami pagal numatytuosius nustatymus pagal visus galimus parametrus.



Sukuriame „Mažmeninės prekybos“ mainų nustatymų failą, kad nekartotume veiksmų. Jei reikia nedelsiant išsiųsti duomenis po sinchronizavimo nustatymo, pažymėkite langelį.


Norėdami automatizuoti mainų procesą, turite sudaryti tvarkaraštį.


Meniu „Mažmeninė prekyba“.


Pažymėkite langelį ir pasirinkite „Sinchronizavimas“.


„Atvirkštinę“ sąranką atliekame pasirinkdami Gamybos įmonės valdymą.




Įkelkite UPP sukurtą nustatymų failą.


Uždedame varnelę, sistema automatiškai paima adresą.





Mes elgiamės taip pat, kaip ir UPP.









Patikrinimo duomenų palyginimas (Rekomenduojama atlikti rankinį duomenų palyginimą parengiamajame etape, nes šis darbas gali tapti daugiausiai darbo jėgos keitimo procese). Palyginimo langas atidaromas dukart spustelėjus pelę.



Jei sinchronizuojant įvyko klaida, „Details...“ bus pakeistas į „Niekada...“.


„Išsami informacija...“ atidaro žurnalą su atnaujinta biržos informacija.


Paruošta.

Visiškai automatinio keitimosi duomenimis organizavimą svarstau naudojant 1C pavyzdį: Gamybos įmonės valdymo (PEM) mainai ==> 1C: Apskaita (BP) 2.0 naudojant savavališkas mainų taisykles.

Yra 2 duomenų bazės: 1C:UPP ir Enterprise Accounting 2.0. SCP sudaroma nemažai dokumentų: Prekių ir paslaugų pardavimas, Prekių ir paslaugų gavimas, Sąskaitos. Apskaitos skyriuje kuriami dokumentai apie lėšų judėjimą: CRS, PKO ir mokėjimai.

Šių konfigūracijų dokumentų struktūra šiek tiek skiriasi, todėl savavališkos keitimosi taisyklės buvo parašytos naudojant „Data Conversion 2.1“ produktą.

1 ŽINGSNIS. Keitimosi mazgų nustatymas.

Keitimuisi duomenimis bus naudojamas „Pilnas“ mainų planas. Norėdami tai padaryti, eikite į BP operacijos ==> Mainų planai ==> Visas.

Mainų plane VISADA yra vienas iš anksto nustatytas mainų mazgas. Čia yra trys punktai:

1) Mainų sąrankoje negalite naudoti iš anksto nustatyto mazgo

2) Pagal numatytuosius nustatymus šio mazgo kodas nenurodytas ir turi būti nurodytas

3) duomenų bazėse, tarp kurių organizuojamas keitimasis duomenimis, Iš anksto nustatytų mazgų kodai turi nesutapti, tai sukels klaidą.

„Pilname“ mainų plane BP atliksime šiuos veiksmus:

1) Nurodome iš anksto nustatyto mazgo kodą ir pavadinimą. Tarkime, pavadinimas = "Iš anksto nustatytas", kodas = 001.

2) Sukurkime naują mainų mazgą, pavadinkime jį „UPP“ ir suteikime jam kodą 003.

Panašiai atidarykite mainų planą „Visas“ 1C: UPP ir atlikite šiuos veiksmus:

1) Nurodome iš anksto nustatyto mazgo kodą ir pavadinimą. Pavyzdžiui, pavadinimas = "iš anksto nustatytas", kodas = "002".

2) Sukurkime naują mainų mazgą, pavadinkime jį „BP“ ir suteikime jam kodą 003.

UPP ir BP duomenų bazėje neapibrėžtų mainų mazgų KODAI turi sutapti.

2 ŽINGSNIS. Sukurkite automatinio duomenų mainų nustatymus.

UPP duomenų bazėje „Pilna“ sąsajoje. Meniu „Paslauga“ ==> „Kiti duomenų mainai“ ==> „Visi apsikeitimo duomenimis nustatymai“.

Atsidariusioje formoje pasirinkite „Paskirstytos informacijos bazės“ ir spustelėkite mygtuką „Pridėti“.

Pasirodžiusiame lange turite nurodyti parametro pavadinimą. Lauke „Mazgas“ turite pasirinkti „Pilną“ mainų planą ir nurodyti anksčiau sukurtą mainų mazgą.

Atsidariusiame dialogo lange turite pasirinkti savavališkas apsikeitimo duomenimis taisykles.

Lauke „Keliautojo tipas“ pasirinkite „Keisti per ryšį su informacine baze“ ir nurodykite ryšio parametrus: Infobase tipas, platformos versija, kelias arba adresas serveryje, vartotojas ir slaptažodis.

Tada turite eiti į skirtuką „Keisti pagal taisykles“ ir spustelėti mygtuką „Įkelti nustatymus“. Keitimosi taisyklėse neturėtų būti taisyklės su „atsitiktinės užklausos“ atrankos metodu. Dėl to bus padaryta klaida

Atsisiuntę nustatymus galite išsaugoti nustatymus ir pabandyti atsisiųsti duomenis. Norėdami tai padaryti, turite pakeisti bet kurį informacinės sistemos objektą, nurodytą įkėlimo nustatymuose, ir paspausti formos skydelyje esantį mygtuką „Keisti“.

3 ŽINGSNIS. Duomenų mainų nustatymas.

Norėdami nustatyti automatinį apsikeitimą duomenimis, turite eiti į skirtuką „Automatinis apsikeitimas“ ir spustelėti mygtuką „Pridėti“. Atsidariusiame lange galite nustatyti keitimosi tvarkaraštį (laiką, dažnumą) arba duomenų mainus įvykus įvykiui (pavyzdžiui, vartotojui prisijungus prie sistemos).

Dabar galite patikrinti sukurtus nustatymus