26.12.2019

1s konverzija podataka 2.0. Uvijek postoji više rješenja.


Migracija podataka između različitih konfiguracija nije trivijalan zadatak. Kao i uvijek, postoji nekoliko rješenja, ali nisu sva optimalna. Pokušajmo razumjeti nijanse prijenosa podataka i odabrati univerzalnu strategiju za rješavanje takvih problema.

Problem migracije podataka (radi se isključivo o proizvodima 1C kompanije) s jednog rješenja na drugo nije se pojavio jučer. Kompanija 1C je svjesna poteškoća s kojima se susreću programeri prilikom kreiranja migracija, pa se trudi da pomogne alatima.

Tokom razvoja platforme, kompanija je uvela niz univerzalnih alata, kao i tehnologije koje pojednostavljuju prijenos podataka. Oni su ugrađeni u sve. standardna rješenja a problem migracija između identičnih konfiguracija je generalno riješen. Pobjeda je još jednom potvrđena bliskom integracijom standardnih rješenja.

S migracijama između nestandardnih rješenja situacija je nešto složenija. Širok raspon tehnologija omogućava programerima da samostalno odaberu najbolji način rješavanja problema sa njihove tačke gledišta.

Razmotrimo neke od njih:

  • razmjena putem tekstualnih datoteka;
  • korištenje planova razmjene;
  • itd.

Svaki od njih ima svoje prednosti i nedostatke. Da rezimiramo, glavni nedostatak će biti opširnost. Nezavisna implementacija algoritama migracije opterećena je značajnim vremenskim troškovima, kao i dugim procesom otklanjanja grešaka. O daljoj podršci ovakvim odlukama ne želim ni da pričam.

Složenost i visoki troškovi održavanja naveli su kompaniju 1C da stvori univerzalno rješenje. Tehnologija koja vam omogućava da pojednostavite razvoj i podršku migracijama što je više moguće. Kao rezultat toga, ideja je implementirana u obliku posebne konfiguracije - "Konverzija podataka".

Konverzija podataka - standardno rješenje, samokonfiguracija. Svaki korisnik sa ITS:Prof pretplatom može preuzeti ovaj paket potpuno besplatno sa stranice korisničke podrške ili ITS diska. Instalacija se izvodi na standardni način - kao i sva druga standardna rješenja iz 1C.

Sada malo o prednostima rješenja. Počnimo s najvažnijim - svestranošću. Rješenje nije prilagođeno određenim konfiguracijama/verzijama platforme. Podjednako dobro radi i sa standardnim i sa samopisnim konfiguracijama. Programeri dobijaju univerzalnu tehnologiju i standardizovan pristup kreiranju novih migracija. Svestranost rješenja omogućava vam da pripremite migracije čak i za platforme koje nisu 1C:Enterprise.

Drugi podebljani plus su vizuelna pomagala. Jednostavne migracije se kreiraju bez programiranja. Da, da, bez ijedne linije koda! Samo zbog toga vrijedi potrošiti vrijeme na učenje tehnologije jednom, a zatim opetovano koristiti neprocjenjive vještine.

Treća prednost koju bih istakao je odsustvo ograničenja u distribuciji podataka. Programer sam bira način isporuke podataka konfiguraciji prijemnika. Dostupne su dvije opcije iz kutije: učitavanje u xml datoteku i direktna veza sa bazom podataka (COM/OLE).

Učenje arhitekture

Već znamo da konverzija podataka može učiniti čuda, ali još nije jasno koje su tehničke prednosti. Prva stvar koju treba naučiti je da se svaka migracija (konverzija) podataka zasniva na pravilima razmjene. Exchange pravila - obična xml datoteka sa opisom strukture u koju će se podaci učitavati iz IB-a. Obrada usluge koja vrši upload/download podataka analizira pravila razmjene i na osnovu njih vrši prijenos. Tokom preuzimanja, dešava se obrnuti proces.

“KD” konfiguracija je vrsta vizualnog konstruktora s kojim programer kreira pravila razmjene. Ne zna kako da učita podatke. Za to je odgovorna dodatna eksterna servisna obrada uključena u komplet za distribuciju CD-a. Ima ih nekoliko (XX u nazivu datoteke je broj verzije platforme):

  • MDXXExp.epf- obrada vam omogućava da otpremite opis strukture infobaze u xml datoteku. Opis strukture se učitava na CD radi dalje analize i kreiranja pravila razmjene.
  • V8ExchanXX.epf- postavlja/prekida podatke iz infobaze u skladu sa pravilima razmjene. U većini tipičnih konfiguracija, obrada je dostupna iz kutije (pogledajte stavku menija „Usluga“). Obrada je univerzalna i nije vezana ni za kakve specifične konfiguracije/pravila.

Dobro, sada na osnovu svega gore navedenog, hajde da definišemo faze razvoja nove konverzije:

  1. Definicija zadatka. Potrebno je jasno razumjeti koje podatke treba prenijeti (iz kojih konfiguracijskih objekata) i, što je najvažnije, gdje se prenijeti.
  2. Priprema opisa konfiguracijskih struktura (izvor/prijemnik) za naknadno učitavanje na CD. Zadatak je riješen servisnom obradom MDXXExp.epf.
  3. Učitavanje pripremljenih opisa struktura u IS.
  4. Kreiranje pravila razmjene pomoću vizualnih sredstava CD-a.
  5. Učitavanje/preuzimanje prema kreiranim pravilima konverzije podataka korištenjem obrade V8ExchanXX.epf.
  6. Otklanjanje grešaka u pravilima razmene (ako je potrebno).

Najjednostavnija konverzija

Za demonstraciju su nam potrebne dvije raspoređene konfiguracije. Odlučio sam da se zaustavim na opciji: “Upravljanje trgovinom” 10. izdanje i malo samostalno napisano rješenje. Zadatak će biti prijenos podataka iz tipične UT konfiguracije. Radi kratkoće, nazvat ćemo samopisno rješenje “Primalac”, a upravljanje trgovinom “Izvor”. Počnimo rješavati problem prijenosom elemenata direktorija "Nomenklatura".

Prije svega, pogledajmo shemu konverzije podataka i ponovo pročitamo listu radnji koje je potrebno izvršiti. Zatim pokrećemo konfiguraciju „Izvor“ i u njoj otvaramo servisnu obradu MD82Exp.epf.

Interfejs za obradu ne blista sa obiljem podešavanja. Korisnik samo treba da navede tipove metapodataka objekata koji neće spadati u opis strukture. U većini slučajeva ove postavke nije potrebno mijenjati, jer nema posebne svrhe u istovaru kretanja u registrima akumulacije (kao primjer).

Ispravnije je formirati kretanje tokom držanja dokumenata u prijemniku. Sva kretanja će biti izvršena samim dokumentom nakon prijenosa. Drugi argument u odbranu zadanih postavki je smanjenje veličine učitane datoteke.

Neki dokumenti (posebno u tipičnim konfiguracijama) formiraju kretanja u više registara. Rasterećenje sve ove ekonomije će rezultirati XML datoteku učiniti prevelikom. Ovo može otežati kasniji transport i utovar u bazu prijemnika. Što je datoteka podataka veća, potrebno je više RAM-a za obradu. Tokom moje prakse, slučajno sam naišao na nepristojno velike fajlove za otpremanje. Takvi fajlovi su potpuno odbili da se raščlane standardnim sredstvima.

Dakle, ostavljamo sve zadane postavke i učitavamo opis konfiguracije u datoteku. Isti postupak ponavljamo i za drugu bazu.

Otvorite CD i izaberite iz glavnog menija “Direktori” -> “Konfiguracije”. Direktorij pohranjuje opise struktura svih konfiguracija koje se mogu koristiti za kreiranje konverzija. Opis konfiguracije učitavamo jednom, a zatim ga možemo više puta koristiti za kreiranje različitih konverzija.

U prozoru imenika pritisnite dugme “ Dodati” i u prozoru koji se pojavi odaberite datoteku s opisom konfiguracije. Označite kućicu „Prenesi u novu konfiguraciju“ i kliknite na dugme „Izvrši otpremanje“. Slične radnje izvodimo s opisom strukture druge konfiguracije.

Sada je sve spremno za kreiranje pravila razmjene. U glavnom CD meniju izaberite “Reference” -> “Konverzije”. Dodavanje novog elementa. U prozoru za kreiranje nove konverzije potrebno je navesti: konfiguraciju izvora (odaberite UT) i konfiguraciju prijemnika (odaberite "Prijemnik"). Zatim otvorite karticu "Napredno" i popunite sljedeća polja:

  • naziv datoteke s pravilima razmjene - kreirana pravila razmjene će biti sačuvana pod ovim imenom. Naziv datoteke se može promijeniti u bilo kojem trenutku, ali je najbolje da ga postavite sada. Ovo će uštedjeti vrijeme u budućnosti. Nazvao sam pravila za demo: "rules-ut-to-priemnik.xml".
  • name - naziv konverzije. Ime može biti bilo šta, ograničio sam se na „Demo. UT do prijemnika”.

To je to, kliknite na "OK". Odmah se ispred nas pojavljuje prozor koji traži da automatski kreiramo sva pravila. Pristanak na tako primamljivu ponudu će čarobnjaku dati naredbu da automatski analizira opis odabranih konfiguracija i samostalno generiše pravila razmjene.

Stavimo tačke na "i" odmah. Gospodar neće moći generirati ništa ozbiljno. Međutim, tu mogućnost ne treba zanemariti. Ako trebate uspostaviti razmjenu između identičnih konfiguracija, tada će vam usluge čarobnjaka biti od velike pomoći. Za naš primjer, ručni način rada je poželjniji.

Pogledajmo bliže prozor "Postavke pravila razmjene". Interfejs može izgledati pomalo zbunjujuće - veliki broj kartice punjene kontrolama. Zapravo, nije sve tako teško, na ovo ludilo se počnete navikavati nakon nekoliko sati rada sa aplikacijom.

On ovoj fazi zanimaju nas dvije kartice: “Pravila konverzije objekata” i “Pravila za prijenos podataka”. Na prvom, moramo postaviti pravila podudaranja, tj. usporediti objekte dvije konfiguracije. Na drugom odredite moguće objekte koji će biti dostupni korisniku za istovar.

U drugoj polovini kartice “Pravila konverzije objekata” nalazi se dodatni panel sa dvije kartice: “Konverzija svojstava” i “ Pretvorba vrijednosti". Prvi će odabrati svojstva (rekvizite) odabranog objekta, a drugi je neophodan za rad s unaprijed definiranim vrijednostima (na primjer, unaprijed definirani elementi rječnika ili elementi nabrajanja).

Odlično, sada kreirajmo pravila konverzije za direktorije. Ovu radnju možete izvesti na dva načina: koristite čarobnjaka za sinkronizaciju objekata (kliknite na “”) ili ručno dodajte podudaranja za svaki objekt.

Da bismo uštedjeli prostor, koristit ćemo prvu opciju. U prozoru čarobnjaka poništite potvrdni okvir " Dokumentacija” (zanimaju nas samo imenici) i proširite grupu “ Referentne knjige". Pažljivo skrolujemo kroz listu i gledamo imena direktorijuma koji se mogu porediti.

U mom slučaju postoje tri takva imenika: Nomenklatura, Organizacije i Skladišta. Postoji i direktorij Clients koji obavlja isto semantičko opterećenje kao “ Counterparties” iz konfiguracije “ UT". Istina, majstor ih nije mogao uporediti zbog odličnih imena.

Ovaj kvar možemo sami popraviti. Pronađite u prozoru Mapiranje objekata» priručnik « Klijenti“, a u koloni “Izvor” odaberite referentnu knjigu “Counterparties”. Zatim označite kućicu u koloni "Vrsta" i kliknite na dugme "U redu".

Čarobnjak za sinhronizaciju objekata će od vas zatražiti da automatski kreirate pravila za pretvaranje svojstava svih odabranih objekata. Nekretnine će biti usklađene po imenu, a za našu demonstraciju ovo će biti sasvim dovoljno, slažemo se. Sljedeće pitanje će biti prijedlog za kreiranje pravila za otpremanje. Hajde da pristanemo na to.

Osnova za pravila razmjene je spremna. Izabrali smo objekte za sinhronizaciju, a pravila za konverziju svojstava i pravila za učitavanje su kreirana automatski. Spremimo pravila razmjene u datoteku, a zatim otvorimo IB “Source” (u mom slučaju to je UT) i započnemo obradu usluge u njemu V8Exchan82.epf.

Prije svega, u prozoru za obradu odaberite pravila razmjene koja smo kreirali. Na pitanje učitavanja pravila odgovaramo potvrdno. Obrada će analizirati pravila razmjene i izgraditi stablo istog imena za objekte dostupne za istovar. Za ovo stablo možemo postaviti sve vrste filtera ili razmjenjivati ​​čvorove, promjenom kojih trebamo odabrati podatke. Želimo učitati apsolutno sve podatke, tako da nema potrebe za instaliranjem filtera.

Nakon što je proces učitavanja podataka u datoteku završen, idite na IB " Prijemnik". U njemu otvaramo i obradu V8Exchan82.epf, samo ovaj put idemo na karticu “Učitavanje podataka”. Odaberite datoteku s podacima i kliknite na dugme "Prenesi". Sve, podaci su uspješno prebačeni.

Zadaci iz stvarnog svijeta

Prvi demo bi mogao biti pogrešan. Sve izgleda prilično jednostavno i logično. Zapravo to nije istina. IN pravi posao javljaju se problemi koje je teško ili potpuno nemoguće riješiti samo vizualnim sredstvima (bez programiranja).

Da se ne bih razočarao u tehnologiju, pripremio sam neke prave zadatke. Na njih ćete sigurno naići na poslu. Ne izgledaju tako trivijalno i tjeraju vas da pogledate konverziju podataka iz novog ugla. Pažljivo razmotrite predstavljene primjere i slobodno ih koristite kao isječke prilikom rješavanja stvarnih problema.

Zadatak broj 1. Popunite detalje koji nedostaju

Pretpostavimo da trebamo prenijeti direktorij “ Counterparties". Prijemnik ima sličnu referentnu knjigu „Klijenti“ za ovo. Potpuno je pogodan za skladištenje podataka, ali ima rekvizite “ Organizacija“, što vam omogućava da razdvojite druge strane po pripadnosti organizaciji. Podrazumevano, sve ugovorne strane moraju pripadati trenutnoj organizaciji (može se dobiti iz konstante istog imena).

Postoji nekoliko rješenja za problem. Razmotrićemo opciju popunjavanja rekvizita “ Organizacija"pravo u bazi" Prijemnik“, tj. u trenutku učitavanja podataka. Trenutna organizacija je pohranjena u konstanti, tako da nema prepreka za dobivanje ove vrijednosti. Otvorimo pravilo konverzije objekata (u daljem tekstu FRP) “ Klijenti” (dvaput kliknite na objekt) i u čarobnjaku za postavljanje pravila idite na odjeljak „Upravljači događajima“. Na listi rukovalaca nalazimo “ Nakon utovara”.

Hajde da opišemo kod za dobijanje trenutne organizacije sa naknadnim dodeljivanjem atributa. U trenutku kada se aktivira rukovalac „Nakon učitavanja“, objekat će biti u potpunosti formiran, ali još nije upisan u bazu podataka. Niko nam ne brani da ga promijenimo po vlastitom nahođenju:

Ako NIJE Object.ThisGroup onda Object.Organization = Constants.CurrentOrganization.Get(); EndIf;

Prije popunjavanja rekvizita" Organizacija» potrebno je provjeriti vrijednost atributa « Ova grupa". Za vodiča" Klijenti» postavljena je hijerarhijska zastavica, pa je neophodna provjera grupe. Slično se vrši popunjavanje svih detalja. Obavezno pročitajte pomoć za druge opcije rukovanja " AfterLoading". Na primjer, među njima postoji parametar " Odbijanje". Ako mu je dodijeljena vrijednost "True", tada objekt neće biti upisan u bazu podataka. Tako postaje moguće ograničiti objekte za pisanje u vrijeme učitavanja.

Zadatak broj 2. Detalji u registru informacija

U priručniku" Counterparties"UT konfiguracija, postoje detalji" Kupac" i " Provajder". Oba rekvizita su tipa “ boolean” i koriste se za određivanje vrste druge ugovorne strane. u IB" Prijemnik“, u priručniku “ Klijenti“Nema sličnih detalja, ali postoji registar informacija” Vrste klijenata". Obavlja sličnu funkciju i može pohraniti više oznaka za jednog klijenta. Naš zadatak je da prenesemo vrijednosti detalja u posebne zapise registra informacija.

Nažalost, ni tu se ne mogu nositi sama vizuelna sredstva. Počnimo s malim, kreirajmo novi PCO za registar informacija " Vrste klijenata". Ne navodi ništa kao izvor. Odbijte automatsko kreiranje pravila za otpremanje.

Sljedeći korak je kreiranje pravila za otpremanje. Idite na odgovarajuću karticu i kliknite na " Dodati". U prozoru za dodavanje pravila za otpremanje popunite:

  • metoda uzorkovanja. Promjena na “Proizvoljni algoritam”;
  • pravilo konverzije. Odaberite registar informacija “Vrste kupaca”;
  • Šifra (naziv) pravila. Pišemo to kao “Učitavanje klijentskih vrsta”;

Sada trebate napisati kod za odabir podataka za učitavanje. Ovdje je parametar “ Uzorkovanje podataka". U njega možemo postaviti kolekciju sa pripremljenim skupom podataka. Parametar " Uzorkovanje podataka” može imati različite vrijednosti - rezultat upita, odabir, kolekcije vrijednosti itd. Inicijaliziramo ga kao tablicu vrijednosti sa dvije kolone: ​​klijent i tip klijenta.

Ispod je kod za obradu događaja “ Prije obrade". Inicijalizira parametar “ Uzorkovanje podataka” nakon čega slijedi popunjavanje podataka iz imenika “ Counterparties". Ovdje vrijedi obratiti pažnju na popunjavanje kolone “ Client Type". U “UT” imamo karakteristike tipa “Boolean”, au primaocu nabrajanje.

U ovoj fazi ih ne možemo dovesti do željenog tipa (nije u UT), pa ćemo ga za sada ostaviti u obliku nizova. Ne morate ovo da radite, ali odmah želim da pokažem kako da prebacite na tip koji nedostaje u izvoru.

DataFetch = NovaValueTable(); Data Selection.Columns.Add("Klijent"); Data Selection.Columns.Add("ClientType"); Odabir podataka iz direktorija = Directories.Contractors.Select(); Dok dohvaćam DataFromCatalog.Next() Loop If FetchingDataFromCatalog.ThisGroup Then Continue; EndIf; Ako DataFetchFromCatalog.Buyer onda je NewString = DataFetch.Add(); NewString.Client = SamplingDataFromCatalog.Reference; NewString.ClientType = "Kupac"; EndIf; Ako je DataFetchFromCatalog.Provider Tada je NewString = DataFetch.Add(); NewString.Client = SamplingDataFromCatalog.Reference; NewString.ClientType = "Dobavljač"; EndIf; EndCycle;

Sačuvajte pravilo za učitavanje podataka i vratite se na “ Pravila konverzije objekata". Dodajmo za informacije registar “ Vrste klijenata” Pravila konverzije svojstva: klijent i tip klijenta. Ostavljamo izvor prazan, a u rukovaocu događaja “Prije istovaranja” pišemo:

//Za svojstvo "Klijent" Vrijednost = Source.Client; //Za svojstvo “CustomerType” If Source.Customer = "Buyer" Then Expression = "Enumerations.CustomerTypes.Buyer" ElseIf Source.Customer = "Supplier" Then Expression = "Enumerations.CustomerTypes.Supplier"; EndIf;

U listingu se podaci popunjavaju na osnovu izvršenog odabira podataka. Klijenta prosljeđujemo jednostavno kao vezu, a tip klijenta upisujemo u parametar " Izraz". Podaci ovog parametra će se interpretirati u prijemniku, a kada se izvrši, atribut će biti popunjen ispravnom vrijednošću iz enumeracije.

To je to, pravila razmjene su spremna. Razmatrani primjer se pokazao prilično univerzalnim. Sličan pristup se često koristi prilikom prijenosa podataka iz konfiguracija kreiranih na platformi 7.7. Upečatljiv primjer za to je prijenos periodičnih detalja.

Zadatak broj 3. Tabularni trikovi

Često postoje zadaci koji zahtijevaju postavljanje redova jednog dijela tabele u nekoliko. Na primjer, u početnoj konfiguraciji usluge i roba se registruju u jednom tabelarnom dijelu, dok je skladište ovih entiteta odvojeno u prijemniku. Opet, problem se ne može riješiti vizualnim sredstvima. Ovdje je zgodno uzeti rješenje drugog problema kao osnovu.

Napravimo pravilo za učitavanje podataka, specificiramo proizvoljan algoritam i napišemo upit u rukovaocu „Prije otpremanja“ da bismo dobili podatke iz tabelarnog dijela.

Da uštedim prostor, neću dati kod (uvijek se možete pozvati na izvorni kod) zahtjeva - u njemu nema ničeg neobičnog. Razvrstavamo rezultujući uzorak i stavljamo sortirane rezultate u već poznati parametar “ Uzorkovanje podataka". Opet, zgodno je koristiti tablicu vrijednosti kao kolekciju:

DataFetch = NovaValueTable(); //Ovdje će biti još jedan tabelarni dio Data Selection.Columns.Add("Proizvodi"); //Ovdje će biti i tabelarni dio Data Selection.Columns.Add("Services"); Odabir podataka iz.Columns.Add(“Link”);

Zadatak broj 4. Prijenos podataka u operaciju

Ako organizacija koristi nekoliko računovodstvenih sistema, prije ili kasnije će se pojaviti potreba za migracijom podataka s naknadnim formiranjem knjiženja.

U konfiguraciji " BP"postoji univerzalni dokument" Operacija” i idealan je za formiranje više žica. Evo samo jednog problema - dokument je lukavo napravljen i nije tako lako prenijeti podatke u njega.

Primjer takve konverzije možete pronaći u izvornom kodu za članak. Ispostavilo se da je količina koda prilično velika, tako da nema smisla objavljivati ​​je za članak. Samo da kažem da upload ponovo koristi proizvoljan algoritam u pravilima za upload podataka.

Zadatak broj 5. Sinhronizacija podataka preko više atributa

Već smo pokrili nekoliko primjera, ali do sada nismo govorili o sinhronizaciji objekata tokom migracije. Zamislimo da trebamo prenijeti druge ugovorne strane i neke od njih su vjerovatno u bazi podataka primaoca. Kako prenijeti podatke i spriječiti duplikate? U tom smislu, CD nudi nekoliko načina za sinhronizaciju prenesenih objekata.

Prvi je po jedinstvenom identifikatoru. Mnogi objekti imaju jedinstveni identifikator koji garantuje jedinstvenost unutar tabele. Na primjer, u priručniku " Counterparties” ne može imati dva elementa sa istim ID-om. CD pravi proračun za to, a za sve kreirane PSP-ove pretraživanje po identifikatoru je odmah omogućeno po defaultu. Tokom kreiranja PSP-a, trebali ste primijetiti ikonu lupe pored naziva objekta.

Sinhronizacija pomoću jedinstvenog identifikatora je pouzdana metoda, ali daleko od toga da je uvijek prikladna. Prilikom spajanja direktorija “ Counterparties” (iz nekoliko različitih sistema) on je od male pomoći.

U takvim slučajevima je ispravnije sinkronizirati objekte prema nekoliko kriterija. Ispravnije je tražiti druge ugovorne strane po TIN-u, KPP-u, imenu ili podijeliti pretragu u nekoliko faza.

Konverzija podataka ne ograničava programera u definiranju kriterija pretraživanja. Razmotrimo jedan apstraktan primjer. Pretpostavimo da trebamo sinkronizirati direktorije “ Counterparties” iz različitih informacionih baza. Pripremimo PCP i u postavkama pravila za pretvaranje objekta označimo kućicu “ Nastavite s pretraživanjem polja za pretraživanje ako objekt primatelja nije pronađen po ID-u". Ovom akcijom smo odmah definisali dva kriterijuma pretraživanja - po jedinstvenom identifikatoru i proizvoljnim poljima.

Imamo pravo da sami biramo polja. Nakon što smo zabilježili TIN, KPP, Ime, odmah ćemo navesti nekoliko kriterija pretraživanja. Udoban? Sasvim, ali opet, ovo nije dovoljno. A šta ako želimo promijeniti kriterije pretraživanja? Na primjer, prvo tražimo gomilu TIN + KPP, a ako ništa ne pronađemo, onda počinjemo iskušavati sreću s imenom.

Takav algoritam je sasvim moguće implementirati. U obrađivaču događaja Polja za pretragu” možemo odrediti do 10 kriterija pretraživanja i za svaki od njih definirati svoj sastav polja za pretragu:

Ako je SearchOptionNumber = 1 onda SearchPropertyNameString = “TIN, KPP”; ElseIfSearchVariantNumber = 2 ThenSearchPropertyNameString = “Ime”; EndIf;

Uvijek postoji više rješenja.

Svaki zadatak ima nekoliko rješenja, a prijenos podataka između različitih konfiguracija nije izuzetak. Svaki programer ima pravo odabrati vlastiti put rješenja, ali ako stalno morate razvijati složene migracije podataka, toplo preporučujem da obratite pažnju na konfiguraciju "". Neka na početku morate uložiti sredstva (vrijeme) u obuku, ali oni će se više nego isplatiti na prvom manje-više ozbiljnom projektu.

Po mom mišljenju, kompanija 1C nezasluženo zaobilazi temu korištenja konverzije podataka. Za cijelo vrijeme postojanja tehnologije o njoj je objavljena samo jedna knjiga: „1C: Enterprise 8. Konverzija podataka: razmjena između aplikativnih rješenja“. Knjiga je dosta stara (2008), ali je ipak poželjno da se s njom upoznate.

I dalje je potrebno poznavanje platforme

» je univerzalni alat, ali ako planirate da ga koristite za kreiranje migracija podataka iz konfiguracija razvijenih za platformu 1C:Enterprise 7.7, tada ćete morati potrošiti vrijeme na upoznavanje ugrađenog jezika. Sintaksa i ideologija jezika su veoma različite, tako da morate potrošiti vrijeme na učenje. Ostatak principa ostaje isti.

1. Uvod.

2. Šta vam je potrebno: 1C konfiguracija: Konverzija podataka 2. * i obrada iz paketa. Za primjer zadataka uzimamo konfiguracije 1C: Upravljanje trgovinom 11 i 1C: BP 3.*.

Dakle, da biste razvili pravila za učitavanje podataka u 1C, trebat će vam 1C konfiguracija: Konverzija objekata 2, kao i obrada uključena u paket.

Na primjer, već smo postavili bazu konverzije i pokrenuli je.

Napisat ćemo razvoj pravila razmjene između konfiguracije 1C: Upravljanje trgovinom 11 i 1C: Enterprise Accounting 3 (pravila razmjene UT/BUH).

3. Trebat će nam Obrada da rasteretimo strukturu metapodataka i razmjenu.

Prva stvar koju trebate nabaviti za razvoj su datoteke sa strukturom metapodataka. Ovo se radi korištenjem obrade metapodataka koja je uključena u paket za konverziju objekata.

Zapravo, u raspakovanom konfiguracijskom direktoriju za konfiguracije na upravljane forme zainteresovani smo za obradu MD83Exp.epf. Ako se istovar treba obaviti iz konfiguracija na regularnim obrascima, tada se koristi obrada MD82Exp.epf. Ovo je ako, na primjer, trebate dobiti strukturu iz takvih konfiguracija kao što su 1C: UT 10, 1C: Management proizvodni pogon 1.3, 1C: Integrirana automatizacija 1.1, 1C: Zup 2.5 i tako dalje.

Nadalje, da biste učitali i preuzeli podatke u 1C koristeći naša pravila, trebat će vam obrada "Univerzalne razmjene podataka u XML formatu" V8Exchan83.epf za konfiguracije na upravljanim obrascima kao što je 1C: Upravljanje trgovinom 11. *, 1C BP 3, 1C : ERP 2. * i slično. I prema tome V8Exchan83.epf - za konfiguracije na regularnim obrascima.

4. Učitavanje strukture metapodataka konfiguracije 1C: Trade Management 11.3 i 1C: Enterprise Accounting 3.0. *

Počnimo s istovarom strukture metapodataka iz 1C konfiguracije: Enterprise Accounting 3.
Otvorena obrada MD83Exp.epf

U obliku obrade postoje dodatna podešavanja, gdje možemo omogućiti ili onemogućiti opciju za istovar registara i kretanja u 1C. Postoji i izbor gdje će se vršiti istovar: na 1C serveru ili "na klijentu". Odredite ime datoteke iz koje će se isprazniti struktura podataka. Slično tome, oslobađamo strukturu metapodataka konfiguracije Upravljanje trgovinom 11.

Sada morate učitati konfiguraciju u bazu podataka konverzije. Do ove stavke se može doći i sa liste konfiguracija i sa liste konverzija. Pokrenimo se sa desktopa:

U dijaloškom okviru učitajte BP strukturu:

I slično - struktura Odjeljenja za trgovinu.

Kada se preuzimanje završi, pojavit će se dijaloški okvir u kojem možete odrediti naziv koji vam odgovara.

6. Kreiranje pravila za konverziju u 1C na konkretan primjer zadataka.

Zatim idite na "Postavljanje pravila objekata", gdje kreiramo novu postavku.
U dijaloškom okviru za kreiranje konverzije odaberite "izvornu" konfiguraciju i "odredišnu" konfiguraciju (koju ste prethodno učitali) i kliknite OK.

Budući da sam u ovom članku planirao prikazati kreaciju „od nule“ i „bez smeća“, podsjećam da ništa ne kreiramo automatski. Nema prototipova.

Nećemo ništa raditi u ovom dijaloškom okviru, samo kliknite - "Zatvori".

Napravimo pravila za istovar ne jednog dokumenta u jedan, već jedne vrste u drugi, na primjer, dokument Prodaja robe i usluga iz UT 11 sa potrebnim imenicima u dokument Prijem robe i usluga u BP 3.

Dakle, kreiramo novi PKO (pravilo za pretvaranje objekata u 1C)

Odaberite izvor Realizacija dobara usluga i primaoca prijema dobara usluga i kliknite OK.
U tom slučaju će se pojaviti dijaloški okvir u kojem ponovo odbijamo automatsko kreiranje PKC-a (Property Conversion Rules). Zatim biramo samo one potrebne.

Ali na prijedlog za kreiranje PVD-a (pravila za učitavanje podataka), odgovaramo „Da“.

Kreiraju se VDP-ovi, što će se odraziti na obradu univerzalne XML razmjene za odabir:

Također će se kreirati pravila konverzije podataka s praznim pravilima konverzije svojstava.

Štaviše, jasno je da se po defaultu predlaže traženje FSP-a po internom identifikatoru objekta. Na to ukazuje lupa u blizini PKO. Mi ćemo izvršiti vlastitu pretragu, i to po broju dokumenta i datumu na početku dana.

Uklanjanje pretrage za UIO:

Sada počnimo uparivanje potrebnih svojstava (rekvizita) objekta. Da biste to učinili, kliknite na "Sinhronizacija svojstava" (oznaka "1" na ekranu). Uklanjamo rekurzivno kreiranje pravila ("2"). Uklanjamo sve označene detalje ("3"). A mi ćemo sami izabrati šta nam treba.

Na primjer, odaberite ono što vam treba:

Skrećem vam pažnju da ćemo PKS druge ugovorne strane pretvoriti u organizaciju, a organizaciju u drugu stranu, a uporedićemo i neke detalje koji se ne podudaraju u nazivu, na primjer, "Valuta" i "Dokument valuta".

Gdje vidimo da još nema pravila konverzije.

Počnimo s detaljima da ih prođemo i opišemo. Prvo postavljamo pretragu dokumenta kao što sam ranije napisao, istovarujemo i tražimo dokument na početku datuma i mijenjamo numeraciju. Zamijenit ćemo prva tri znaka našim prefiksom "UTB". A kako je u BP i UT numeracija po 11 znakova, pravimo složeni broj: naš prefiks i 8 znakova iz izvora. Primjer snimka ekrana ispod.

Uvek istovarujemo dokumente koji nisu izvršeni i bez kretanja. Pretpostavljamo da će dokumenti biti zadržani u prijemniku nakon provjere od strane korisnika.

Da bi se to postiglo, PCS, koji je postavio kako se ne drži, 0 ili 1, koristi se kao boolean.

Koristeći valutu kao primjer, kreiramo pravilo za pretvaranje objekta za PCS. Istovremeno, smatramo da u obje baze postoje valute, koje moraju biti šifrovane. Stoga nećemo kreirati sve PCS-ove u CSP-u valuta, već samo dodati kod za pretragu. One. od prijedloga za kreiranje PCS-a za objekat - odbijamo.

Kreirano pravilo konverzije je zamijenjeno u PQS dokumenta za SCS. I samo zadano pravilo nudi jedinstveni identifikator. Popravljamo ga, tražimo u kodu i postavljamo svojstvo tako da ne stvaramo novi objekt.

Kao rezultat, dobijamo opciju:

Nadalje, po analogiji, kreiramo za ostale detalje PKO i PKS. Štaviše, tražimo organizaciju po ugovornoj strani i obrnuto po TIN-u. Ovako to izgleda sa minimalnim detaljima (možete dodati ako je potrebno).

Za PKO ugovore drugih strana, tražimo PKS Counterparty, ime i vlasnika.

Pogledajmo kako odrediti željenu vrijednost u tipu nabrajanja u PCS-u. Na primjer, atribut "Vrsta operacije". Ovdje možete koristiti različite uvjete i zamjenske vrijednosti. Na primjer, potrebna nam je “vrsta operacije” da se uvijek isprazni “Roba”, u ovom slučaju je dovoljno upisati željenu vrijednost u “čelo” kao string.

U nastavku je prikazano kako bez poteškoća postaviti i u većini slučajeva PKS za višestrukost poravnanja, stopu poravnanja, račune.

Za PKO nomenklaturu ostavljamo pretragu po internom jedinstvenom identifikatoru. Ali obratiću pažnju na to kako možete redefinisati svoju grupu. Na primjer, slažemo se da će se nova nomenklatura izbaciti iz konfiguracije 1C: Upravljanje trgovinom 11, ali je neophodno da se nomenklatura prikupi u određenoj grupi „Naša grupa“.

Da bismo implementirali ovaj zadatak, kreiramo još jedan PKO. Nazovimo ga "Roditelj nomenklature", što ćemo naznačiti u nadređenom PDN-u u pravilu konverzije.

Postavili smo dvije pretrage: po imenu, gdje je ime naše grupe tvrdo kodirano, i obavezno svojstvo atributa "ThisGroup" na true.

Pošto smo odlučili da sva nomenklatura spada u našu grupu, nema potrebe da prilikom istovara istovarujemo grupe iz UT 11. Da bismo to uradili, u Nomenklaturu PKO, u rukovaocu događaja „Pre istovara“ stavićemo filter da nije potrebno istovariti grupe "Failure = Source". Ova grupa;".

U DRP (pravila za upload podataka) Implementacija dobara i usluga, dodaćemo filter tako da se dokumenti označeni za brisanje ne učitavaju. Da bismo to učinili, u PDP-u u obrađivačima događaja "BeforeUnloading" upisaćemo filter "Odbijanje = Object.DeletionMark;".


Sačuvajte razvijena pravila u datoteku.


7. Rezimiranje: Učitavanje i preuzimanje podataka koristeći razvijena pravila razmjene podataka.

Otvaramo u 1C: Upravljanje trgovinom 11 obradu "Univerzalna razmjena podataka u XML formatu" V8Exchan83.epf.

Istovar je prošao, sada sa istom obradom učitavamo u 1C: Enterprise Accounting 3.


Preuzimanje je završeno. Hajde da proverimo da li je učitano. Dakle, dokument je učitan, kako smo hteli - imamo Organizaciju učitanu u drugu stranu, a drugu u organizaciju. Svi računi su preuzeti i instalirani. Dobili smo broj dokumenta sa našim prefiksom i na početku dana. Svi podaci koji su registrovani su popunjeni.

Provjeravamo učitavanje nomenklature. Vidimo da je sve ispalo kako smo planirali.


Napravili smo i ispunili detalje kako smo namjeravali. Postoji mnogo suptilnosti u konverziji i neke jednostavne, ali neophodne stvari koje pomažu u preciznom pisanju konverzije. A to vam omogućava da minimizirate greške, ne pokvarite postojeće podatke i riješite se nepotrebnog smeća. Ovo je jedan od najvecih jednostavni primjeri. Također možete izvršiti konverziju jednog objekta u više, ili obrnuto, mnogo - u jedan.

Sada postoji konverzija podataka 3, ona rješava druge probleme. Stoga je potrebna i konverzija 2. Sretno svima u učenju i savladavanju.

Naravno, ako ste programer i ovo vam je glavni posao, možete pokušati sami da napišete konverziju. Ali ako ne, onda biste trebali cijeniti svoje vrijeme u svom području aktivnosti i zamoliti profesionalce da završe ovaj zadatak.

Specijalizirana konfiguracija "1C: Konverzija podataka 2.0"

Izdavanje osme verzije platforme 1C:Enterprise postalo je značajan korak u razvoju sistema automatizacije. Prilikom dizajniranja platforme 1C:Enterprise 8 uzeto je u obzir ogromno iskustvo korištenja rješenja baziranih na platformi 1C:Enterprise 7.7: ozbiljno redizajnirani ugrađeni jezik platforme i tipične konfiguracije, struktura pohrane podataka i pristup promijenjena, stvorena su nova industrijska rješenja koja ostvaruju prednosti nove platforme. Upotreba prethodnih jezičkih konstrukcija u novoj platformi postala je neprikladna.

Kako bi olakšao rješavanje ovog problema (prijenos podataka sa verzije 7.7 na verziju 8), 1C je izdao specijaliziranu konfiguraciju "Konverzija podataka 2.0". Stvoren je da pomogne stručnjacima u rješavanju različitih problema prijenosa podataka. 1C je objavio gotova pravila za prijenos podataka iz konfiguracija istog tipa, na primjer, iz 1C: Accounting 7.7 do 1C: Accounting 8, ali korisnici nestandardnih ili modificiranih standardnih konfiguracija prilikom prelaska na platformu 1C: Enterprise 8 morat ćete sami kreirati podatke o pravilima prijenosa.

Uz svu raznolikost privatnih metoda za rješavanje problema prijenosa podataka, raspon problema koje treba riješiti ostaje praktički nepromijenjen:

Sinhronizacija pozadinske informacije(kreiranje novih, ažuriranje postojećih elemenata direktorija, brisanje, spremanje ili promjena hijerarhije, grananje podataka, prijenos povijesti promjene vrijednosti periodičnih detalja);

Sinhronizacija dokumenata i operacija (kreiranje, modifikacija dokumenata ili transformacija jedne vrste dokumenta u drugu, spajanje ili reprodukcija);

Stvaranje dovoljnih početnih uslova za vođenje računovodstvenih registara ekonomska aktivnost(prenos ostataka robe, itd.).

Strukture skladištenja podataka u 1C:Enterprise različitih verzija i/ili konfiguracija su različite, tako da prijenos podataka nije samo kopiranje datoteka ili tablica, već i njihovo pretvaranje. Da bi transformacija bila nedvosmislena i ispravna, potrebno je kreirati i konfigurirati pravila za prijenos podataka. Kreiranje i konfiguriranje pravila za prijenos podataka između različitih infobaza moguće je ako je poznata struktura pohrane podataka u izvornoj i odredišnoj bazi podataka. Opis strukture metapodataka konfiguracije treba biti unificiran. Konfiguracija Data Conversion 2.0 se koristi za kreiranje i konfiguriranje pravila prijenosa podataka na osnovu opisa strukture metapodataka izvorne i odredišne ​​konfiguracije.

Proces prijenosa podataka između infobaza sastoji se od sljedećih koraka:

  • 1. Kreiranje datoteka opisa metapodataka.
  • 2. Kreiranje konfiguracija u "Konverzija podataka".
  • 3. Kreiranje same konverzije.
  • 4. Dosljedno kreiranje pravila konverzije podataka.
  • 5. Dosljedno kreiranje pravila za upload podataka.
  • 6. Stvarna procedura za istovar i učitavanje podataka iz jedne konfiguracije u drugu.

Jer upotreba ove specijalizovane konfiguracije jedna je od najefikasnijih ovog trenutka načini rješavanja problema ove vrste, a osim toga, izvor vrlo korisnih u obrazovne svrhe lično iskustvo, zatim za razvoj mehanizma za razmjenu podataka između IS "Server: Izračun zakupnine" i "1C: Enterprise Accounting" za LLC "LLC", odabrana je metoda zasnovana na korištenju konfiguracije "Data Conversion 2.0".

Konverzija podataka 2.0 i 2.1 je 1C tehnološka konfiguracija implementirana na verzijama platforme od 8.1 do 8.3.

Glavni zadatak alata je pisanje pravila razmjene između aplikativnih rješenja 1C 8 i 7. Trenutna verzija konverzije podataka danas je 3.0.

Konverzija podataka je vrlo korisna konfiguracija, s njom možete riješiti ne samo pitanje prijenosa informacija iz jedne baze podataka u drugu, već i, na primjer, pretvaranje informacija unutar jedne baze podataka.

Konfiguracija je vrlo zgodna za korištenje kada .

Konverzija podataka bit će korisna za svakog programera: posjedovanje vještina za kreiranje pravila razmjene je ozbiljan plus za profesionalne vještine.

Za učenje kako raditi s konfiguracijom, najbolje rješenje je praktični zadaci. Pokušajte sami smisliti zadatke, na primjer: prenijeti bilo koju informaciju iz jedne baze podataka u drugu, pretvoriti prodajni dokument u dokument o prijemu, „potjerati“ trenutna računovodstvena stanja u dokument „unos stanja“ i druge zadatke.

Bit će vrlo korisno razumjeti "tipična" pravila razmjene 1C 8.3, tamo često možete pronaći zanimljive primjere implementacije zadataka.

Da biste shvatili osnove, trebat će vam materijali, razmotrite ih u nastavku.

Video uputstvo za konverziju

Za osnove postavljanja razmjene podataka u 1C koristeći konfiguraciju "1C konverzija podataka", pogledajte video za primjer:

Materijali, udžbenici za proučavanje 1C Konverzija podataka 2.0

Nema previše materijala i dokumentacije na netu, pokušao sam prikupiti najvažnije i najzanimljivije materijale:

0. Prije svega, savjetujem besplatni video kurs Ilje Leontijeva, dostupan je na veza.

1. Savjetovao bih prije svega da koristite ugrađenu pomoć u konfiguraciji. Zaista je dobro napisano i tehnički dobro implementirano:

2. Drugi najvažniji izvor informacija je stranica http://www.mykod.info/ (stranica je zatvorena), specijalizirana samo za konverziju podataka. Tamo možete preuzeti veliki broj materijala za konverziju.

3. Zasebno, želim da istaknem udžbenik priručnika za obuku - (autor - Olga Kuznetsova).


2023
newmagazineroom.ru - Računovodstveni izvještaji. UNVD. Plata i osoblje. Valutno poslovanje. Plaćanje poreza. PDV Premije osiguranja