26.12.2019

1c duomenų konvertavimas 2.0. Visada yra keletas sprendimų


Duomenų perkėlimas tarp skirtingų konfigūracijų nėra nereikšminga užduotis. Kaip visada, yra keletas sprendimų, tačiau ne visi jie yra optimalūs. Pabandykime suprasti duomenų perdavimo niuansus ir pasirinkti universalią tokių klausimų sprendimo strategiją.

Duomenų migracijos (čia grynai apie 1C įmonės produktus) problema iš vieno sprendimo į kitą vakar nekilo. 1C kompanija puikiai žino, su kokiais sunkumais susiduria kūrėjai kurdami migracijas, todėl stengiasi padėti įrankiais.

Kurdama platformą įmonė pristatė nemažai universalių įrankių, taip pat duomenų perdavimą supaprastinančias technologijas. Jie integruoti į viską standartiniai sprendimai ir migracijos tarp identiškų konfigūracijų problema apskritai buvo išspręsta. Pergalę dar kartą patvirtina glaudus standartinių sprendimų integravimas.

Pereinant tarp nestandartinių sprendimų, situacija yra šiek tiek sudėtingesnė. Platus technologijų pasirinkimas leidžia kūrėjams savarankiškai pasirinkti optimalų problemos sprendimo būdą jų požiūriu.

Pažvelkime į kai kuriuos iš jų:

  • keistis tekstiniais failais;
  • mainų planų naudojimas;
  • ir tt

Kiekvienas iš jų turi savų pliusų ir minusų. Apibendrinant galima pasakyti, kad pagrindinis trūkumas bus jo daugiažodiškumas. Nepriklausomas perkėlimo algoritmų įgyvendinimas reikalauja didelių laiko sąnaudų, taip pat ilgo derinimo proceso. Apie tolesnę paramą tokiems sprendimams net nenoriu kalbėti.

Sudėtingumas ir didelės pagalbos išlaidos paskatino 1C įmonę sukurti universalų sprendimą. Technologijos, leidžiančios kiek įmanoma supaprastinti migracijų kūrimą ir palaikymą. Dėl to idėja buvo įgyvendinta atskiros konfigūracijos forma – „Duomenų konvertavimas“.

Duomenų konvertavimas – standartinis sprendimas, nepriklausoma konfigūracija. Bet kuris vartotojas, užsisakęs „ITS:Prof“ prenumeratą, gali visiškai nemokamai atsisiųsti šį paketą iš vartotojo palaikymo svetainės arba iš ITS disko. Montavimas atliekamas standartiniu būdu – kaip ir visi kiti standartiniai sprendimai iš 1C.

Dabar šiek tiek apie sprendimo privalumus. Pradėkime nuo svarbiausio dalyko – universalumo. Sprendimas nėra pritaikytas konkrečioms platformos konfigūracijoms / versijoms. Jis vienodai gerai veikia tiek su standartine, tiek su pasirinktine konfigūracija. Kūrėjai gauna universalią technologiją ir standartizuotą požiūrį į naujų perkėlimų kūrimą. Sprendimo universalumas leidžia paruošti perkėlimą net ir kitoms platformoms nei 1C:Enterprise.

Antras didelis pliusas – vaizdinės priemonės. Paprastos migracijos kuriamos be programavimo. Taip, taip, be vienos kodo eilutės! Vien dėl to verta vieną kartą skirti laiko išmokti technologijų, o paskui pakartotinai panaudoti neįkainojamus įgūdžius.

Trečias privalumas, kurį norėčiau pažymėti, yra duomenų platinimo apribojimų nebuvimas. Duomenų pateikimo į imtuvo konfigūraciją būdą pasirenka pats kūrėjas. Galimos dvi parinktys: įkėlimas į xml failą ir tiesioginis prisijungimas prie informacijos bazės (COM/OLE).

Studijuoja architektūrą

Jau žinome, kad duomenų konvertavimas gali padaryti stebuklus, tačiau dar neaišku, kokie yra techniniai pranašumai. Pirmiausia reikia išmokti, kad bet koks duomenų perkėlimas (konvertavimas) yra pagrįstas mainų taisyklėmis. Exchange taisyklės – įprastas xml failas su struktūros, į kurią bus įkeliami duomenys iš IB, aprašymu. Paslaugų apdorojimas, atliekantis duomenų įkėlimą/atsiuntimą, analizuoja mainų taisykles ir jomis remdamasis atlieka įkėlimą. Pakrovimo metu vyksta atvirkštinis procesas.

„KD“ konfigūracija yra tam tikras vaizdo konstruktorius, su kuriuo kūrėjas kuria mainų taisykles. Jis nežino, kaip atsisiųsti duomenis. Už tai atsakingas papildomas išorinių paslaugų apdorojimas, įtrauktas į CD platinimo rinkinį. Jų yra keletas (XX failo pavadinime yra platformos versijos numeris):

  • MDXXExp.epf- apdorojimas leidžia įkelti informacijos bazės struktūros aprašymą į xml failą. Struktūros aprašymas įkeliamas į kompaktinį diską tolesnei analizei ir mainų taisyklių kūrimui.
  • V8ExchanXX.epf- įkelia/atsisiunčia duomenis iš infobazės pagal mainų taisykles. Daugumoje įprastų konfigūracijų apdorojimas galimas iš karto (žr. meniu punktą „Paslauga“). Apdorojimas yra universalus ir nėra susietas su jokiomis konkrečiomis konfigūracijomis / taisyklėmis.

Gerai, remdamiesi visa tai, kas išdėstyta pirmiau, apibrėžkime naujos konversijos kūrimo etapus:

  1. Užduoties apibrėžimas. Būtina aiškiai suprasti, kokius duomenis reikia perkelti (iš kokių konfigūracijos objektų) ir, svarbiausia, kur juos perkelti.
  2. Konfigūracijos struktūrų (Source/Sink) aprašymų paruošimas vėlesniam įkėlimui į kompaktinį diską. Problema išspręsta apdorojant paslaugą MDXXExp.epf.
  3. Parengtų struktūrų aprašymų įkėlimas į informacijos apsaugą.
  4. Keitimosi taisyklių kūrimas naudojant vaizdinį CD įrankį.
  5. Įkėlimo/atsiuntimo vykdymas pagal sukurtas duomenų konvertavimo taisykles naudojant V8ExchanXX.epf apdorojimą.
  6. Derinimo mainų taisyklės (jei reikia).

Paprasčiausias konvertavimas

Demonstracijai mums reikės dviejų įdiegtų konfigūracijų. Nusprendžiau pasirinkti variantą: „Prekybos valdymas“ 10-asis leidimas ir nedidelis namuose parašytas sprendimas. Užduotis bus perkelti duomenis iš standartinės „UT“ konfigūracijos. Trumpumo dėlei savo paties parašytą sprendimą pavadinkime „Sink“, o prekybos valdymą – „Šaltiniu“. Pradėkime problemos sprendimą perkeldami elementus iš katalogo „Nomenklatūra“.

Visų pirma, pažvelkime į duomenų konvertavimo schemą ir dar kartą perskaitykime veiksmų, kuriuos reikia atlikti, sąrašą. Tada paleidžiame „Šaltinio“ konfigūraciją ir joje atidarome MD82Exp.epf paslaugos apdorojimą.

Apdorojimo sąsajoje nėra daug nustatymų. Vartotojui tereikia nurodyti metaduomenų objektų tipus, kurie nebus įtraukti į struktūros aprašymą. Daugeliu atvejų šių nustatymų keisti nereikia, nes Nėra jokios ypatingos prasmės iškrauti judesius naudojant kaupimo registrus (kaip pavyzdį).

Teisingiau judesį formuoti laikant imtuve dokumentus. Visus judesius atliks pats dokumentas po perdavimo. Antrasis argumentas, ginant numatytuosius nustatymus, yra failo dydžio sumažinimas įkeliant.

Kai kurie dokumentai (ypač standartinėse konfigūracijose) generuoja judėjimą keliuose registruose. Iškraunant visus šiuos dalykus, gautas XML failas bus per didelis. Tai gali apsunkinti tolesnį transportavimą ir pakrovimą į imtuvo pagrindą. Kuo didesnis duomenų failas, tuo daugiau RAM reikės jam apdoroti. Per savo praktiką turėjau galimybę susidurti su nepadoriai dideliais įkeliamais failais. Tokie failai visiškai atsisakė analizuoti naudojant standartinius įrankius.

Taigi, paliekame visus numatytuosius nustatymus ir įkeliame konfigūracijos aprašymą į failą. Panašią procedūrą kartojame antram pagrindui.

Atidarykite kompaktinį diską ir pagrindiniame meniu pasirinkite „Katalogai“ -> „Konfigūracijos“. Kataloge saugomi visų konfigūracijų, kurias galima naudoti kuriant konversijas, struktūrų aprašymai. Konfigūracijos aprašą įkeliame vieną kartą, tada galime jį naudoti kelis kartus kurdami skirtingas konversijas.

Katalogo lange spustelėkite mygtuką „ Papildyti“ ir pasirodžiusiame lange pasirinkite failą, aprašantį konfigūraciją. Pažymėkite langelį „Įkelti į naują konfigūraciją“ ir spustelėkite mygtuką „Įkelti“. Panašius veiksmus atliekame su antrosios konfigūracijos struktūros aprašymu.

Dabar esate pasiruošę kurti mainų taisykles. Pagrindiniame kompaktinio disko meniu pasirinkite „Katalogai“ -> „Konversijos“. Pridėti naują elementą. Naujos konversijos kūrimo lange turite nurodyti: šaltinio konfigūraciją (pasirinkite UT) ir paskirties konfigūraciją (pasirinkite „Imtuvas“). Tada atidarykite skirtuką „Išplėstinė“ ir užpildykite šiuos laukus:

  • mainų taisyklių failo pavadinimas – sukurtos mainų taisyklės bus išsaugotos šiuo pavadinimu. Failo pavadinimą galite pakeisti bet kuriuo metu, tačiau geriausia jį nustatyti dabar. Taip sutaupysite laiko ateityje. Demonstracinio pavyzdžio taisykles pavadinau: „rules-ut-to-priemnik.xml“.
  • pavadinimas – konversijos pavadinimas. Pavadinimas gali būti visiškai bet koks, aš apsiribojau „Demo. UT imtuvui.

Štai viskas, spustelėkite „Gerai“. Iškart priešais mus pasirodo langas, kuriame prašoma automatiškai sukurti visas taisykles. Sutikęs su tokiu viliojančiu pasiūlymu, meistras gaus komandą automatiškai analizuoti pasirinktų konfigūracijų aprašymą ir savarankiškai generuoti mainų taisykles.

Iš karto pažymėkime „i“. Vedlys negalės sukurti nieko rimto. Tačiau ši galimybė neturėtų būti atmesta. Jei jums reikia nustatyti identiškų konfigūracijų mainus, vedlio paslaugos bus labai naudingos. Pavyzdžiui, pageidautina rankinis režimas.

Pažvelkime atidžiau į langą "Exchange Rules Settings". Sąsaja gali atrodyti šiek tiek paini - didelis skaičius valdikliais užpildyti skirtukai. Tiesą sakant, viskas nėra taip sunku, prie šios beprotybės pradedi priprasti po kelių valandų darbo su programa.

Įjungta šioje stadijoje mus domina du skirtukai: „Objektų konvertavimo taisyklės“ ir „Duomenų įkėlimo taisyklės“. Iš pradžių turime sukonfigūruoti atitikimo taisykles, t.y. palyginkite dviejų konfigūracijų objektus. Antruoju atveju nustatykite galimus objektus, kuriuos vartotojas galės įkelti.

Antroje skirtuko „Objekto konvertavimo taisyklės“ pusėje yra papildomas skydelis su dviem skirtukais: „Nuosavybės konversija“ ir „ Vertybių konvertavimas“ Pirmasis pasirinks pasirinkto objekto ypatybes (rekvizitus), o antrasis yra būtinas darbui su iš anksto nustatytomis reikšmėmis (pavyzdžiui, iš anksto nustatytais žodyno elementais arba sąrašo elementais).

Puiku, dabar sukurkime katalogų konvertavimo taisykles. Šį veiksmą galite atlikti dviem būdais: naudokite objektų sinchronizavimo vedlį (spustelėkite „“) arba pridėkite atitikmenis kiekvienam objektui rankiniu būdu.

Norėdami sutaupyti vietos, naudosime pirmąjį variantą. Vedlio lange panaikinkite grupės žymėjimą Dokumentacija“ (mes domina tik katalogai) ir išplėsti grupę “ Katalogai“ Atidžiai slenkame per sąrašą ir žiūrime į katalogų, kuriuos galima palyginti, pavadinimus.

Mano atveju yra trys tokie katalogai: Nomenklatūra, Organizacijos ir Sandėliai. Taip pat yra klientų katalogas, kuris atlieka tą pačią semantinę apkrovą kaip ir „ Sandorio šalys"iš konfigūracijos" UT“ Tiesa, meistras negalėjo jų palyginti dėl skirtingų pavadinimų.

Šią problemą galime išspręsti patys. Mes randame lange " Objektų atitikmenys" žinynas " Klientai“, o stulpelyje „Šaltinis“ pasirinkite katalogą „Sandorio šalys“. Tada pažymėkite langelį stulpelyje „Tipas“ ir spustelėkite mygtuką „Gerai“.

Objektų sinchronizavimo vedlys pasiūlys automatiškai sukurti visų pasirinktų objektų savybių konvertavimo taisykles. Savybės bus lyginamos pagal pavadinimą ir mūsų demonstravimui to visiškai pakaks, sutinkame. Kitas klausimas bus pasiūlymas sukurti įkėlimo taisykles. Sutikime ir su tuo.

Keitimo taisyklių pagrindas yra paruoštas. Mes pasirinkome objektus sinchronizuoti, o ypatybių konvertavimo ir įkėlimo taisyklės buvo sukurtos automatiškai. Išsaugokime mainų taisykles faile, tada atidarykime IB „Šaltinį“ (mano atveju tai UT) ir pradėkime jame paslaugų apdorojimą V8Exchan82.epf.

Visų pirma, apdorojimo lange pasirinkite mūsų sukurtas mainų taisykles. Į pakrovimo taisyklių klausimą atsakome teigiamai. Apdorojant bus analizuojamos mainų taisyklės ir bus sukurtas to paties pavadinimo objektų medis, kurį galima įkelti. Šiam medžiui galime nustatyti įvairiausius pasirinkimus arba apsikeisti mazgais, kuriuos keičiant reikia pasirinkti duomenis. Norime atsisiųsti absoliučiai visus duomenis, todėl nereikia diegti filtrų.

Baigę duomenų įkėlimo į failą procesą, eikite į IB “ Imtuvas“ Jame taip pat atidarome apdorojimą V8Exchan82.epf, tik šį kartą einame į skirtuką „Duomenų įkėlimas“. Pasirinkite duomenų failą ir spustelėkite mygtuką „Atsisiųsti“. Tai viskas, duomenys sėkmingai perduoti.

Realaus pasaulio problemos

Pirmoji demonstracinė versija gali būti klaidinanti. Viskas atrodo gana paprasta ir logiška. Tiesą sakant, tai netiesa. IN tikras darbas Iškyla problemų, kurias sunku arba visiškai neįmanoma išspręsti naudojant vien vaizdines priemones (be programavimo).

Kad nenusivilčiau technologijomis, paruošiau keletą realaus gyvenimo problemų. Darbe su jais tikrai susidursite. Jie neatrodo tokie nereikšmingi ir verčia pažvelgti į duomenų konvertavimą nauju kampu. Atidžiai apsvarstykite pateiktus pavyzdžius ir drąsiai naudokite juos kaip fragmentus spręsdami tikras problemas.

Užduotis Nr.1. Užpildykite trūkstamas detales

Tarkime, kad turime perkelti katalogą " Sandorio šalys“ Šiuo tikslu imtuvas turi panašų „Klientų“ katalogą. Jis visiškai tinka duomenims saugoti, tačiau turi rekvizitus. Organizacija“, kuri leidžia atskirti sandorio šalis priklausant organizacijai. Pagal numatytuosius nustatymus visos sandorio šalys turi priklausyti dabartinei organizacijai (tai galima gauti iš to paties pavadinimo konstantos).

Yra keletas problemos sprendimų. Mes apsvarstysime galimybę užpildyti duomenis “ Organizacija„tiesiai duomenų bazėje“ Imtuvas", t.y. duomenų įkėlimo metu. Dabartinė organizacija yra saugoma konstantoje, todėl nėra jokių kliūčių gauti šią vertę. Atidarykime objekto konvertavimo taisyklę (toliau – PKO) “ Klientai“ (dukart spustelėkite objektą) ir taisyklių sąrankos vedlyje eikite į skyrių „Įvykių tvarkyklės“. Tvarkytojų sąraše rasime „ Po atsisiuntimo”.

Aprašykime kodą, kaip gauti dabartinę organizaciją ir priskirti jį detalėms. Suaktyvinus tvarkyklę „Po įkėlimo“, objektas bus visiškai suformuotas, bet dar neįrašytas į duomenų bazę. Niekas nedraudžia mums jo keisti savo nuožiūra:

Jei NE Object.ThisGroup Tada Object.Organization = Constants.CurrentOrganization.Get(); EndIf;

Prieš užpildydami duomenis " Organizacija"Būtina patikrinti atributo reikšmę" Ši grupė“ Dėl žinyno " Klientai„Nustatyta hierarchinė funkcija, todėl tikrinti, ar nėra grupės, būtina. Panašiai užpildykite visas detales. Būtinai perskaitykite kitų tvarkyklės parinkčių žinyną " Po įkėlimo“ Pavyzdžiui, tarp jų yra parametras „ Atsisakymas“ Jei priskirsite jam reikšmę „True“, objektas nebus įrašytas į duomenų bazę. Taigi atsiranda galimybė apriboti objektus, kuriuos galima rašyti įkėlimo metu.

2 užduotis. Išsami informacija informacijos registrui

Kataloge " Sandorio šalys"UT konfigūracijos, išsami informacija" Pirkėjas"Ir" Teikėjas“ Abi detalės yra „tipo“ Būlio“ ir naudojami sandorio šalies tipui nustatyti. IB“ Imtuvas“, kataloge „ Klientai„Panašių duomenų nėra, bet yra informacijos registras“ Klientų tipai“ Jis atlieka panašią funkciją ir gali saugoti kelis vieno kliento atributus. Mūsų užduotis – perkelti detalių reikšmes į atskirus įrašus informacijos registre.

Deja, vien vizualinėmis priemonėmis čia irgi nepavyksta susidoroti. Pradėkime nuo mažo, sukurkime naują programinę įrangą informacijos registrui “ Klientų tipai“ Nieko nenurodykite kaip šaltinio. Venkite automatiškai kurti įkėlimo taisykles.

Kitas žingsnis – sukurti įkėlimo taisykles. Eikite į atitinkamą skirtuką ir spustelėkite „ Papildyti“ Įkėlimo taisyklių pridėjimo lange užpildykite:

  • Mėginių ėmimo metodas. Pakeisti į „Savavališkas algoritmas“;
  • Konversijos taisyklė. Pasirinkite informacijos registrą „Klientų tipai“;
  • Taisyklės kodas (pavadinimas). Užrašykite jį kaip „Klientų tipų iškrovimas“;

Dabar reikia parašyti kodą, kad pasirinktumėte įkeliamus duomenis. Parametras " Duomenų atranka“ Į ją galime patalpinti kolekciją su paruoštu duomenų rinkiniu. Parametras " Duomenų atranka“ gali įgauti įvairias reikšmes – užklausos rezultatą, pasirinkimą, verčių rinkinius ir kt. Mes inicijuojame ją kaip verčių lentelę su dviem stulpeliais: kliento ir kliento tipas.

Žemiau yra įvykių tvarkyklės kodas " Prieš apdorojimą“ Jis inicijuoja parametrą " Duomenų atranka“ po to užpildomi duomenys iš katalogo “ Sandorio šalys“ Čia turėtumėte atkreipti dėmesį į stulpelio „ Kliento tipas“ „UT“ mūsų atributai yra „Boolean“ tipo, o gavėjas yra sąrašas.

Šiame etape negalime jų konvertuoti į reikiamą tipą (to nėra UT), todėl kol kas paliksime juos eilučių pavidalu. Jūs neprivalote to daryti, bet iš karto noriu parodyti, kaip perduoti šaltinyje trūkstamą tipą.

DataFetch = Nauja ValueTable(); DataSelection.Columns.Add("Klientas"); DataSelection.Columns.Add("Kliento tipas"); SelectingDataFromDirectory = Katalogai.Accounts.Select(); Gavus duomenis iš katalogo.Next() Ciklas If FetchingDataFromCatalog.ThisGroup tada tęsti; EndIf; Jei DataFetchFromCatalog.Buyer Tada NewString = DataFetch.Add(); NewRow.Client = DataFetchFromDirectory.Link; NewRow.ClientType = "Klientas"; EndIf; Jei DataFetchFromCatalog.Provider Tada NewString = DataFetch.Add(); NewRow.Client = DataFetchFromDirectory.Link; NewString.ClientType = "Tiekėjas"; EndIf; EndCycle;

Išsaugokime duomenų įkėlimo taisyklę ir grįžkime į skirtuką „ Objekto konvertavimo taisyklės“ Papildykime informacijos registrą “ Klientų tipai” nuosavybės konvertavimo taisyklės: klientas ir kliento tipas. Šaltinį paliksime tuščią, o įvykių tvarkyklėje „Prieš iškrovimą“ parašysime:

//Ypatybės „Klientas“ vertė = Source.Client; //Ypatybei „CustomerType“ If Source.Customer = "Buyer" Then Expression = "Enumerations.CustomerTypes.Buyer" ElseIf Source.Customer = "Supplier" Then Expression = "Enumerations.CustomerTypes.Supplier"; EndIf;

Sąraše duomenys užpildomi pagal pasirinktus duomenis. Mes tiesiog perduodame klientą kaip nuorodą ir parametre įrašome kliento tipą „ Išraiška“ Šio parametro duomenys bus interpretuojami imtuve, o jį įvykdžius atributas bus užpildytas teisinga reikšme iš surašymo.

Tai viskas, mainų taisyklės paruoštos.. Nagrinėjamas pavyzdys pasirodė gana universalus. Panašus metodas dažnai naudojamas perkeliant duomenis iš konfigūracijų, sukurtų 7.7 platformoje. Ryškus to pavyzdys – periodinių detalių perdavimas.

Užduotis Nr.3. Triukai su stalo dalimis

Dažnai susiduriate su užduotimis, kurioms reikia paskelbti eilutes iš vienos lentelės dalies į kelias. Pavyzdžiui, pradinėje konfigūracijoje paslaugos ir prekės registruojamos vienoje lentelės dalyje, o imtuve šių objektų saugykla yra padalinta. Vėlgi, problemos negalima išspręsti vizualinėmis priemonėmis. Čia patogu remtis antrosios problemos sprendimu.

Sudarome duomenų iškrovimo taisyklę, nurodome savavališką algoritmą, o tvarkyklėje „Prieš iškrovimą“ rašome prašymą gauti duomenis iš lentelės dalies.

Norėdami sutaupyti vietos, aš nepateiksiu užklausos kodo (visada galite kreiptis į šaltinius) - jame nėra nieko neįprasto. Rūšiuojame gautą pasirinkimą ir surūšiuotus rezultatus įdedame į jau pažįstamą parametrą “ Duomenų atranka“ Vėlgi patogu naudoti verčių lentelę kaip kolekciją:

DataFetch = Nauja ValueTable(); //Čia bus dar viena lentelės dalis Data Selection.Columns.Add(“Produktai”); //Čia taip pat bus lentelės dalis Data Selection.Columns.Add(“Paslaugos”); SelectionData.Columns.Add("Nuoroda");

4 užduotis. Duomenų perkėlimas į operaciją

Jei organizacija naudoja kelias apskaitos sistemas, anksčiau ar vėliau atsiras poreikis perkelti duomenis su vėlesne operacijų generacija.

Konfigūracijoje " BP„yra universalus dokumentas“ Operacija“ ir puikiai tinka formuoti daugiau laidų. Yra tik viena bėda – dokumentas pagamintas gudriai, o duomenų į jį negalima taip lengvai perkelti.

Tokio konvertavimo pavyzdį rasite straipsnio šaltinio kode. Kodo kiekis pasirodė gana didelis, todėl nėra prasmės jį skelbti kartu su straipsniu. Leiskite tik pasakyti, kad vėl įkeliant duomenų įkėlimo taisyklėse naudojamas savavališkas algoritmas.

Užduotis Nr.5. Duomenų sinchronizavimas įvairiose detalėse

Jau peržiūrėjome kelis pavyzdžius, bet vis dar nekalbėjome apie objektų sinchronizavimą migracijos metu. Įsivaizduokime, kad reikia perduoti sandorio šalis ir kai kurios iš jų tikriausiai yra gavėjų duomenų bazėje. Kaip perkelti duomenis ir neleisti atsirasti dublikatams? Šiuo atžvilgiu CD siūlo kelis būdus, kaip sinchronizuoti perkeltus objektus.

Pirmasis yra unikalus identifikatorius. Daugelis objektų turi unikalų identifikatorių, kuris garantuoja unikalumą lentelėje. Pavyzdžiui, kataloge „ Sandorio šalys“ negali būti dviejų elementų su tais pačiais identifikatoriais. CD atlieka šio ir visų sukurtų PCO skaičiavimus, pagal nutylėjimą nedelsiant įjungiama paieška pagal identifikatorių. Kurdami PCO turėjote atkreipti dėmesį į didinamojo stiklo vaizdą šalia objekto pavadinimo.

Sinchronizavimas naudojant unikalų identifikatorių yra patikimas būdas, bet ne visada tinkamas. Sujungiant katalogus “ Sandorio šalys“ (iš kelių skirtingų sistemų) tai nelabai padės.

Tokiais atvejais tikslingiau objektus sinchronizuoti pagal kelis kriterijus. Tikslingiau ieškoti sandorio šalių pagal INN, KPP, pavadinimą arba padalyti paiešką į kelis etapus.

Duomenų konvertavimas neriboja kūrėjo apibrėžiant paieškos kriterijus. Panagrinėkime abstraktų pavyzdį. Tarkime, kad turime sinchronizuoti katalogus " Sandorio šalys“ iš skirtingų informacinių bazių. Paruoškime PKO ir objekto konvertavimo taisyklių nustatymuose patikrinkite „ Tęskite paiešką paieškos laukuose, jei imtuvo objektas nerastas pagal identifikatorių“ Atlikdami šį veiksmą iš karto apibrėžėme du paieškos kriterijus – pagal unikalų identifikatorių ir pasirinktinius laukus.

Turime teisę patys pasirinkti laukus. Pažymėję TIN, KPP ir Vardą, iš karto nurodysime kelis paieškos kriterijus. Patogus? Gana, bet vėlgi to nepakanka. Ką daryti, jei norime pakeisti paieškos kriterijus? Pavyzdžiui, pirmiausia ieškome TIN+KPP derinio, o jei nieko nerandame, pradedame bandyti laimę su pavadinimu.

Tokį algoritmą gana įmanoma įgyvendinti. Įvykio tvarkyklėje Paieškos laukai“ galime nurodyti iki 10 paieškos kriterijų ir kiekvienam iš jų apibrėžti savo paieškos laukų sudėtį:

Jei SearchOptionNumber = 1, tada SearchPropertyNameString = "TIN, KPP"; KitaipIfSearchOptionNumber = 2 ThenSearchPropertyNameString = "Vardas"; EndIf;

Visada yra keli sprendimai.

Bet kuri užduotis turi keletą sprendimų, o duomenų perkėlimas tarp skirtingų konfigūracijų nėra išimtis. Kiekvienas kūrėjas turi teisę pasirinkti savo sprendimą, tačiau jei nuolat tenka kurti sudėtingus duomenų perkėlimus, primygtinai rekomenduoju atkreipti dėmesį į „“. Iš pradžių gali tekti investuoti išteklius (laiką) į mokymus, bet jie daugiau nei atsipirks pirmajame daugiau ar mažiau rimtame projekte.

Mano nuomone, 1C įmonė nesąžiningai ignoruoja duomenų konvertavimo temą. Per visą technologijos egzistavimą apie ją buvo išleista tik viena knyga: „1C: Enterprise 8. Duomenų konvertavimas: mainai tarp taikomųjų programų sprendimų“. Knyga gana sena (2008 m.), tačiau vis tiek patartina su ja susipažinti.

Vis dar reikia žinių apie platformas

"yra universalus įrankis, tačiau jei planuojate jį naudoti duomenų perkėlimui kurti iš konfigūracijų, sukurtų platformai 1C:Enterprise 7.7, tuomet turėsite skirti laiko, kad susipažintumėte su integruota kalba. Kalbos sintaksė ir ideologija labai skiriasi, todėl teks skirti laiko mokymuisi. Priešingu atveju principas išlieka tas pats.

1. Įvadas.

2. Ko jums reikės: 1C konfigūracija: Duomenų konvertavimas 2.* ir apdorojimas iš paketo. Pavyzdinėms užduotims imkime konfigūracijas 1C: Prekybos valdymas 11 ir 1C: BP 3.*.

Taigi, norint sukurti duomenų įkėlimo į 1C taisykles, jums reikės 1C konfigūracijos: Object Conversion 2, taip pat į paketą įtraukto apdorojimo.

Pavyzdžiui, mes jau įdiegėme konversijų duomenų bazę ir ją paleidome.

Parašysime mainų taisyklių kūrimą tarp 1C: Trade Management 11 ir 1C: Enterprise Accounting 3 konfigūracijos (UT / ACCOUNT mainų taisyklės).

3. Mums reikės apdorojimo, kad iškeltume metaduomenų struktūrą ir keistume.

Pirmas dalykas, kurį turite gauti kuriant, yra failai su metaduomenų struktūra. Tai atliekama naudojant apdorojimą metaduomenų struktūrai, įtrauktai į objekto konvertavimo paketą, iškrauti.

Tiesą sakant, į išpakuotą konfigūracijų katalogą kontroliuojamos formos mus domina MD83Exp.epf apdorojimas. Jei iškrovimas turi būti atliekamas iš konfigūracijų įprastose formose, tada naudojamas MD82Exp.epf apdorojimas. Taip yra, jei, pavyzdžiui, jums reikia gauti struktūrą iš konfigūracijų, tokių kaip 1C: UT 10, 1C: valdymas gamybos įmonė 1.3, 1C: Visapusiška automatika 1.1, 1C: Zup 2.5 ir pan.

Be to, norėdami įkelti ir atsisiųsti duomenis į 1C pagal mūsų taisykles, turėsite apdoroti „Universalus keitimasis duomenimis XML formatu“ V8Exchan83.epf, skirtas konfigūracijoms valdomose formose, pvz., 1C: Prekybos valdymas 11.*, 1C BP 3, 1C: ERP 2. * ir panašiai. Ir atitinkamai V8Exchan83.epf - konfigūracijai įprastose formose.

4. Konfigūracijos metaduomenų struktūros įkėlimas 1C: Prekybos valdymas 11.3 ir 1C: Įmonės apskaita 3.0.*

Pradėkime atsisiųsdami metaduomenų struktūrą iš 1C: Enterprise Accounting 3 konfigūracijos.
Atidarykime apdorojimą MD83Exp.epf

Apdorojimo formoje yra papildomi nustatymai, kur galime įjungti arba išjungti parinktį iškrauti registrus ir judesius 1C. Taip pat galima pasirinkti, kur bus įkeltas: 1C serveryje arba „kliente“. Nurodykite failo, į kurį bus įkelta duomenų struktūra, pavadinimą. Panašiu būdu iškrauname Trade Management 11 konfigūracijos metaduomenų struktūrą.

Dabar reikia įkelti konfigūraciją į konversijų duomenų bazę. Šį tašką galima pasiekti tiek iš konfigūracijų sąrašo, tiek iš konversijų sąrašo. Tiesiog paleiskite iš darbalaukio:

Dialogo lange įkelkite BP struktūrą:

Ir panašiai – Prekybos valdymo struktūra.

Kai atsisiuntimas bus baigtas, pasirodys dialogo langas, kuriame galėsite nurodyti jums patogų pavadinimą.

6. Konversijos taisyklių kūrimas 1C įjungta konkretus pavyzdys užduotys.

Tada eikite į „Objekto taisyklių nustatymas“, kur sukuriame naują nustatymą.
Konversijos kūrimo dialogo lange pasirinkite „šaltinio“ ir „paskirties“ konfigūraciją (kurią įkėlėte anksčiau) ir spustelėkite Gerai.

Kadangi šiame straipsnyje planavau parodyti kūrybą „nuo nulio“ ir „be šiukšlių“, primenu, kad nieko nekuriame automatiškai. Jokių prototipų.

Šiame dialogo lange nieko nedarysime, tiesiog spustelėkite „Uždaryti“.

Sukurkime taisykles, kaip įkelti ne vieną dokumentą į vieną, o vieno tipo į kitą, pavyzdžiui, dokumentą Prekių ir paslaugų pardavimas iš UT 11 su reikiamomis žinynais į dokumentą Prekių ir paslaugų gavimas BP 3.

Taigi, mes sukuriame naują PKO (objektų konvertavimo į 1C taisyklę)

Pasirinkite šaltinį Prekių ir paslaugų pardavimas ir paskirties Prekių ir paslaugų gavimas ir spustelėkite Gerai.
Tokiu atveju pasirodys dialogo langas, kuriame vėl atsisakome automatinio PKS (Property Conversion Rules) kūrimo. Toliau parinksime tik būtinus.

Tačiau į pasiūlymą sukurti DVP (duomenų įkėlimo taisykles) atsakome „Taip“.

Sukuriami PVD, kurie atsispindės apdorojant universalų XML mainų pasirinkimą:

Taip pat bus sukurtos duomenų konvertavimo taisyklės su tuščiomis nuosavybės konvertavimo taisyklėmis.

Be to, matyti, kad pagal nutylėjimą programinės įrangos siūloma ieškoti pagal vidinį objekto identifikatorių. Tai rodo didinamasis stiklas prie PCO. Paiešką atliksime patys, o pagal dokumento numerį ir datą dienos pradžioje.

Pašaliname paiešką pagal UIO:

Dabar pradėkime lyginti reikiamas objekto savybes (detalius). Norėdami tai padaryti, spustelėkite "Ypatybės sinchronizavimas" (ekrane etiketė "1"). Pašaliname rekursinį taisyklių kūrimą („2“). Pašaliname visas pažymėtas detales ("3"). Ir mes patys išsirinksime, ko mums reikia.

Pavyzdžiui, pasirinkite, ko jums reikia:

Atkreipiu dėmesį į tai, kad sandorio šalies PKS paversime organizacija, o organizacija – sandorio šalimi, taip pat palyginsime kai kurias detales, kurios nesutampa pagal pavadinimą, pvz., „Valiuta“ ir „Dokumentas“. Valiuta“.

Kur matome, kad dar nėra konvertavimo taisyklių.

Pradėkime nuo detalių, kurias reikia peržvelgti ir apibūdinti. Pirmiausia nustatome dokumentų paiešką, kaip rašiau anksčiau, įkeliame ir ieškome dokumento datos pradžioje ir keičiame numeraciją. Pirmuosius tris simbolius pakeisime priešdėliu „UTB“. Kadangi BP ir UT numeracija yra po 11 simbolių, sudarome sudėtinį skaičių: mūsų priešdėlis ir 8 šaltinio simboliai. Pavyzdys žemiau esančioje ekrano kopijoje.

Visada iškrauname neatlikusius ir be judėjimo dokumentus. Manome, kad dokumentai bus tvarkomi imtuve po to, kai vartotojas juos patikrins.

Norėdami tai padaryti, PCS, nustatęs, kaip nelaikyti, 0 arba 1, naudojamas kaip loginis dydis.

Naudodami valiutą kaip pavyzdį, sukuriame PKS objekto konvertavimo taisyklę. Tuo pačiu manome, kad abiejose duomenų bazėse yra valiutų, kurios turėtų būti sinchronizuojamos pagal kodą. Todėl valiutos PQS nesukursime visų PKS, o pridėsime tik paieškos kodą. Tie. Atsisakome pasiūlymo sukurti objekto PKS.

Sukurta konvertavimo taisyklė buvo pakeista į PKS dokumento PQR. O pačią numatytąją taisyklę siūlo unikalus identifikatorius. Pataisome, ieškome kodo ir nustatome nuosavybę, kad nebūtų sukurtas naujas objektas.

Dėl to gauname tokią parinktį:

Toliau pagal analogiją sukuriame PKO ir PKS likusioms detalėms. Be to, organizacijos ieškome pagal sandorio šalį ir atvirkščiai pagal TIN. Maždaug taip atrodo su minimaliomis detalėmis (jei reikia, galite pridėti).

PCO sandorio šalies sutarčių ieškome pagal PKS sandorio šalį, pavadinimą ir savininką.

Pažiūrėkime, kaip nurodyti reikiamą reikšmę surašymo tipe PKS. Pavyzdžiui, atributas „Operacijos tipas“. Čia galite naudoti įvairias sąlygas ir pakaitines reikšmes. Pavyzdžiui, mums reikia, kad „operacijos tipas“ visada būtų iškraunamas „Prekės“, šiuo atveju pakanka įrašyti reikiamą reikšmę eilutėje „kakta“.

Žemiau parodyta, kaip įdiegti be sunkumų ir daugeliu atvejų PCS abipusio atsiskaitymo daugybei, abipusio atsiskaitymo normai, apskaitos sąskaitai.

PKO Nomenklatūrai paliksime paiešką pagal vidinį unikalų identifikatorių. Bet leiskite atkreipti jūsų dėmesį į tai, kaip galite iš naujo apibrėžti savo grupę. Pavyzdžiui, sutinkame, kad nauja prekė būtų įkelta iš 1C: Trade Management 11 konfigūracijos, tačiau būtina, kad prekė būtų renkama konkrečioje grupėje „Mūsų grupė“.

Norėdami įgyvendinti šią užduotį, sukuriame kitą PKO. Pavadinkime jį „NomenclatureParent“, kurį konvertavimo taisyklėje nurodysime pagrindinio kompiuterio PCS.

Nustatėme dvi paieškas: pagal pavadinimą, kur griežtai nurodome savo grupės pavadinimą, o reikiama atributo „Tai yra grupė“ ypatybė nustatyta į „true“.

Kadangi nusprendėme, kad visos mūsų prekės patenka į mūsų grupę, iškraunant nereikia iškrauti grupių iš UT 11. Norėdami tai padaryti, Nomenklatūros programinėje įrangoje įvykių tvarkyklėje „Prieš iškrovimą“ nustatysime filtrą, kuris nereikia iškrauti grupių "Failure = Source. This group;".

Produktų ir paslaugų pardavimo DRP (duomenų įkėlimo taisyklėse) pridėsime filtrą, kad nebūtų įkeliami naikinti pažymėti dokumentai. Norėdami tai padaryti, VDP įvykių tvarkyklėse „Prieš iškrovimą“ įrašysime filtrą „Failure = Object.DeletionMark;“.


Sukurtas taisykles išsaugokime faile.


7. Apibendrinant: Duomenų įkėlimas ir įkėlimas naudojant sukurtas duomenų mainų taisykles.

Atidarykite „1C: Trade Management 11“ apdorojimą „Universalūs duomenų mainai XML formatu“ V8Exchan83.epf.

Iškrovimas baigtas, dabar mes naudojame tą patį apdorojimą, kad įkeltume į 1C: Enterprise Accounting 3.


Įkėlimas baigtas. Pažiūrėkime, kaip jis įkeliamas. Taigi, dokumentas įkeliamas taip, kaip norėjome – mūsų Organizacija įkeliama į sandorio šalį, o kita šalis – į organizaciją. Visos apskaitos sąskaitos yra atsisiunčiamos ir įdiegtos. Gavome dokumento numerį su priešdėliu ir dienos pradžioje. Visi pateikti duomenys buvo užpildyti.

Tikriname prekių pakrovimą. Matome, kad viskas pavyko taip, kaip planavome.


Sukūrėme ir užpildėme detales taip, kaip norėjome. Yra daug konvertavimo subtilybių ir keletas paprastų, bet būtinų dalykų, kurie padeda tiksliai parašyti konvertavimą. Ir tai leidžia sumažinti klaidų skaičių, nesugadinti esamų duomenų ir atsikratyti nereikalingų šiukšlių. Tai vienas iš labiausiai paprasti pavyzdžiai. Taip pat galite konvertuoti vieną objektą į daug arba, atvirkščiai, daug į vieną.

Dabar yra duomenų konvertavimas 3, jis išsprendžia kitas problemas. Todėl reikalingas ir 2 konvertavimas. Sėkmės visiems mokantis ir įsisavinant.

Žinoma, jei esate programuotojas ir tai yra jūsų pagrindinis darbas, galite pabandyti patys parašyti konvertavimą. Bet jei ne, tuomet vertėtų vertinti savo veiklos srityje savo laiką, o šią užduotį atlikti paprašyti profesionalų.

Specializuota konfigūracija „1C: Data Conversion 2.0“

Aštuntosios „1C: Enterprise“ platformos versijos išleidimas buvo reikšmingas žingsnis kuriant automatizavimo sistemas. Kuriant 1C: Enterprise 8 platformą, buvo atsižvelgta į didžiulę sprendimų naudojimo 1C: Enterprise 7.7 platformoje patirtį: buvo rimtai pertvarkyta integruota platformos kalba ir standartinės konfigūracijos, pakeista duomenų saugojimo ir prieigos struktūra, buvo sukurti nauji pramonės sprendimai , suvokiantys naujosios platformos pranašumus . Ankstesnių kalbos konstrukcijų naudojimas naujoje platformoje tapo nepraktiškas.

Siekdama palengvinti šios užduoties sprendimą (duomenų perkėlimas iš 7.7 versijos į 8 versiją), 1C išleido specializuotą konfigūraciją „Duomenų konvertavimas 2.0“. Jis sukurtas siekiant padėti specialistams spręsti įvairias duomenų perdavimo užduotis. 1C išleido paruoštas duomenų perdavimo iš panašių konfigūracijų taisykles, pavyzdžiui, iš 1C: Apskaita 7.7 į 1C: Apskaita 8, tačiau nestandartinių ar modifikuotų standartinių konfigūracijų vartotojai turės sukurti perdavimo taisykles, pereidami prie 1C: Enterprise. 8 platformos duomenis.

Atsižvelgiant į įvairius privačius duomenų perdavimo problemų sprendimo metodus, sprendžiamų problemų spektras praktiškai nesikeičia:

Sinchronizavimas informacinė informacija(naujų kūrimas, esamų katalogo elementų atnaujinimas, hierarchijos trynimas, išsaugojimas ar keitimas, duomenų šakojimas, periodinių detalių reikšmių pasikeitimų istorijos perkėlimas);

Dokumentų ir operacijų sinchronizavimas (dokumentų kūrimas, keitimas arba vienos rūšies dokumentų konvertavimas į kitą, sujungimas ar dauginimas);

Pakankamų pradinių sąlygų apskaitos registrams tvarkyti sudarymas ekonominė veikla(likusių prekių perdavimas ir pan.).

Duomenų saugojimo struktūros 1C:Enterprise skiriasi skirtingomis versijomis ir (arba) konfigūracijomis, todėl duomenų perdavimas yra ne paprastas failų ar lentelių kopijavimas, o jų konvertavimas. Kad transformacija būtų nedviprasmiška ir teisinga, turi būti sukurtos ir sukonfigūruotos duomenų perdavimo taisyklės. Sukurti ir konfigūruoti duomenų perdavimo tarp skirtingų informacinių bazių taisykles galima, jei žinoma duomenų saugojimo šaltinio ir paskirties duomenų bazėse struktūra. Konfigūracijos metaduomenų struktūros aprašymas turėtų būti suvienodintas. Duomenų konvertavimo 2.0 konfigūracija naudojama duomenų perdavimo taisyklėms kurti ir konfigūruoti remiantis šaltinio ir paskirties konfigūracijos metaduomenų struktūros aprašymais.

Duomenų perdavimo tarp informacinių bazių procesas susideda iš šių etapų:

  • 1. Metaduomenų aprašo failų kūrimas.
  • 2. „Duomenų konvertavimo“ konfigūracijų kūrimas.
  • 3. Pačios konversijos sukūrimas.
  • 4. Nuoseklus duomenų konvertavimo taisyklių kūrimas.
  • 5. Nuoseklus duomenų įkėlimo taisyklių kūrimas.
  • 6. Faktinė duomenų įkėlimo ir įkėlimo iš vienos konfigūracijos į kitą procedūra.

Nes Šios specializuotos konfigūracijos naudojimas yra vienas efektyviausių Šis momentas tokio pobūdžio problemų sprendimo būdai, be to, labai naudingas šaltinis švietimo tikslais Asmeninė patirtis, tada sukurti LLC „OOO“ duomenų mainų tarp IS „Serveris: Nuomos apskaičiavimas“ ir „1C: Įmonės apskaita“ mechanizmą, pasirinktas metodas, pagrįstas „Data Conversion 2.0“ konfigūracijos naudojimu.

Duomenų konvertavimas 2.0 ir 2.1 yra technologinė 1C konfigūracija, įdiegta platformos versijose nuo 8.1 iki 8.3.

Pagrindinė įrankio užduotis yra parašyti taisykles, kaip keistis tarp taikomųjų programų sprendimų 1C 8 ir 7. Dabartinė duomenų konvertavimo versija šiandien yra 3.0.

Duomenų konvertavimas yra labai naudinga konfigūracija, kurios pagalba galite išspręsti ne tik informacijos perkėlimo iš vienos informacijos bazės į kitą problemą, bet ir, pavyzdžiui, informacijos konvertavimą vienoje duomenų bazėje.

Konfigūraciją labai patogu naudoti su .

Duomenų konvertavimas bus naudingas bet kuriam programuotojui: turėti įgūdžių kurti mainų taisykles yra rimtas pliusas profesiniams įgūdžiams.

Norint išmokti dirbti su konfigūracija, sprendimas geriausiai tinka praktines problemas. Pabandykite patys sugalvoti užduotis, pavyzdžiui: perkelti dalį informacijos iš vienos duomenų bazės į kitą, pardavimo dokumentą paversti kvito dokumentu, einamuosius apskaitos likučius „įvesti“ į dokumentą „likučių įvedimas“ ir kitus darbus.

Bus labai naudinga suprasti „standartines“ keitimosi taisykles 1C 8.3, ten dažnai galite rasti įdomių užduočių įgyvendinimo pavyzdžių.

Norėdami suprasti pagrindus, jums reikės medžiagų, mes jas apsvarstysime toliau.

Video instrukcijos konvertavimui

Norėdami sužinoti pagrindų, kaip nustatyti duomenų mainus 1C naudojant „1C duomenų konvertavimo“ konfigūraciją, žr. vaizdo įrašo pavyzdį:

Medžiaga, vadovėliai, skirti mokytis 1C duomenų konvertavimo 2.0

Medžiagos ir dokumentacijos internete nėra per daug, stengiausi surinkti svarbiausią ir įdomiausią medžiagą:

0. Pirmiausia rekomenduoju nemokamą Iljos Leontjevo video kursą, kurį rasite adresu nuoroda.

1. Konfigūruojant pirmiausia patarčiau naudoti įmontuotą pagalbą. Tai tikrai gerai parašyta ir techniškai gerai įgyvendinta:

2. Antras pagal svarbą informacijos šaltinis yra svetainė http://www.mykod.info/ (svetainė uždaryta), kuri specializuojasi būtent duomenų konvertavime. Čia galite atsisiųsti daugybę medžiagų apie konversiją.

3. Atskirai norėčiau pabrėžti vadovėlį – (autorė – Olga Kuznecova).


2023 m
newmagazineroom.ru - Apskaitos ataskaitos. UNVD. Atlyginimas ir personalas. Valiutos operacijos. Mokesčių mokėjimas. PVM. Draudimo įmokos