Dokumendi teisendusskeemi ei leitud. Kuidas andmete edastamisel viga leida

1C andmete teisendamise õpik (väljaanne 2) Objektide teisendamise reeglid

Nagu me juba teame, kasutatakse objektide teisendamise reegleid objektide sobitamiseks lähte- ja sihtkoha konfiguratsioonis. Loomulikult määrab reegel andmeallika objekti (st kust andmeid hankida) ja andmevastuvõtja objekti (st kuhu andmed üle kanda või kirjutada).

Lisaks neile on veel hulk omadusi, mille tähendust püüame paljastada.

Otsige sihtobjekti lähteobjekti sisemise identifikaatori järgi- lipp, mis määrab V8 platvormi versiooni vastuvõtjas objektide otsimise. Kui see lipp on märgitud, otsitakse vastuvõtja andmebaasist muutmiseks objekti, kasutades objekti sisemist (unikaalset) identifikaatorit. See identifikaator pole kasutajale nähtav ja programm säilitab teabebaasi identifikaatorite kordumatuse, nii et kahel teabebaasi objektil pole ühesuguseid identifikaatoreid.

Jätkake otsingut läbi otsinguväljade, kui vastuvõtjaobjekti identifikaatori järgi ei leita- lipp otsustab jätkata objekti otsimist vastuvõtja infobaasis, kui kordumatu identifikaatori järgi otsimine ei anna positiivset tulemust.

Ärge asendage laadimisel vastuvõtjas olemasolevaid objekte, vaid looge ainult uued ja täitke need *- lipp määrab, kas objekti üksikasju on vaja muuta vastuvõtja infobaasis, kui objekt leiti edukalt kordumatu identifikaatori või otsinguväljade järgi.

Ärge looge vastuvõtjas uut objekti, kui seda EI leitud *- lipp määrab, kas vastuvõtja infobaasi tuleb luua uus objekt, kui seda ei leitud kordumatu identifikaatori või otsinguväljade järgi.

Objekti viitega ülekandmisel ÄRGE looge uut objekti, vaid kandke ainult viide- lipp määrab, kas vastuvõtja infobaasis tuleb luua uus objekt, kui seda ei leitud kordumatu identifikaatori või otsinguväljade järgi, kui objekt edastatakse viitega. Kui objekti ei leita ja seda otsitakse unikaalse identifikaatori järgi, siis kantakse üle ainult link objektile (ilma otsinguväljadeta - üks link). Kui objekt laaditakse maha otse (st ei laadita maha ainult linki objektile, vaid ka kõiki selle detaile), siis lipp ei mõjuta midagi.

Ärge laadige lähtevaraobjekte linkide kaudu maha- lipp määrab, kas on vaja maha laadida kõik objektid, millele lähteobjektil on lingid või piisab ainult nende objektide linkide teabe mahalaadimisest. Oletame, et laadite üles toote teatmeteost. Kui vastaval PKO-l pole seda märkeruutu märgitud, siis laaditakse lisaks kaubale maha kõik objektid, millele see viitab. Kui lipp on kukil, siis objekte, millele nomenklatuur viitab, maha ei laadita. Märkige see ruut ja vaadake saadud andmete üleslaadimise faili, seejärel eemaldage see ja võrrelge tulemusi. Saate kiiresti aru selle tähendusest.

Ära jäta laadimata esemeid meelde- lipp määrab, kas süsteem peab mahalaadimisel viimati mahalaaditud objektid vahemällu salvestama. Vahemällu salvestamine võimaldab kiirendada andmete üles- ja laadimisprotsessi.

Kasutage üleslaadimisel ja laadimisel kiiret objektiotsingut- lipp määrab, kas kasutada üleslaadimiseks objektide kiirotsingut. Seda on mõttekas kasutada väikese arvu kataloogikirjete jaoks (kirjete arv ei ületa 1000 elementi). Efekt saavutatakse, kui paljudel objektidel on lipp seatud Ärge laadige atribuudiobjekte viitega maha. Selle andmete üles- ja laadimisskeemiga suureneb kiirus mitu korda.

Kui see pole määratud, genereerige automaatselt number või kood- lipp määrab, kas süsteem peab automaatselt genereerima uue koodi või objekti numbri, kui seda enne salvestamist ei täideta.

On-line vahetus

Laadige objekt maha (täielikult), ainult siis, kui sellele on link- seadistus määrab, millistel asjaoludel tuleb objekt maha laadida. Kui märkeruut on märgitud, laaditakse objekt maha vastavalt järgmistele reeglitele:

  1. Mahalaadimise reeglite kohaselt, kui objekt on juba maha laaditud, laadige see maha nii nagu on
  2. Mahalaadimise reeglite järgi, kui objekti maha ei laaditud, siis me maha ei laadi
  3. Objekti lingi abil üleslaadimisel laadime üles kogu asja

Näiteks kui teil ei ole vaja ühest IS-ist teise teisaldada kogu üksust, vaid ainult seda, millele on lingid, teeb seda märkeruut.

Ärge asendage laadimise ajal vastuvõtja teabebaasi loodud objekti- seadistus määrab, kas on vaja üle kanda (tagasi) objekti, mis on loodud teabebaasi, millega vahetus korraldatakse. See tähendab, et kui dokument loodi infobaasis 1 ja sisestati vahetuse kaudu infobaasi 2, siis kas see peaks andmebaasis 2 muutmisel üle kandma 1. infobaasi. Seade võimaldab määrata objekti prioriteedi vahetamise kohas? selle loomine. See tähendab, et muudatused teabebaasis, kus objekt loodi, levitatakse kõikjal ja muudes andmebaasides tehtud muudatused ei mõjuta seda objekti andmebaasis 1.

Objekti prioriteedi laadimine- säte määrab objekti prioriteedi laadimisel muudatuste kokkupõrke korral. Vaikeväärtus ja tühja väärtuse korral on Above. Kokkupõrke korral analüüsib programm allalaaditava objekti prioriteeti. Ainult siis, kui allalaaditava objekti prioriteet on võrdne väärtusega Above, salvestatakse see vastuvõtja teabebaasi. Kui prioriteet on Sama või Below, salvestab programm infobaasi vastava info kokkupõrke kohta, kuid ei muuda objekti.

Otsinguvälja seadete valikud- tabel võimalike valikutega kasutaja otsinguväljade seadistamiseks. Reeglite kujundaja määratleb võimalikud otsinguväljade kombinatsioonid, mida kasutaja saab börsi seadistamisel valida. Kõik reegli arendaja määratud seaded tuleb töödelda töötleja koodis „Otsinguväljad”. Muutuja SearchSettings töötlejas määrab kasutaja valitud sobitamisvaliku (SettingNameForAlgorithm vastavast tabelirealt). Kui kasutaja ei valinud ühtki sobivat valikut või talle ei pakutud ühtegi valikut, on otsinguseaded tühi string.

Vahekaardil "Täpsemalt" saate muuta reegli nime, selle kaasamist konkreetsesse rühma ja ka reegli kirjeldust.

Tere päevast, kallid ajaveebi lugejad. Sellel saidil avaldati varem artikkel konversiooni kohta
, see artikkel näitas
kuidas saate vahetusreegleid loovate konstruktorite abil vahetust seadistada.
Seda meetodit saab kasutada andmebaaside teisendamiseks 1C versioonist 7.7 versiooniks 8.2.
Nüüd räägime sellest, kuidas edastada andmeid 1C 8.2 konfiguratsioonide vahel, mis erinevad üksteisest veidi.

Selle artikli põhirõhk on dokumendi tabeliosa teisendamisel, mis tähendab seda
me töötame koos atribuutide rühma teisendusreeglid – PKGS.

Ettevalmistus PKGS-i seadistamiseks – atribuutide rühma teisendamise reeglid

Edastame dokumendi "Kaubade ja teenuste kättesaamine", millel on erinevused tabelijaotise "Kaup" atribuudis KM määr.
allika ja vastuvõtja andmebaasis. Lähteandmebaasis on selle atribuudi tüüp "DirectoryLink.VAT Rates",
ja vastuvõtja andmebaasis - tüüp "TransferLink.VAT Rates".

Muide, mugavuse huvides saate määratleda

Lisaks peame vastuvõtjate andmebaasis täitma "Konto BU" detaili, mis samuti asub
dokumendi “Kaubade ja teenuste vastuvõtt” tabelijaotises “Kaubad”. Täidetavad andmed võtame “Kontoarvestuse” üksikasjadest.
vastuvõtjate andmebaasi teatmeteos “Nomenklatuur”.

Olukorra teeb keeruliseks asjaolu, et töötame tabeliosaga, seega peame konfigureerima
atribuutide rühma teisendusreeglid – PKGS. Peame pääsema juurde tabeliosa praegusele reale.

Teisendusreeglite loomine 1C atribuutide rühma jaoks

Oleme juba välja töötanud dokumendi “Kaubade ja teenuste kättesaamine” teisendusreeglid.

Kuid tabeliosa "Tooted" jaoks puudub vara ümberarvestamise reeglid"käibemaksumäärad".
Peate lisama uue kinnisvara teisendusreegli, klõpsates nuppu "Sünkrooni atribuudid...".

Ilmub dialoog "Omavara teisendamise reeglite seadistamine (kaupade ja teenuste vastuvõtmine)".

Peate kordama pildil tehtut ja klõpsama nuppu "OK".

Kuigi oleme loonud atribuutide rühma teisendusreegel, kuid see pole veel valmis.
Pidage meeles, et tabelijaotise "Käibemaksumäärad" üksikasjad erinevad väärtuste tüüpide poolest.
Lähteandmebaasis on selle atribuudi tüüp "DirectoryLink.VAT Rates",
ja vastuvõtja andmebaasis - tüüp "TransferLink.VAT Rates". Meil on siin reegel puudu
Kataloogist loendi teisendamine.

Atribuutide rühma teisendusreeglite sündmuste töötlejad

Atribuutide teisendamise õigesti konfigureerimiseks peate looma uue objekti teisendamise reegli.

Ilmuvas dialoogiaknas näitame, et kataloog „Käibemaksumäärad” on teisendatud samanimeliseks ülekandeks.

Selle reegli jaoks ei kehti vara teisendamise reegleid.
Seetõttu valige selle reegli salvestamisel ilmuvas dialoogiaknas "Ei".

Dialoogis küsimusega "Loo andmete üleslaadimise reeglid?" Valime ka "Ei".

Topeltklõpsuga avame dialoogi objektide teisendamise reegli (PKO) “Käibemaksumäärad” seadistamisega.
Siin, vahekaardil „Sündmuste töötlejad” valige sündmus „Mahalaadimisel” ja määrake „Allikas” ja
"Link Node", see tähendab, mis edastatakse.

Kui Allikas. Rate = 0 Siis
LinkNode = "Bid0" ;
ElseIf Allikas. Panus = 12 Siis
NodeLinks = "Bet12" ;
ElseIf Allikas. Nimi = “ilma käibemaksuta” Siis
NodeLinks = "Käibemaksuta" ;
EndIf ;

Pärast töötleja kirjutamist klõpsake nuppu "OK".

Teave töötlejate kohta:

Allikas – Kohandatud – üles laaditud lähteobjekt (link või kohandatud andmed).
Link Node – lähtestatud xml lingi sõlm. Võib kasutada
näiteks muude objektide omaduste lähtestamiseks.

Nüüd näitame selgesõnaliselt selle objekti teisendamise reegli kasutamist atribuudi „KM määr” mahalaadimisel.
Minge dokumendi "Kaubade ja teenuste kättesaamine" vahekaardile "Properties Conversion (*)" ja avage konversioon
atribuutide rühma “Tooted”, topeltklõpsake atribuuti “Käibemaksumäärad” ja avanevas dialoogis väljal “Reegel”
valige objektile “KM-määr” teisendusreegel.

Klõpsake nuppu "OK".

Nüüd peame lihtsalt seadistama raamatupidamiskontod vastavalt kauba jaoks määratud väärtustele.
Liigume vahekaardile "Objekti teisendamise reeglid", leidke objekt "Kaubade ja teenuste vastuvõtt" ja
Topeltklõps sellel avab objekti teisendamise reeglite (OCR) dialoogi.
Minge sündmuse "Pärast laadimist" vahekaardile "Sündmuste töötlejad" ja kirjutage järgmine tekst:

Iga objekti LineTCH jaoks. Toodete tsükkel
LineTC. KontoAccountBU = LineTC. Nomenklatuur. KontoAccountBU;
EndCycle ;

Nüüd laadime need reeglid allikasse, kasutades välist töötlemist "Universal Data Interchange in XML Format" - "V8Exchan82.epf".
Laadime andmed üles xml-faili. Seejärel avage sama töötlemine vastuvõtja andmebaasis ja valige üleslaaditav xml-fail ja laadige andmed.

Muide, "Universal Data Interchange in XML Format" töötlemist saab avada menüükäsu kaudu
"Teenus" | "Muud andmevahetused" | "Universaalne andmevahetus XML-vormingus". Sellest kirjutati veidi märkuses.

On teada, et 1C programmid on mugav ja multifunktsionaalne tööriist raamatupidamise automatiseerimiseks, mis sobib väga erinevate tööstusharude ja tegevusalade ettevõtetele. See tööriist on aga keeruline ja kahjuks tekivad sellega töötamisel sageli erinevat tüüpi vead. Selles artiklis näitame teile, kuidas leida ja lahendada viga, mis ilmnes andmete migreerimisel, kasutades selleks loodud reegleid Andmete teisendamise tehnoloogiad 2.0. Mida teha, kui üleslaadimine ebaõnnestub või andmeid vastuvõtvasse andmebaasi pole võimalik laadida? Meie artikli eesmärk on neile küsimustele vastata.

Seega, kui olete ostnud andmete teisendamise reeglid, avanud edastuseks töötlemise, määranud kõik seaded, kuid üleslaadimine katkeb ja teenuseteadetesse ilmub veateade, on siin mõned võtted, mis aitavad teil viga leida ja kõrvaldada.

Kõigepealt kontrollige oma programmi väljalaskeversioone vastavalt reeglites määratletule. Väikese lahknevusega versioonide vahel allikas probleeme ei teki, kuid kui teie versioon on viimastest versioonidest oluliselt maas, siis reeglid ei tööta. Konfiguratsiooni versioon vastuvõtja peab olema identne reeglites määratuga.

Kuidas ma saan näha, milliste väljaannete jaoks reeglid kehtivad? Lihtsalt avage reeglite fail mis tahes redaktoriga (vaikimisi võib see olla Internet Explorer või Notepad) ja vaadake esimesi ridu – need sisaldavad lähte- ja sihtkoha versioone.

Joonis 1. Vaata reegleid

Mida teha? Kui teil on selline võimalus, värskendage lähteprogrammi teisendusreeglites määratud versioonile. Kui te ei saa programmi värskendada, ei saa te nende reeglitega töötada.

Kuid võib-olla olete seda kõike juba teinud ja üleslaadimine toimub endiselt vigadega? Seejärel proovige leida probleemne element, mis takistab programmi korrektset laadimist.

Me demonstreerime vigade otsimisel toimingute algoritmi, kasutades näidet andmete ülekandmisest KA 1.1-st BP 3.0-sse.

Toimige järgmiselt: keelake kõik ülekandereeglid ja laadige üksikud reeglirühmad ükshaaval maha. Need. esmalt proovige ainult maha laadida Arvestuspoliitika, siis ainult Sissetulevad saldod, ainult Kataloogid jne. (Joonis 2). Enamasti tekivad probleemid dokumentide mahalaadimisel, samas kui muud tüüpi objektid laaditakse maha tavapäraselt, seega kasutame nende näidet edasiste toimingute kaalumiseks. Nüüd peate iga dokumendi teisendusreegliga kordama protsessi alternatiivse üleslaadimisega. Need. üles omakorda ainult avansiaruandeid, ainult ülekantud akreditiivi jne. vastavalt nimekirjale, nagu on näidatud joonisel 3.

Joonis 2. Objektide rühmade järjestikune mahalaadimine

Joonis 3. Objektitüüpide ükshaaval mahalaadimine

Seega oletame, et üleslaadimine katkeb, kui kõik üleslaadimisreeglid on valitud Dokumentatsioon. Laadisite kõik dokumenditüübid ükshaaval üles, läbisite kõik positsioonid ükshaaval ja arvutasite, et viga ilmneb ainult näiteks dokumentide üleslaadimisel Tegevus (raamatupidamine ja maksuarvestus). Järgmisena tuleks probleemse dokumendi leidmiseks üleslaadimisperioodi järk-järgult kitsendada. Esmalt laadige üles kvartali, kuu, nädala kaupa, kuni leiate päeva, mil üleslaadimine ebaõnnestus.

Mida teha? Kui teil õnnestub leida konkreetne tõrke põhjustav dokument ja näete, milles probleem kõige tõenäolisem on, on suurepärane. Võimalusel parandage dokument või lihtsalt ärge seda üle viige – ühe dokumendi parandamine on palju lihtsam kui kogu migreerimine käsitsi. Edastamise sooritamiseks ilma ainult ühe dokumendita kasutage kõrvalolevas aknas olevat valikut. Veerus "Võrdluse tüüp" määrake "Pole võrdne", valige "Väärtus" probleemne dokument ja jätkake üleslaadimist nagu tavaliselt.

Joonis 4. Dokumendi valimine üleslaadimisel

Olgu, aga mis siis, kui üleslaadimine on õigesti lõpetatud, kuid andmeid ei saa teise andmebaasi laadida? Esmalt võtke aega ja kontrollige uuesti, kas tegite kõik õigesti ja kas programmi versioonid ühtivad. Erinevalt allikast peab vastuvõtja väljalaskeversioon täpselt vastama reeglites täpsustatule, vastasel juhul saate alati vea.

Mida teha? Laadimisetapi vigu saab enamasti parandada ainult mahalaadimisetapis, seega on probleemi leidmise protseduur sama, mis ülalpool kirjeldatud, ainult ühe erandiga - pärast iga mahalaadimist on vaja laadimist korrata. leidke vastuvõtvas andmebaasis olevat elementi, mida ei laadita alla. Järgige sama järjestust – esmalt migreerige objektivaadete rühm, seejärel konkreetsed vaated kindlate kuupäevade järgi ja lõpuks eemaldage probleemne üksus, mis takistab edukat laadimist.

Kui tüüpiline töötlemine ei saa üleslaadimist õigesti sooritada ja protsess peatub, kuvatakse teenuseteadetes alati veateade. Mõnel juhul on tõesti võimalik selle vea asukoht ja põhjus leida vaid erinevat tüüpi objekte ükshaaval maha laadides. See pole aga ainus viis. Sageli on tõrke põhjus juba teenindusteates avalikustatud, peate selle lihtsalt õigesti läbi lugema.

Vaatame mahalaadimise näidet KA 1.1. Kasutaja laadib välja lähteandmebaasist Sissetulevad saldod 2018 aasta alguses. Mahalaadimisprotsess katkeb ja programm kuvab mitu teenindusteadet, sealhulgas järgmist:

Viga sündmuste käitlejas BeforeProcessingUploadRules
PVD = Ülejäänud_materjalid
Handler = BeforeProcessingDataUpload
DescriptionErrors = Viga objekti atribuudi väärtuse hankimisel (allika atribuudi nime järgi)
PKO = nomenklatuur (kataloog: nomenklatuur)
PKS = 15 (artikkel --> artikkel)
Objekt = keevitusmasina inverter VDI 160R (põhivara)
Vastuvõtja atribuut = artikkel (string)
DescriptionErrors = Objektivälja ei leitud (artikkel)
ModulePosition = töötlemine.UniversalXMLDataExchange.ObjectModule(8283)
Sõnumikood = 13
ModulePosition = töötlemine.UniversalXMLDataExchange.ObjectModule(1694)
Sõnumikood = 31

Võiks minna rasket teed ja maha laadida ükshaaval erinevat tüüpi saldosid (põhivara jäägid, immateriaalse põhivara jäägid jne) ning leida, et viga tekib reeglijärgsel mahalaadimisel. Ülejäänud_materjalid. Või näete veateates kohe reegli nime. Vaata, teate vea ärakirja kõige esimene rida ütleb täpselt seda. DVP – andmete üleslaadimise reegel. Andmete üleslaadimise reegel on võrdne Remaining_Materials. Me ei pea midagi otsima, programm ise ütleb teile, kus viga tekkis.

Riis. 5.1. Teenuse veateade

Sama lihtsalt leiame põhjuse. Järjekorras KirjeldusErrors kirjutatud Pole kasutaja jaoks väga selge sõnum. Siiski saame aru, et viga peitub objekti mingis omaduses. Mis objekt? See, mis on real märgitud Objekt selles sõnumis. Sel juhul on see objekt Keevitusmasina inverter VDI 160R (põhivara). Juba praegu võite märgata lahknevust. Andmete üleslaadimise reegel helistas Ülejäänud materjalid, järjekorras Objekti teisendamise reegel (OCR) kirjutatud Nomenklatuur, miks on objektitüüp kirjutatud kujul Põhivara? Uurime lähteandmebaasi ja kontrollime, kas leidsime tõesti õige objekti.

Konto 10.09 “Varud ja majapidamistarbed” saldodest leiame oma probleemse objekti - subconto Keevitusmasina inverter VDI 160R(vt joonis 5.2)

Riis. 5.2. 2018. aasta konto 10.09 bilanss

Kui avate selle alamkonto, näete seda kohe Keevitusmasina inverter VDI 160R on tõepoolest põhitööriist, mitte nomenklatuur (vt joonis 5.3). Mis üle jääb Keevitusmasina inverter VDI 160R osutus kontol 10.09 täiesti ilmne viga, mis vajab parandamist.

Riis. 5.3. Põhivara kaart Keevitusmasina inverter VDI 160R

Mahalaadimisviga on sel juhul tingitud valest objektitüübist. Ülejäänud materjalide mahalaadimise reegli kohaselt tuleks need maha laadida Nomenklatuur- materjalid, kütus, inventar jne. Sellistel objektidel on teatud omaduste komplekt, mis kantakse üle teise andmebaasi vastavalt teisendusreeglile. Tüübiga objektide jaoks Peaasi omaduste kogum on täiesti erinev. Materjalide mahalaadimise reegli järgi ei saa sellist eset kuidagi maha laadida. Programm identifitseerib objekti kui Nomenklatuur kuid ei leia sellest vajalikke atribuute ja vastavalt sellele ei saa seda failiks kirjutamiseks teisendada. See on sõnumis öeldud Viga objekti atribuudi väärtuse hankimisel (allika atribuudi nime järgi).

Selles näites saab probleemi üsna lihtsalt lahendada - meie reeglites on parameeter Ärge laadige tasakaalu, kui kogus on null. Kui see on paigaldatud, siis nullkogusega kaalusid lihtsalt ei laadita maha. Nagu näete joonisel 5.2 esitatud bilansis, ei ole selle alamkonto saldodel kogust, s.o. seda probleemset jääki saab määratud parameetri abil hõlpsasti eemaldada.

Muudel juhtudel, kui pole võimalik objekti filtri või parameetri abil välistada, peab kasutaja enne andmete migreerimist lähteandmebaasis vea parandama.

Näide veast.

Vaatame näidet veel ühest andmeedastuse käigus avastatud veast.

Esmakordsel dokumentide üleslaadimisel nägi kasutaja süsteemisõnumites järgmist teksti. Veateade võimaldab meil vahele jätta tõrke leidmise mehhanismi ja liikuda edasi selle parandamise juurde. Sellised teated ei ilmu alati ja mõnikord tuleb ikkagi ükshaaval mahalaadimise meetodil viga otsida. Oleme juba eespool arutanud, kuidas sellist sõnumit lugeda.

Joonis 6.1. Veateade

Niisiis, programm ise ütleb meile probleemse dokumendi - see on Arve ostjale IPBP-000008, mis tähendab, et läheme kohe dokumendi juurde ja proovime välja selgitada, milles viga.

Nagu näete jooniselt 6.2, on selle dokumendi tabelijaotises “Kaubad ja teenused” ühes reas seatud kaubagrupp, mitte kaup ise, mis iseenesest on viga. Loomulikult ei määra selle dokumendi teisendusreeglid, kuidas objekti sellest tabeliosast teisendada nomenklatuurirühm, see on temast täiesti erinevat tüüpi element nomenklatuur, ja programmil pole teavet selle kohta, kuidas elementi teisaldada, välja arvatud reeglites määratud. Seetõttu ei tunne teisendusprotsess seda ära, ei saa seda teisendada ja annab välja vea.

Joon.6.2. Veaga dokument

Kuidas ja miks see loodi, meid hetkel ei huvita. Otsustame dokumenti mitte migreerida, mis tähendab, et jätame selle migreeritud objektide loendist välja. Dokumendi üleslaadimise reegli leidmine Ostjale tasumiseks arve, valige see, minge valiku juurde, määrake väli - link, võrdlustüüp - mitte võrdne, väärtus - meie probleemdokument. Seega jätame selle dokumendi ülekantavate objektide nimekirjast välja ja üleslaadimine peaks toimuma tavapäraselt.

Joon.6.3. Dokumendi välistamise eelistuste määramine

Pärast seda saate jätkata üleslaadimist teile sobival viisil - edastada kõik dokumendid korraga või kanda tasumiseks ainult Arved, välja arvatud leitud dokument, ja seejärel kanda ülejäänu - andmeedastuse järjekord võib olla mis tahes.

Siinkohal tuleb märkida, et töötlemisel on objektide valimise võimalus olemas GenericXML andmevahetus mitte kõigis tüüpilistes konfiguratsioonides. Täpsemalt, hallatava rakenduse režiimis selline funktsionaalsus puudub. Eelkõige standardkonfiguratsioonis Integreeritud automaatika versioon 1.1 Saate töötada nii tavalises rakendusrežiimis kui ka hallatud rakenduse režiimis või, nagu öeldakse, hallatud vormide režiimis. Esimesel juhul on standardtöötluse valikud võimalikud (vt joonis 4), teisel juhul mitte. Seejärel peate kasutama töötlemise muudetud versioone (vt joonis 6.3). Kui konfiguratsiooni kasutatakse platvormi ühilduvusrežiimis 8.2 (see on eriti KA 1.1 Ja UPP 1.3), siis on töötlemine vajalik GenericXML andmevahetus versioonid 2.1.7 . Kui ühilduvusrežiimi ei kasutata, näiteks konfiguratsioonis Enterprise Accounting väljaanne 3.0, siis peate töötama versioonitöötlusega 2.1.8 . Nendel hoolitsustel on ka lisavõimalused logiraamatust valikute täitmiseks (täpsemalt), seega ei kuulu need kõikide tarnevõimaluste hulka, kuid neid saab alati osta kas pakendi osana, millel on märge kui valikuga eluloo järgi, või eraldi.

Nii näeb üldiselt välja 1C andmete edastamisel tekkinud vea leidmise ja kõrvaldamise protsess.

Muid kasulikke materjale leiate artiklite jaotisest või meie veebisaidilt.

© Anna Balyasnikova, viimased muudatused aprill 2018

Selle vahetusreegli eesmärk on kanda vastastikuste arvelduste saldod BP 2-st TÜ11-sse.

Vahetusreegli samm-sammult loomine, kasutades konfiguratsiooni "Andmete teisendamine" (metaandmed tuleb laadida):

1) Looge selleks objekti üleslaadimise reegel, minge vahekaardile "Andmete üleslaadimise reeglid", klõpsake nuppu Lisa. Ilmuvas aknas valige näidisobjekt, see on isearvestusregister. Muudame valimimeetodi suvaliseks algoritmiks.

2) Liigume edasi koodi enda kirjutamise juurde, sest TÜ-s isearvestusregister puudub, seega peame selle teisendama. Esiteks vajame päringut, mis vastavalt meie parameetritele tagastab omavaheliste arvelduste saldod. Sündmuste töötlejasse "Enne töötlemist" kirjutame järgmise päringu:

QueryText = "VALI
| Isemajandavad saldod. Konto,
| Self-supportingRemains.Subconto1 AS Subconto1,
| ISNULL(SUM(Self-AccountingRemaining.SummaJäänDt),0) AS SummaJälejäänudDt,
| ISNULL(SUM(Self-accountingRemains.AmountRemainingCt),0) AS SummaJälejäänudCt,
| MAXIMUM(kuluarvestuse saldod.Alamkonto2.Kuupäev) AS Arveldusdokumendi kuupäev,
| MAKSIMAALNE(Enesearvestuse saldod.Alamkonto2.Number) AS raamatupidamisdokumendi number
|ALT
| Raamatupidamise register (&OnDate, Konto = &konto,) AS Isemajandavad saldod
|KUS
<>&rühm ja
| Isemajandavad saldod 1. Emakonto<>&rühm1
|GROUP BY
| Isemajandavad saldod. Konto,
| Isemajandavad saldod 1.
| IsemajandavJääb.Subconto2
|TELLI
| Subkonto1
|AUTOTELLIMUS";

Minu ülesandeks oli piirata vastaspoolte gruppe, kelle kohta vastastikuseid arveldusi üles laetakse.

Määrame kindlaks tulevikus kasutatavate muutujate väärtused.

OnDate = kuupäev("20130101");
TD = Praegune kuupäev();
group = Directories.Counterparties.FindByName("Ostjad");
group1 = kataloogid Otsi nime järgi ("Tagasimised üksikisikutelt");

Loome tabeli, mille anname hiljem edasi väärtuse teisendusreeglile.

TZ = uus väärtustabel();
TK.Veerud.Lisa("Vastaspool");
TK.Columns.Add("Summa");
TK.Columns.Add("SummaREGLE");
TK.Columns.Add("Arvutusdokument");
TK.Columns.Add("Arveldusdokumendi kuupäev");
TK.Columns.Add("Arveldusdokumendi number");
TK.Columns.Add("Partner");
TK.Columns.Add("Vastastikuse arvelduse valuuta");
TK.Columns.Add("Maksekuupäev");

Määrame parameetrid, helistame päringule, täidame tabeli ja kutsume välja teisendusreegli.

taotlus = new Request(RequestText);
request.SetParameter("rühm", rühm);
request.SetParameter("OnDate",OnDate);
request.SetParameter("Konto", Kontoplaanid. Enesearvestus. Arvutused teiste tarnijate ja töövõtjatega);//76.05
Tõmba = request.Run().Select();
TZ.clear();
Kuigi Select.Next() Loop
kui Sample.SumRemainingCT = 0 või Sample.SumRemainingCT = "", siis
jätkata;
endif;
kui Sample.AmountRemainderCT< 0тогда
report(""+Sample.Subconto1+" negatiivne väärtus "+Sample.SumRemainingCT);
endif;
LineTZ = TZ.Lisa();
Rida TK.Counterparty = Selection.Subconto1;
LineTZ.sum = Selection.SumRemainingCT;//Selection.SumRemainingCT;
LineTZ.sumRegl = Sampling.SumRemainingCT;//Sampling.SumRemainingCT;
Rida TK.Arvutusdokumendi kuupäev = Selection.Calculation Document Date;
Rida TK.Arvutusdokumendi number = Selection.Calculation Document Number;
LineTZ.PaymentDate = TD;
EndCycle;
OutData = uus struktuur;
OutgoingData.Insert("Kuupäev", PraeguneKuupäev());
OutgoingData.Insert("ArvutusedPartneridega", TK);
OutgoingData.Insert("Operatsiooni tüüp", "Võlajäägid tarnijatele");
OutgoingData.Insert("Kommentaar", "Loodud kontokrediidil 76.05");
report("76.05 KREDIIDI algus");
UploadByRule(, OutgoingData, "Vastastikuse arvelduse saldode sisestamine_7605Credit");

Sarnaselt teostame sama toimingu ka ülejäänud vajalike kontodega (nende kirjeldus ja ka valmis reegel on manuses).

3) Liigume edasi objektide teisendamise reeglite loomise juurde, et seda teha, avage vahekaart "Objekti teisendamise reeglid". Lisame sinna uue reegli nimega "Input Balances By Mutual Settlement_7605Credit", jätke lähteobjekt tühjaks, määrame vastuvõtja objektiks dokumendi "Sisesta saldod" ja seadete kaardil eemaldame lipukese "Otsi vastuvõtja objekti lähteobjekti sisemine identifikaator".

Sündmuste töötlejasse "Enne laadimist" kirjutame järgmise koodi:

GenerateNewNumberOrCodeIfNotSpecified = tõene;

Sündmuste töötlejasse "Pärast laadimist" kirjutame:

execute(algoritms.AfterLoadInputRemainings);

see käivitab järgmise sisuga algoritmi:

valuuta = Constants.RegulatedAccountingCurrency.Get();
objekt.Omanik = SessionParameters.CurrentUser;
objekt.organisatsioon=parameetrid.organisatsioon;
iga lehe jaoks objektist.calculationspartners loop
Page.SettlementDocument = Directories.Counterparty Agreements.empty link();
PageCurrencySettlements = valuuta;
if ValueFilled(page.counterparty.partner) siis
p.partner = p.counterparty.partner;
muidu
partnerid = Directories.Partners.FindByName(page.counterparty.Name);
kui laud<>Määratlemata ja lauad<>Directories.Partners.emptylink() siis
p.partner = töölaud;

objekt2.Partner = töölaud;
objekt2.Kirjuta();
muidu
täitma(algoritmid.AddPartner);
endif;

endif;

tsükli lõpp;

Seda algoritmi rakendatakse vastuvõtja poolel (BP). Lisaks vastastikuste arvelduste saldode ülekandmisele on osapoolte ülekandmise ülesanne, kuid TÜ kasutab partnereid, seega kontrollime pärast dokumendi genereerimist, kas kõik vastaspooled ja partnerid on saaja andmebaasis, kui neid mingil põhjusel ei ole , siis lisame need.

Töövõtjate lisamine rakendab kataloogi „Osapooled” teisendusreegli, mille saate luua samamoodi nagu eelmine reegel, kuid võimaldab süsteemil võrrelda vajalikke välju.

Partnerite jaoks loodi algoritm, mis täidetakse vastuvõtja poolel.

Algoritmi käivitamiseks vastuvõtja poolel peate kontrollima algoritmi akna paremas ülanurgas olevat lipukest "Laadimisel kasutatud" (selle redigeerimisel).

Allpool on algoritmi "Lisa partner" kood:

nPartner = Directories.Partners.CreateItem();
nPartner.Nimi = page.counterparty.name;
nPartner.Comment = "Loodud BP-st laadimisel";
nPartner.NimiTäis = page.counterparty.NameFull;
nPartner.Tarnija = ?(find(page.counterparty.AdditionalInformation,"Tarnija")>0,true,false);
nPartner.Client = ?(find(page.counterparty.AdditionalInformation,"Klient")>0,true,false);
OtherRelations = ?(find(page.counterparty.AdditionalInformation,"Muu")>0,true,false);
npartner.Write();
p.partner = npartner.link;
vastaspool = Directories.Counterparties.FindByName(page.counterparty.Name);
objekt2 = vastaspool.GetObject();
objekt2.Partner = npartner.link;
objekt2.Kirjuta();

Läheme tagasi objektide teisendamise reegli juurde. Nüüd peame looma vastavuse lähte- ja sihtväljade vahel, seda oleks saanud teha vahetult enne koodi kirjutamist. Väljade võrdlemiseks on alumises tabeliosas nupp “Atribuutide sünkroonimise” viisardi kutsumiseks. Selles viisardis saame väljad kaardistada või jätta need ilma allika ja sihtkohata. Meie puhul jätame kõik väljad ja PM-id ilma allikata.

Pärast vajalike väljade valimist alumises TC-s seame iga välja jaoks lipukese veerus „Hangi sissetulevatest andmetest”. See lipp näitab, et süsteem otsib seda välja sissetulevates andmetes. Oluline on, et välja nimi ühtiks sissetulevates andmetes oleva nimega, vastasel juhul kuvatakse teade, et välja ei leitud.

Tekst ei kirjelda kõiki protsessi nüansse.

Andmete migreerimine erinevate konfiguratsioonide vahel ei ole triviaalne ülesanne. Nagu ikka, on lahendusi mitu, kuid mitte kõik pole optimaalsed. Proovime mõista andmeedastuse nüansse ja valida selliste probleemide lahendamiseks universaalse strateegia.

Andmete migratsiooni (jutt on puhtalt 1C firma toodetest) probleemi ühest lahendusest teise eile ei tekkinud. Ettevõte 1C mõistab suurepäraselt, milliste raskustega arendajad rände loomisel kokku puutuvad, seega püüab ta igal võimalikul viisil tööriistadega aidata.

Platvormi arendamise käigus tutvustas ettevõte mitmeid universaalseid tööriistu, samuti andmeedastust lihtsustavaid tehnoloogiaid. Need on sisse ehitatud kõikidesse standardlahendustesse ja identsete konfiguratsioonide vahelise migratsiooni probleem on üldiselt lahendatud. Võitu kinnitab taas standardlahenduste tihe integreerimine.

Mittestandardsete lahenduste vaheliste migratsioonidega on olukord mõnevõrra keerulisem. Lai valik tehnoloogiaid võimaldab arendajatel iseseisvalt valida optimaalse viisi probleemi lahendamiseks nende vaatenurgast.

Vaatame mõnda neist:

  • vahetada tekstifailide kaudu;
  • vahetusplaanide kasutamine;
  • jne.

Igal neist on oma plussid ja miinused. Kokkuvõtteks võib öelda, et peamine puudus on selle paljusõnalisus. Migratsioonialgoritmide sõltumatu rakendamine on täis märkimisväärseid ajakulusid ja pikka silumisprotsessi. Ma ei taha isegi rääkida selliste otsuste edasisest toetamisest.

Toe keerukus ja kõrge hind ajendasid 1C ettevõtet looma universaalset lahendust. Tehnoloogiad, mis võimaldavad migratsioonide arendamist ja toetamist nii palju kui võimalik lihtsustada. Selle tulemusena viidi idee ellu eraldi konfiguratsioonina – “Andmete teisendamine”.

Andmete teisendamine – standardlahendus, sõltumatu konfiguratsioon. Iga kasutaja, kellel on ITS:Prof tellimus, saab selle paketi kasutajatoe saidilt või ITS-kettalt täiesti tasuta alla laadida. Paigaldamine toimub standardsel viisil - nagu kõik teised 1C standardlahendused.

Nüüd natuke lahenduse eelistest. Alustame kõige olulisemast – mitmekülgsusest. Lahendus ei ole kohandatud konkreetsete platvormi konfiguratsioonide/versioonide jaoks. See töötab võrdselt hästi nii standardse kui ka kohandatud konfiguratsiooniga. Arendajatel on uute migratsioonide loomisel universaalne tehnoloogia ja standardiseeritud lähenemisviis. Lahenduse mitmekülgsus võimaldab migratsioone ette valmistada isegi muudele platvormidele peale 1C:Enterprise.

Teine suur pluss on visuaalsed abivahendid. Lihtsad migratsioonid luuakse ilma programmeerimiseta. Jah, jah, ilma ühegi koodireata! Ainuüksi selleks tasub kulutada aega tehnoloogia õppimisele ja seejärel korduvalt hindamatute oskuste kasutamisele.

Kolmas eelis, mida tahaksin märkida, on andmete levitamise piirangute puudumine. Andmete vastuvõtja konfiguratsiooni edastamise meetodi valib arendaja ise. Saadaval on kaks võimalust: xml-faili üleslaadimine ja otseühendus teabebaasiga (COM/OLE).

Arhitektuuri õppimine

Teame juba, et andmete teisendamine võib teha imesid, kuid pole veel päris selge, millised on selle tehnilised eelised. Esimene asi, mida peate mõistma, on see, et igasugune andmete migreerimine (teisendamine) põhineb vahetusreeglitel. Exchange'i reeglid on tavaline xml-fail, mis kirjeldab struktuuri, millesse infoturbe andmed üles laaditakse. Andmeid üles-/allalaadimisteenus analüüsib vahetusreegleid ja teostab nende alusel üleslaadimise. Laadimise ajal toimub vastupidine protsess.

“CD” konfiguratsioon on omamoodi visuaalne konstruktor, mille abil arendaja loob vahetusreegleid. Ta ei tea, kuidas andmeid alla laadida. Selle eest vastutab CD jaotuspaketis sisalduv täiendav välisteenuse töötlemine. Neid on mitu (XX failinimes on platvormi versiooni number):

  • MDXXExp.epf- töötlemine võimaldab infobaasi struktuuri kirjelduse üles laadida xml-faili. Struktuuri kirjeldus laaditakse CD-le edasiseks analüüsiks ja vahetusreeglite loomiseks.
  • V8ExchanXX.epf- laadib üles/laadib infobaasist alla andmeid vastavalt vahetusreeglitele. Enamikus tüüpilistes konfiguratsioonides on töötlemine karbist väljas (vt menüükäsku „Teenus”). Töötlemine on universaalne ega ole seotud konkreetsete konfiguratsioonide/reeglitega.

Olgu, nüüd, lähtudes kõigest ülaltoodust, määratleme uue konversiooni arendamise etapid.

  1. Ülesande määratlus. On vaja selgelt aru saada, milliseid andmeid on vaja edastada (millistest konfiguratsiooniobjektidest) ja mis kõige tähtsam, kuhu need edastada.
  2. Konfiguratsioonistruktuuride (Source/Sink) kirjelduste ettevalmistamine hilisemaks CD-le laadimiseks. Probleem lahendatakse teenuse töötlemisega MDXXExp.epf.
  3. Koostatud struktuuride kirjelduste laadimine infoturbe.
  4. Vahetusreeglite loomine visuaalse CD tööriista abil.
  5. Üles-/allalaadimine vastavalt loodud andmete teisendamise reeglitele, kasutades V8ExchanXX.epf töötlust.
  6. Vahetusreeglite silumine (vajadusel).

Lihtsaim teisendus

Demonstreerimiseks vajame kahte juurutatud konfiguratsiooni. Otsustasin valida variandi: “Trade Management” 10. väljaanne ja väike kodus kirjutatud lahendus. Ülesandeks on andmete ülekandmine standardsest “UT” konfiguratsioonist. Nimetagem lühiduse huvides ise kirjutatud lahendust "Sink" ja kaubanduse juhtimist "allikaks". Alustame probleemi lahendamist elementide ülekandmisega kataloogist “Nomenklatuur”.

Kõigepealt heidame pilgu andmete teisendamise skeemi ja loeme uuesti läbi tehtavate toimingute loendi. Seejärel käivitame konfiguratsiooni “Source” ja avame selles MD82Exp.epf teenuse töötlemise.

Töötlemisliidesel pole palju seadeid. Kasutaja peab märkima vaid metaandmeobjektide tüübid, mida struktuurikirjelduses ei kajastu. Enamikul juhtudel ei pea neid seadeid muutma, kuna Liikumiste mahalaadimisel akumulatsiooniregistrite abil (näitena) pole erilist mõtet.

Õigem on liikumine vormistada dokumente vastuvõtjas hoides. Kõik liikumised teeb pärast üleandmist dokument ise. Teine argument vaikesätete kaitsmiseks on faili suuruse vähendamine üleslaadimisel.

Mõned dokumendid (eriti standardkonfiguratsioonides) loovad liikumisi mitme registri vahel. Kogu selle kraami mahalaadimine muudab tulemuseks oleva XML-faili liiga suureks. See võib raskendada edasist transportimist ja laadimist vastuvõtja alusele. Mida suurem on andmefail, seda rohkem on selle töötlemiseks vaja RAM-i. Praktika jooksul oli mul võimalus kohata sündsusetult suuri üleslaadimisfaile. Sellised failid keeldusid täielikult standardsete tööriistade abil sõelumisest.

Seega jätame kõik vaikeseaded ja laadime konfiguratsiooni kirjelduse faili. Kordame sarnast protseduuri teise aluse jaoks.

Avage CD ja valige peamenüüst "Kataloogid" -> "Konfiguratsioonid". Kataloog salvestab kõigi konversioonide loomiseks kasutatavate konfiguratsioonide struktuuride kirjeldused. Laadime konfiguratsiooni kirjelduse üks kord ja seejärel saame seda kasutada mitu korda erinevate konversioonide loomiseks.

Klõpsake kataloogiaknas nuppu " Lisama” ja valige kuvatavas aknas konfiguratsiooni kirjeldav fail. Märkige ruut "Laadi uude konfiguratsiooni" ja klõpsake nuppu "Laadi". Sarnaseid toiminguid teostame teise konfiguratsiooni struktuuri kirjeldusega.

Nüüd olete valmis vahetusreegleid looma. CD peamenüüs valige "Kataloogid" -> "Konversioonid". Lisage uus element. Uue konversiooni loomise aknas peate määrama: allika konfiguratsiooni (valige UT) ja sihtkoha konfiguratsiooni (valige "Vastuvõtja"). Järgmisena avage vahekaart "Täpsemalt" ja täitke järgmised väljad:

  • vahetusreeglite faili nimi – loodud vahetusreeglid salvestatakse selle nime alla. Saate failinime igal ajal muuta, kuid kõige parem on see kohe määrata. See säästab aega tulevikus. Panin demonäite reeglitele nimeks "rules-ut-to-priemnik.xml".
  • nimi – teisenduse nimi. Nimi võib olla absoluutselt ükskõik, piirdusin “Demo. TÜ vastuvõtjale.

See on kõik, klõpsake nuppu "OK". Kohe ilmub meie ette aken, mis palub meil kõik reeglid automaatselt luua. Sellise ahvatleva pakkumisega nõustumine annab kaptenile käsu valitud konfiguratsioonide kirjeldust automaatselt analüüsida ja genereerida iseseisvalt vahetusreegleid.

Tähistame kohe "i"-ga. Nõustaja ei saa midagi tõsist genereerida. Seda võimalust ei tohiks aga maha jätta. Kui on vaja luua vahetus identsete konfiguratsioonide vahel, on spetsialisti teenused väga kasulikud. Meie näiteks on eelistatav manuaalrežiim.

Vaatame lähemalt akent "Exchange Rules Settings". Liides võib tunduda pisut segane – suur hulk vahekaarte on täis juhtnuppe. Tegelikult pole kõik nii keeruline, kui mõne tunni pärast rakendusega töötamist hakkate selle hullusega harjuma.

Praeguses etapis oleme huvitatud kahest vahekaardist: "Objekti teisendamise reeglid" ja "Andmete üleslaadimise reeglid". Algul peame konfigureerima sobitusreeglid, st. võrrelda kahe konfiguratsiooniga objekte. Teisel juhul määrake võimalikud objektid, mis on kasutajale üleslaadimiseks saadaval.

Vahekaardi „Objekti teisendamise reeglid” teises pooles on kahe vahekaardiga lisapaneel: „Property Conversion” ja „Property Conversion” Väärtuste teisendamine" Esimene valib valitud objekti atribuudid (üksikasjad) ja teine ​​on vajalik etteantud väärtustega töötamiseks (näiteks eelmääratletud kataloogielemendid või loendielemendid).

Tore, nüüd loome kataloogide jaoks teisendusreeglid. Seda toimingut saate teha kahel viisil: kasutage objektide sünkroonimise viisardit (nupp "") või lisage iga objekti jaoks käsitsi vastavus.

Ruumi säästmiseks kasutame esimest võimalust. Tühjendage viisardi aknas märge rühmast " Dokumentatsioon” (meid huvitavad ainult kataloogid) ja laiendage rühma Kataloogid" Kerime loendit hoolikalt ja vaatame võrreldavate teatmeteoste nimesid.

Minu puhul on selliseid katalooge kolm: Nomenklatuur, Organisatsioonid ja Laod. Samuti on olemas kataloog nimega Kliendid, mis täidab sama eesmärki kui " Vastaspooled"konfiguratsioonist" " Tõsi, meister ei saanud neid erinevate nimede tõttu võrrelda.

Me saame selle probleemi ise lahendada. Leiame aknast " Objekti vasted" teatmeteos " Kliendid" ja valige veerus "Allikas" kataloog "Vastaspooled". Seejärel märkige ruut veerus "Tüüp" ja klõpsake nuppu "OK".

Objektide sünkroonimisviisard pakub kõigi valitud objektide atribuutide teisendamiseks automaatselt reeglite loomist. Kinnistuid võrreldakse nimepidi ja meie demonstreerimiseks sellest täiesti piisab, oleme nõus. Järgmine küsimus on ettepanek luua üleslaadimisreeglid. Leppigem ka sellega.

Vahetusreeglite alus on valmis. Valisime sünkroonimiseks objektid ning atribuutide teisendamise ja üleslaadimise reeglid loodi automaatselt. Salvestame vahetusreeglid faili, seejärel avame IB “Source” (minu puhul on see UT) ja käivitame selles teenuse töötlemise V8Exchan82.epf.

Kõigepealt valige töötlemisaknas meie loodud vahetusreeglid. Laadimisreeglite küsimusele vastame jaatavalt. Töötlemine analüüsib vahetusreegleid ja loob üleslaadimiseks saadaolevate samanimeliste objektide puu. Selle puu jaoks saame seadistada kõikvõimalikke valikuid või vahetada sõlme, mida muutes peame andmeid valima. Soovime alla laadida absoluutselt kõik andmed, seega pole vaja filtreid installida.

Pärast andmete faili üleslaadimise lõpetamist avage IB " Vastuvõtja" Avame selles ka töötlemise V8Exchan82.epf, ainult seekord läheme vahekaardile "Andmete laadimine". Valige andmefail ja klõpsake nuppu "Laadi alla". See on kõik, andmed on edukalt edastatud.

Reaalse maailma probleemid

Esimene demo võib olla eksitav. Kõik tundub üsna lihtne ja loogiline. Tegelikult pole see tõsi. Reaalses töös tekivad probleemid, mida ainult visuaalsete vahenditega (ilma programmeerimiseta) on raske või täiesti võimatu lahendada.

Et tehnoloogias mitte pettuda, valmistasin ette mitu reaalse elu probleemi. Kindlasti kohtate neid tööl. Need ei tundu nii triviaalsed ja panevad teid vaatama andmete teisendamist uue nurga alt. Kaaluge esitatud näiteid hoolikalt ja kasutage neid reaalsete probleemide lahendamisel katkenditena.

Ülesanne nr 1. Täitke puuduvad andmed

Oletame, et peame teisaldama kataloogi " Vastaspooled" Vastuvõtjal on selleks otstarbeks sarnane “Klientide” kataloog. See sobib täielikult andmete salvestamiseks, kuid sellel on rekvisiidid " Organisatsioon”, mis võimaldab eraldada osapooled organisatsiooni kuulumise järgi. Vaikimisi peavad kõik vastaspooled kuuluma praegusesse organisatsiooni (selle saab samanimelisest konstandist).

Probleemile on mitu lahendust. Kaalume üksikasjade täitmise võimalust " Organisatsioon"otse andmebaasis" Vastuvõtja”, st. andmete laadimise ajal. Praegune organisatsioon on salvestatud konstanti, seetõttu pole selle väärtuse saamiseks takistusi. Avame objektide teisendamise reegli (edaspidi PKO) " Kliendid” (topeltklõps objektil) ja minge reeglite seadistusviisardis jaotisesse „Sündmuste töötlejad”. Käitlejate loendist leiame " Pärast allalaadimist”.

Kirjeldame koodi praeguse organisatsiooni hankimiseks ja seejärel detailidele määramiseks. Käitleja "Pärast laadimist" käivitumise ajal on objekt täielikult moodustatud, kuid pole veel andmebaasi kirjutatud. Keegi ei keela meil seda oma äranägemise järgi muuta:

Kui EI Object.ThisGroup Siis Object.Organization = Constants.CurrentOrganization.Get(); endIf;

Enne üksikasjade täitmist " Organisatsioon"Tuleb kontrollida atribuudi väärtust" See rühm" Teatmeteose jaoks " Kliendid"Hierarhiline funktsioon on seatud, seega on rühma kontrollimine vajalik. Täitke kõik üksikasjad sarnasel viisil. Lugege kindlasti teiste töötleja valikute abi" Pärast laadimist" Näiteks on nende hulgas parameeter " Keeldumine" Kui määrate sellele väärtuse "True", siis objekti andmebaasi ei kirjutata. Seega muutub võimalikuks laadimise ajal kirjutatavate objektide piiramine.

Ülesanne nr 2. Andmed inforegistri jaoks

Kataloogis " Vastaspooled"UT konfiguratsioonid, üksikasjad saadaval" Ostja"Ja" Pakkuja" Mõlemad detailid on tüüpi " Boolean” ja neid kasutatakse vastaspoole tüübi määramiseks. IB-s" Vastuvõtja”, kataloogis “ Kliendid"Sarnaseid üksikasju pole, kuid teabe register on olemas" Klientide tüübid" See täidab sarnast funktsiooni ja suudab ühe kliendi jaoks salvestada mitu atribuuti. Meie ülesanne on kanda detailide väärtused inforegistris eraldi kannetesse.

Kahjuks ei saa siingi visuaalsed vahendid üksi toime. Alustame väikesest, loome teaberegistri jaoks uue tarkvara Klientide tüübid" Ärge tsiteerige allikana midagi. Vältige üleslaadimisreeglite automaatset loomist.

Järgmine samm on üleslaadimisreeglite loomine. Minge vastavale vahekaardile ja klõpsake nuppu " Lisama" Üleslaadimisreeglite lisamise aknas täitke:

  • Proovivõtu meetod. Valige "Suvaline algoritm";
  • Teisendusreegel. Valige teaberegister “Klientide tüübid”;
  • Reegli kood (nimi). Kirjutage see üles kui "Klienditüüpide mahalaadimine";

Nüüd peate üleslaadimiseks andmete valimiseks kirjutama koodi. Parameeter " Andmete valim" Sellesse saame paigutada kogu koos ettevalmistatud andmekogumiga. Parameeter " Andmete valim” võib võtta erinevaid väärtusi – päringu tulemus, valik, väärtuste kogumid jne. Initsialiseerime selle väärtuste tabelina kahe veeruga: klient ja kliendi tüüp.

Allpool on sündmuste käitleja kood " Enne töötlemist" See lähtestab parameetri " Andmete valim" millele järgneb andmete täitmine kataloogist " Vastaspooled" Siin peaksite pöörama tähelepanu veeru " Kliendi tüüp" “UT”-s on meie atribuudid “tõve” tüüpi ja adressaat on loend.

Praeguses etapis ei saa me neid vajalikuks tüübiks teisendada (see pole TÜ-s olemas), seega jätame need praegu stringide kujule. Te ei pea seda tegema, kuid ma tahan kohe näidata, kuidas allikas puuduvale tüübile üle kanda.

DataFetch = Uus väärtustabel(); DataSelection.Columns.Add("Klient"); DataSelection.Columns.Add("ClientType"); SelectingDataFromDirectory = Kataloogid.Accounts.Select(); Kuigi SelectingDataFromDirectory.Next() Loop If SelectingDataFromDirectory.ThisGroup then Continue; endIf; Kui andmete valimine kataloogist.Ostja, siis NewRow = Andmete valik.Lisa(); NewRow.Client = DataFetchFromDirectory.Link; NewRow.ClientType = "Klient"; endIf; Kui DataFetchFromDirectory.Supplier, siis NewRow = DataFetch.Add(); NewRow.Client = DataFetchFromDirectory.Link; NewString.ClientType = "Tarnija"; endIf; EndCycle;

Salvestame andmete üleslaadimise reegli ja naaseme vahekaardile „ Objekti teisendamise reeglid" Lisame inforegistri jaoks “ Klientide tüübid” vara teisendamise reeglid: klient ja kliendi tüüp. Jätame allika tühjaks ja sündmuste töötlejasse "Enne mahalaadimist" kirjutame:

//Atribuudi “Klient” jaoks Väärtus = Source.Client; //Atribuudi “ClientType” puhul If Source.Client = "Buyer" Then Expression = "Enumerations.ClientTypes.Buyer" ElseIf Source.Client = "Supplier" Then Expression = "Enumerations.ClientTypes.Supplier"; endIf;

Nimekirjas täidetakse andmed valitud andmenäidise alusel. Edastame kliendi lihtsalt lingina ja kirjutame parameetrisse kliendi tüübi Väljendus" Selle parameetri andmeid tõlgendatakse vastuvõtjas ja selle täitmisel täidetakse rekvisiit loendist õige väärtusega.

See on kõik, vahetusreeglid on valmis Vaadeldav näide osutus üsna universaalseks. Sarnast lähenemist kasutatakse sageli andmete migreerimisel 7.7 platvormil loodud konfiguratsioonidest. Selle ilmekaks näiteks on perioodiliste detailide edastamine.

Ülesanne nr 3. Trikid lauaosadega

Sageli puutute kokku ülesannetega, mis nõuavad ridade postitamist ühest tabeli jaotisest mitmesse. Näiteks algkonfiguratsioonis registreeritakse teenused ja kaubad ühes tabeliosas ning vastuvõtjas on nende olemite salvestusruum jagatud. Jällegi ei saa probleemi visuaalsete vahenditega lahendada. Siin on mugav võtta aluseks teise ülesande lahendus.

Koostame andmete mahalaadimise reegli, määrame suvalise algoritmi ja töötlejasse “Enne mahalaadimist” kirjutame tabeliosast andmete hankimise taotluse.

Ruumi säästmiseks ei anna ma päringu koodi (saate alati viidata allikatele) - selles pole midagi ebatavalist. Sorteerime saadud valiku läbi ja asetame sorteeritud tulemused juba tuttavasse parameetrisse " Andmete valim" Väärtuste tabelit on jällegi mugav kasutada kogumina:

DataFetch = Uus väärtustabel(); //Siin tuleb veel üks tabeliosa Data Selection.Columns.Add(“Tooted”); //Siia tuleb ka tabeliosa Data Selection.Columns.Add(“Services”); SelectionData.Columns.Add("Link");

Ülesanne nr 4. Andmete ülekandmine toimingule

Kui organisatsioon kasutab mitut raamatupidamissüsteemi, siis varem või hiljem tekib vajadus andmete migreerimiseks koos järgnevate tehingute genereerimisega.

Konfiguratsioonis " BP"On olemas universaalne dokument" Operatsioon” ja see sobib ideaalselt rohkemate juhtmete moodustamiseks. On vaid üks probleem – dokument on tehtud kavalalt ja andmeid ei saa sinna nii lihtsalt üle kanda.

Sellise teisenduse näite leiate artikli lähtekoodist. Koodi hulk osutus üsna suureks, seega pole mõtet seda artikliga koos avaldada. Ütlen lihtsalt, et uuesti üleslaadimisel kasutatakse andmete üleslaadimise reeglites suvalist algoritmi.

Ülesanne nr 5. Andmete sünkroonimine mitme detaili vahel

Oleme juba vaadanud mitmeid näiteid, kuid me pole ikka veel rääkinud objektide sünkroonimisest migratsiooni ajal. Kujutagem ette, et meil on vaja vastaspooled üle kanda ja mõned neist on tõenäoliselt vastuvõtjate andmebaasis. Kuidas andmeid edastada ja duplikaatide ilmumist vältida? Sellega seoses pakub CD mitmeid viise ülekantud objektide sünkroonimiseks.

Esimene on kordumatu identifikaatori järgi. Paljudel objektidel on kordumatu identifikaator, mis tagab tabeli ainulaadsuse. Näiteks kataloogis " Vastaspooled” ei saa olla kahte sama identifikaatoriga elementi. CD teeb selle jaoks arvutused ja kõigi loodud PCOde puhul on vaikimisi kohe identifikaatori järgi otsimine lubatud. PCO loomisel oleks pidanud tähelepanu pöörama suurendusklaasi kujutisele objekti nimetuse kõrval.

Unikaalse identifikaatori abil sünkroonimine on usaldusväärne meetod, kuid see pole alati asjakohane. Kataloogide ühendamisel " Vastaspooled” (mitmest erinevast süsteemist) see eriti ei aita.

Sellistel juhtudel on õigem objekte sünkroonida mitme kriteeriumi järgi. Õigem on otsida vastaspooli INN, KPP, nime järgi või jagada otsing mitmeks etapiks.

Andmete teisendamine ei piira arendajat otsingukriteeriumide määratlemisel. Vaatame abstraktset näidet. Oletame, et peame kataloogid sünkroonima " Vastaspooled” erinevatest infobaasidest. Valmistame ette PKO ja kontrollime objekti teisendusreeglite sätetes „ Jätkake otsinguväljade otsimist, kui vastuvõtjaobjekti identifikaatori järgi ei leita" Selle toiminguga määratlesime kohe kaks otsingukriteeriumi – kordumatu identifikaatori ja kohandatud väljade järgi.

Meil on õigus põllud ise valida. Märkides TIN-i, KPP-d ja nime, näitame kohe mitu otsingukriteeriumi. Mugav? Päris, aga sellest jällegi ei piisa. Mis siis, kui tahame otsingukriteeriume muuta? Näiteks otsime esmalt TIN+KPP kombinatsiooni ja kui midagi ei leia, siis hakkame nimega õnne proovima.

Sellist algoritmi on üsna võimalik rakendada. Sündmuste halduris " Otsinguväljad” saame määrata kuni 10 otsingukriteeriumi ja igaühe jaoks määrata oma otsinguväljade koosseisu:

Kui SearchOptionNumber = 1, siis SearchPropertyNameString = "TIN, KPP"; MuiduIfSearchOptionNumber = 2 Siis SearchPropertyNameString = "Nimi"; endIf;

Lahendusi on alati mitu

Igal ülesandel on mitu lahendust ja andmete edastamine erinevate konfiguratsioonide vahel pole erand. Igal arendajal on õigus valida oma lahendustee, kuid kui teil on pidevalt vaja arendada keerulisi andmemigratsioone, siis soovitan kindlasti tähelepanu pöörata “”. Võib-olla peate algul investeerima ressursse (aega) koolitusse, kuid need tasuvad end ära esimese suurema või vähema tõsisema projekti puhul.

Minu arvates ignoreerib 1C ettevõte andmete teisendamise kasutamise teemat ebaõiglaselt. Kogu tehnoloogia olemasolu jooksul ilmus selle kohta ainult üks raamat: "1C: Enterprise 8. Andmete teisendamine: rakenduslahenduste vaheline vahetus." Raamat on üsna vana (2008), kuid siiski on soovitatav sellega tutvuda.

Platvormide tundmine on endiselt vajalik

"on universaalne tööriist, kuid kui kavatsete seda kasutada andmete migratsiooni loomiseks platvormi 1C:Enterprise 7.7 jaoks välja töötatud konfiguratsioonidest, peate kulutama aega sisseehitatud keelega tutvumiseks. Keele süntaks ja ideoloogia on väga erinevad, nii et peate õppimisele aega kulutama. Muidu jääb põhimõte samaks.