Transakcija bankovnom karticom, šta je to jednostavnim riječima. Kreiranje prilagođenih transakcija za održavanje OM objekata Pokušavamo popraviti kod
Ovaj članak u velikoj mjeri sadrži teorijske informacije potrebne za razumijevanje važnosti transakcija i zaključavanja u 1C:Enterprise i DBMS, a to se odražava na performanse 1C:Enterprise. Članak popularno opisuje odnos između transakcija i zaključavanja kroz nivoe izolacije i probleme istovremenosti.
Ovaj članak ne nosi praktični saveti za rješavanje specifičnih problema, ali je osnova za razumijevanje sljedećih članaka, koji opisuju korake za optimizaciju i poboljšanje performansi 1C:Enterprise u vezi s transakcijama i zaključavanjem.
Produktivnost je direktno povezana sa TRANSAKCIJAMA 1C:Enterprise
"Konflikt zaključavanja tokom transakcije:
Microsoft OLE DB dobavljač za SQL Server: Vremensko ograničenje zahtjeva za zaključavanje je premašeno.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, stanje=34, ozbiljnost=10, izvorno=1222, red=1"
Ako 1C:Enterprise proizvede grešku sličnu ovoj, onda imate problema s performansama povezanim s blokiranjem. Rješavanje ovakvog problema nije uvijek trivijalno i zahtijeva određena posebna znanja o radu DBMS-a i 1C:Enterprise, koja često nemaju ni programeri 1C:Enterprise ni administratori sistema. Sljedeća serija članaka trebala bi popuniti prazninu u ovom znanju.
Transakcije 1C: Enterprise
Transakcija je nedjeljiv niz operacija nad podacima. Radi na principu sve ili ništa i prevodi bazu podataka
iz jednog integralnog stanja u drugo integralno stanje. Ako iz nekog razloga jedna od radnji transakcije nije izvršna ili dođe do nekog poremećaja sistema, baza podataka se vraća u stanje koje je bilo prije početka transakcije (transakcija se vraća nazad).
Postoji niz zahtjeva za mehanizam transakcije (poznat pod skraćenicom ACID): Atomičnost (Atomičnost), Dosljednost (Dosljednost), Izolacija (Izolacija), Održivost (Trajnost)
Atomičnost (Atomičnost). Ovaj zahtjev je da svi podaci na kojima transakcija radi moraju biti ili potvrđeni ( počiniti), ili otkazan ( rollback). Ne bi trebalo doći do situacije da se neke promjene potvrde, a druge ponište.
Za 1C:Enterprise, svojstva atomske transakcije osiguravaju logički integritet podataka. Na primjer, prilikom snimanja dokumenta, podaci njegovog zaglavlja se upisuju u jednu fizičku DBMS tabelu, a podaci tabelarnog dijela u drugu. Snimanje dokumenta u transakciji garantuje da će podaci u obe fizičke tabele (zaglavlja i delovi tabele) biti konzistentni (nemoguće je napisati deo tabele bez zaglavlja ili obrnuto).
Izolacija (Izolacija). Transakcije se moraju obavljati autonomno i nezavisno od drugih transakcija. Kada se mnoge konkurentske transakcije izvode istovremeno, svako ažuriranje određene transakcije biće skriveno od drugih dok se transakcija ne izvrši. Postoji nekoliko nivoa izolacije transakcija koji vam omogućavaju da odaberete najviše optimalno rešenje u smislu performansi i integriteta podataka. Glavni metod za implementaciju ovih nivoa je zaključavanje, o čemu će biti reči u ovom članku.
Dnevnik transakcija (SQL Server)
Svaka SQL Server baza podataka ima dnevnik transakcija koji bilježi sve promjene podataka napravljene u svakoj transakciji. Ako se transakcija iz nekog razloga nije dovršila (povratila ili je prekinuta), tada SQL server, koristeći dnevnik transakcija, poništava sve transakcije sekvencijalno obrnutim redoslijedom. To znači da će dugotrajna transakcija pisanja trajati dugo i biti otkazana.
Dnevnik transakcija je kritična komponenta baze podataka i, u slučaju kvara sistema, može biti potrebno da se baza podataka dovede u konzistentno stanje. Dnevnik transakcija ne treba brisati ili mijenjati osim ako nisu poznate moguće posljedice.
Ovisno o postavkama baze podataka (model oporavka), transakcijski dnevnik transakcija se može skraćivati (stari podaci o transakciji se brišu) automatski ili ručno (model oporavka=FULL). Ponekad administrator sistema zaboravi da skrati evidenciju i može doći do greške: " Dnevnik transakcija za bazu podataka je pun"
Fizički, dnevnik transakcija MS SQL Server DBMS nalazi se u .LDF datoteci (a datoteka podataka je .MDF).
Transakcije u sistemu 1C:Enterprise
Sistem 1C:Enterprise implicitno poziva transakcije prilikom izvođenja bilo kakvih radnji koje se odnose na modificiranje informacija pohranjenih u bazi podataka. Na primjer, svi obrađivači događaja koji se nalaze u objektima i modulima skupa zapisa koji su povezani s modifikacijom podataka baze podataka pozivaju se u transakciji.
Primjer implicitne transakcije: slijed događaja prilikom objavljivanja dokumenta iz obrasca
U praksi možete utvrditi da je zapis objekta 1C:Enterprise (na primjer, dokumenta) transakcija provođenjem sljedećeg eksperimenta: Pokušajte objaviti i zatvoriti (kliknite "OK" u obrascu dokumenta) novi dokument znajući unaprijed da se neće izvršiti (na primjer, naznačavanje velike količine robe za otpis). Budući da se stanja provjeravaju u fazi knjiženja dokumenta, u rukovatelju “Obrada knjiženja()”, do ovog trenutka sam dokument bi već trebao biti upisan u bazu podataka, jer je dokument ranije upisan između “Pre pisanja()” i “OnWriting()” događaji. Ali nakon što se pojavi poruka o grešci (nedostaje potrebna količina), ustanovit ćemo da dokument nije zabilježen u bazi podataka (zastavica modifikacije “*” će ostati i dokument se neće pojaviti na listi). Ovo se dešava zato što se transakcija vraća nazad nakon što se pojavi greška (vraćanje).
Korištenje eksplicitnog poziva transakcije
Metoda StartTransaction() omogućava otvaranje transakcije. Sve promjene informacija baze podataka napravljene naknadnim izjavama mogu se tada ili u potpunosti prihvatiti ili u potpunosti odbiti. Da biste prihvatili napravljene promjene, koristite metodu CommitTransaction().
Da biste poništili sve promjene napravljene u otvorenoj transakciji, koristite metodu Otkaži transakciju().
Stepen izolacije transakcije određen je nivoima izolacije. Većina visok nivo izolacija osigurava potpunu nezavisnost transakcije od drugih transakcija koje se istovremeno izvršavaju, ali je i stepen paralelizma značajno smanjen - ostale transakcije moraju čekati na pristup resursima koji se koriste u trenutnoj transakciji. Najniži nivo izolacije je suprotan: pruža maksimalni stepen paralelni rad, što dovodi do značajnog uticaja ostalih transakcija na tekuću i pojave problema paralelnog pristupa. U sistemima sa više korisnika, mora se napraviti kompromis između konkurentnosti (istovremenog pristupa resursima) i nivoa izolacije transakcija. Standard SQL jezika definira razine izolacije koje, kada su postavljene, sprječavaju specifične probleme istovremenosti.
Problemi istovremenosti
Prilikom paralelnog izvršavanja transakcija mogući su sljedeći problemi:
- izgubljeno ažuriranje(eng. lost update) - kada se jedan blok podataka istovremeno mijenja različitim transakcijama, jedna od promjena se gubi;
- "prljavo" čitanje(eng. dirty read) - čitanje podataka dodatih ili promijenjenih transakcijom koja naknadno nije potvrđena (povratna);
- čitanje bez ponavljanja(englesko neponovljivo čitanje) - pri ponovnom čitanju unutar jedne transakcije, ispostavlja se da su prethodno pročitani podaci promijenjeni;
- fantomsko čitanje(englesko fantomsko čitanje) - jedna transakcija tokom svog izvršenja bira više redova više puta prema istim kriterijumima. Druga transakcija, između ovih odabira, dodaje ili briše redove koji potpadaju pod kriterije odabira prve transakcije i uspješno završava. Rezultat je da isti odabiri u prvoj transakciji proizvode različite skupove redova.
Razmotrimo situacije u kojima se ovi problemi mogu pojaviti:
Izgubljeno ažuriranje
Prljavo čitanje
Ako se prethodni problem pojavi prilikom pisanja podataka, tada je moguće prljavo čitanje kada jedna transakcija pokuša pročitati podatke na kojima radi druga istovremena transakcija.
Pretpostavimo da postoje dvije transakcije otvorene od strane različitih aplikacija u kojima se izvršavaju sljedeći SQL izrazi:
Čitanje koje se ne ponavlja
Pretpostavimo da postoje dvije transakcije otvorene od strane različitih aplikacija u kojima se izvršavaju sljedeći SQL izrazi:
Transakcija 1 | Transakcija 2 |
SELECT f2 IZ tbl1 GDJE f1=1; | |
UPDATE tbl1 SET f2=f2+1 GDJE f1=1; | |
SELECT f2 IZ tbl1 GDJE f1=1; |
U Transaction2 se bira vrijednost polja f2, a zatim se u Transaction1 mijenja vrijednost polja f2. Ako pokušate ponovo odabrati vrijednost iz polja f2 u transakciji 1, dobit ćete drugačiji rezultat. Ova situacija je posebno neprihvatljiva kada se podaci čitaju s namjerom da se djelimično modificiraju i zapišu nazad u bazu podataka.
Fantomsko čitanje
Pretpostavimo da postoje dvije transakcije otvorene od strane različitih aplikacija u kojima se izvršavaju sljedeći SQL izrazi:
Transakcija 1 | Transakcija 2 |
SELECT SUM(f2) IZ tbl1; | |
INSERT INTO tbl1 (f1,f2) VRIJEDNOSTI (15,20); | |
SELECT SUM(f2) IZ tbl1; |
Transakcija2 izvršava SQL naredbu koja koristi sve vrijednosti u polju f2. Zatim se u Transaction1 vrši umetanje nova linija, uzrokujući da se SQL naredba ponovo izvrši u transakciji 2 kako bi se proizveo drugačiji rezultat. Ova situacija se naziva fantomsko umetanje i poseban je slučaj neponavljanja čitanja.
Nivoi izolacije transakcija
Nivo izolacije je svojstvo transakcije koje određuje neovisnost transakcije od drugih transakcija koje se izvršavaju paralelno.
Standard uvodi sljedeća četiri nivoa izolacije, čija upotreba sprječava određene probleme istovremenosti:
- READ_UNCOMMITTED- nefiksno očitavanje. Ovaj nivo izolacije rješava problem "izgubljenog ažuriranja", ali je moguće dobiti različite rezultate za iste upite bez obzira na urezivanje transakcije (moguće je problem "prljavog čitanja"). Ovo je najniži nivo izolacije koji se koristi u DBMS-u i pruža maksimalnu konkurentnost.
- READ_COMMITTED- fiksno očitavanje. Ovaj nivo izolacije sprečava problem "prljavog čitanja", ali vam omogućava da dobijete različite rezultate za iste zahteve u transakciji (mogućnost "neponovljenog čitanja" je očuvana);
- REPEATABLE_READ- ponovljeno čitanje. Ovaj nivo izolacije rješava problem "neponovljenog čitanja". Na ovom nivou, još uvijek je moguće izvršiti INSERT izraze koji dovode do konfliktne situacije “fantomskog umetanja”. Ovaj nivo je koristan ako na izvršavanje SQL izraza ne utiče dodavanje novih redova;
- SERIALIZABLE- sekvencijalno izvršenje. Treći nivo. Ovaj nivo garantuje prevenciju svih gore opisanih problema istovremenosti, ali shodno tome, primećuje se najniži stepen paralelnosti, pošto se obrada transakcija (sa pristupom istim resursima) obavlja samo sekvencijalno.
Rješenje problema paralelnog pristupa transakcijama i nivoa izolacije u obliku tabele može se prikazati na sljedeći način (“+” - problem je eliminisan):
Problemi istovremenosti i nivoi izolacije | Fantomsko čitanje | Čitanje koje se ne ponavlja | Prljavo čitanje | Izgubljeno ažuriranje |
SERIALIZABLE | + | + | + | + |
REPEATABLE_READ | - | + | + | + |
READ_COMMITTED | - | - | + | + |
READ_UNCOMMITTED | - | - | - | + |
Na nivou SQL servera možete sami postaviti nivo izolacije:
za cijelu sjednicu, na primjer po direktivi
POSTAVI NIVO IZOLACIJE TRANSAKCIJE KOJI SE SERIJALIZUJE
za određeni upit koristeći konstrukciju WITH
SELECT Name FROM Contracts WITH SERIALIZABLE
Saznajte koji je nivo izolacije postavljen u trenutnoj sesiji
odaberite nivo_izolacije transakcije iz sys.dm_exec_sessions
gdje je session_id = @@spid
Automatski način rada (stari način koji se koristio u 8.0) upravljanja zaključavanjem podataka koristi nivoe izolacije transakcija REPEATABLE_READ I SERIALIZABLE koje obezbeđuje sistem za upravljanje bazom podataka. Ovi nivoi izolacije transakcija obezbeđuju dosledno i dosledno čitanje podataka bez potrebe za dodatnim naporima za upravljanje zaključavanjem od strane programera.
Upravljani način zaključavanja (počevši od verzije 8.1) vam omogućava da povećate istovremenost korisnika u načinu klijent-server korištenjem nižeg nivoa izolacije transakcija baze podataka ( READ_COMMITTED); isti nivo izolacije je postavljen po defaultu
iu MS SQL serveru. Prilikom pisanja podataka u transakciju, objekti ugrađenog jezika automatski zaključavaju potrebne podatke. Ali prilikom čitanja, programer treba da upravlja zaključavanjem podataka u slučajevima kada poslovna logika zahteva dosledno i dosledno čitanje podataka u transakciji.
Za verziju 8.3, upravljani način rada koristi razinu izolacije READ_COMMITTED_SNAPSHOT.
Zaključci
Transakcije su neophodan mehanizam DBMS-a koji se aktivno koristi u 1C:Enterprise. Za rješavanje problema paralelnog pristupa mogu se izvršiti transakcije u DBMS-u različitim nivoima izolacija.
Nivo izolacije koji koristi 1C:Enterprise READ_COMMITTED rješava probleme “Izgubljeno ažuriranje” i “Prljavo čitanje”: promijenjeni podaci su zaključani do kraja transakcije i za čitanje i za modifikaciju (nametnuto je ekskluzivno zaključavanje).
Nivo izolacije READ_COMMITTED ne rješava probleme "čitanje bez ponavljanja" i "fantomsko čitanje". Da biste riješili ove probleme, morate koristiti 1C:Enterprise kontrolirane brave instalirane programski.
8.3 koristi fleksibilniji nivo izolacije READ_COMMITTED_SNAPSHOT.
2017-08-12
Kreirajte prilagođene transakcije za održavanje OM objekata.
Uvod
Mislim da su se mnogi funkcionalni SAP konsultanti susreli sa transakcijom održavanja objekata organizacijskog upravljanja. Naime, transakcija PP01
Korištenje ove transakcije daje korisniku mogućnost da administrira infotipove upravljanja organizacijom za one tipove objekata koji se koriste u poslovnim procesima koji se automatiziraju. Vrlo često se ova transakcija koristi kao jedinstvena ulazna tačka za rad sa svim vrstama objekata organizacionog upravljanja, što u stvarnosti nije baš dobra praksa. Pa, ili ne baš zgodno. Iako svakako uobičajeno. Zatim ću pokušati da vam kažem koja bi alternativa mogla postojati.
Tabela T77S0, grupa "TCODE"
Prilikom postavljanja objekata OM objekata, vjerovatno ćete dodirnuti postavku koja se nalazi na sljedećoj putanji u SPRO:
IMG: Upravljanje osobljem -> Organizacijsko upravljanje -> Osnovne postavke -> Poboljšanje modela podataka -> Održavanje tipova objekata
Ovdje kreirate nove OM objekte, smišljate imena za njih, birate ikone i definirate neke postavke za njih... Trenutno nas zanima čvor " Tip objekta Ključ + Transakcija"
Pred vama će se otvoriti dio prikaza podešavanja T77S0 sa filtriranim grupnim vrijednostima
Vrijedi obratiti pažnju na grupu TCODE u kojoj, ako dobro pogledate, možete pronaći tehničke nazive transakcija s kojima ste najvjerovatnije morali raditi. Štaviše, u koloni Vrijednost označava tip objekta za koji je određena transakcija namijenjena.
Šta je posebno u ovim transakcijama?
Korištenjem transakcija koje su dizajnirane da održavaju određenu vrstu objekta, više ne morate birati baš ove vrste objekata koji su prema zadanim postavkama dostupni u transakciji PP01. Odnosno, pokretanjem, na primjer, transakcije PO09, odmah počinjete raditi sa objektima kao što su L
Kreiranje nove transakcije za vaš vlastiti objekt organizacijskog upravljanja
U jednom od mojih prethodnih postova govorio sam o tome kako možete kreirati novi objekat OM + dodajte strukturiranu pretragu za to
Neću ići daleko od ovog materijala. Kao demonstraciju, kreiraću novu transakciju za održavanje objekta 91.
Definiranje novog tipa objekta u T77S0
Definirajte ime buduće transakcije u prikazu podešavanja T77S0
Vrijednost "ZP91M" u ovom slučaju je naziv buduće transakcije za održavanje objekta 91 . Sačuvajte promjene.
Kreiranje nove transakcije za održavanje OM objekta
Preko transakcije SE93 kreirajte transakciju za održavanje vašeg objekta. Ispod je video fragment sa redosledom radnji koje se moraju izvršiti da bi se kreirala odgovarajuća transakcija
Zabilježite vrijednosti koje su korištene za polja Program, Broj ekrana,Objekt autorizacije. Sada započnite novu transakciju
Korisnik ima priliku da radi samo sa određenom vrstom objekta, što se, u određenom smislu, može nazvati pogodnošću i, ako želite, minimiziranjem dodatnih radnji za odabir željenog objekta.
Poslednji put kada smo gledali najjednostavniji način koristeći ugrađeni 1C jezik. U praksi transakcije mnogo češće se koristi u kombinaciji s dizajnom. Ovo omogućava, u slučaju greške, nastavak izvršavanja koda, kao i pružanje adekvatne poruke o grešci korisniku i upisivanje informacija u dnevnik registracije ili u log fajl za naknadnu analizu od strane administratora sistema.
Ako se okrenemo tehnička dokumentacija ili na ITS disk, videćemo da kompanija 1C preporučuje sledeći način organizovanja transakcije u pokušaju
Pokušaj //1. Početak transakcije. StartTransaction() ; //2. Blok operacija koje se obavljaju u transakciji. //3. Ako su sve operacije uspješne, vršimo transakciju. CommitTransaction() ; //4. Ako dođe do greške prilikom izvršavanja koda, otkažite transakciju. CancelTransaction() ; //5. Ako je potrebno, zabilježite u dnevnik. //6. Ako je potrebno, prikažite poruku korisniku. EndAttempt ;Zapravo, kod ne zahtijeva nikakvo posebno objašnjenje. Ako je u toku pokušaji Prilikom izvršavanja transakcijskog koda dolazi do greške, odmah padamo u blok izuzetak, tj. pre metode CommitTransaction() jednostavno ne stignemo tamo. Pa, u izuzetku, u skladu s tim otkazujemo transakciju i, ako je potrebno, prikazujemo poruku o grešci i upisujemo informacije u dnevnik. Veoma je poželjno evidentirati greške u dnevniku, posebno za one operacije koje se izvode bez učešća korisnika (na primjer, rutinski zadaci). Ovo će vam omogućiti da kasnije analizirate grešku. Umjesto logovanja, možete organizirati slanje poruka administratoru putem e-pošte.
Sada, naoružani novim saznanjima, pokušajmo izmijeniti kod o kojem se govori u članku o . Da vas podsjetim da smo razmatrali unos u imeniku Roba i u registar informacija Cijena prema sljedećoj shemi:
&Na serveru bez konteksta StartTransaction() ; //zapiši novi proizvod Proizvod = Imenici. Roba. CreateItem() ; Proizvod. Naziv = "Probijanje rupa" ; Proizvod. Write() ;//zapiši cijenu RecordSet = InformationRegisters. Cijena. CreateRecordSet() ; NewRecord = RecordSet. Dodaj() ; NewRecord. Period = CurrentDate() ;
&Na serveru bez konteksta NewRecord. Proizvod = Proizvod. Link; NewRecord. Iznos = 100 ; RecordSet. Write() ; CommitTransaction() ; EndProcedure Sada stavimo transakciju u blok Pokušaj izuzetka. Najvjerovatnije se greške mogu pojaviti samo u trenutku unosa u imenik ili registar informacija, tako da ćemo preliminarnu pripremu odvesti izvan transakcije. "Došlo je do greške prilikom snimanja proizvoda i njegove cijene") ;EndAttempt ;
EndProcedure
Šta NE raditi
Oni koji tek počinju da rade sa transakcijama često imaju želju da to urade na ovaj način
StartTransaction() ;
Pokušaj pokretanja transakcije(); //Operacijski blok CommitTransaction() ; Izuzetak CancelTransaction() ; EndAttempt ;:
&Na serveru bez konteksta Pokušaj pokretanja transakcije(); EndAttempt ; //Operacijski blok CommitTransaction() ; Izuzetak CancelTransaction() ;EndAttempt ;
(ExternalProcessing.TransactionsAtTrying.Form.Form.Form(20)): Greška u pisanju stavke. (ExternalProcessing.TransactionsAtTrying.Form.Form.Form(40)): Greška prilikom pozivanja metode konteksta (Write): Greške su se već dogodile u ovoj transakciji!
Stoga je organiziranje ugniježđenih transakcija u 1C apsolutno besmisleno.
Moguće opcije
Vratimo se sada na opciju gdje smo snimili proizvod i cijenu za njega. Ako imamo grešku prilikom obavljanja transakcije, biće teško razumjeti u kom trenutku je do nje došlo – prilikom snimanja proizvoda ili prilikom bilježenja cijene, jer se oboje dešavaju u istom pokušaju. Da bismo utvrdili gdje je došlo do greške, moramo svaku operaciju pisanja umotati u vlastiti pokušaj i izbjeći ugniježđene transakcije. Da bismo to učinili, uvodimo Booleovu varijablu Odbijanje i u zavisnosti od njegove vrijednosti na kraju svih operacija mi ćemo izvršiti ili otkazati transakciju.
&Na serveru bez konteksta NewRecord. Proizvod = Proizvod. Link; NewRecord. Iznos = 100 ; // Pokreni transakciju Odbiti = False ; StartTransaction() ;// Pokušavam snimiti proizvod Pokušaj proizvoda = Direktoriji. Roba. CreateItem() ; Proizvod. Naziv = "Probijanje rupa" ; Proizvod. Write() ; Neuspjeh izuzetka = Tačno; Poruka = New MessageToUser; Proizvod. Naziv = "Probijanje rupa" ; Poruka. Tekst ="Greška pri snimanju proizvoda";
Poruka. Izvještaj() ;
EndAttempt ;// Pokušavam zabilježiti cijenu
AttemptRecordSet = InformationRegisters. Cijena. CreateRecordSet() ; NewRecord = RecordSet. Dodaj() ; NewRecord. Period = CurrentDate() ; NewRecord. Proizvod = Proizvod. Link; NewRecord. Iznos = 100 ;
- započeti transakciju;
- očitati iznos sredstava na računu broj 123;
- smanjiti stanje računa 123 za 100 rubalja;
- broj stanja računa čuvanja 123;
- očitati iznos sredstava na računu broj 321;
- povećajte svoj balans za 100 rubalja;
- evidentirati novi iznos sredstava na računu 321;
- izvršite transakciju.
Nabavite 267 video lekcija na 1C besplatno:
Kao što vidimo, ako transakcija nije dovršena u potpunosti, onda nema smisla.
Ključni zahtjevi (ACID) za transakcijski DBMS
Jedan od najčešćih skupova zahtjeva za transakcije i transakcijske DBMS-ove je ACID (atomičnost, konzistentnost, izolacija, trajnost). Ovo su svojstva koja svaka transakcija mora imati:
- Atomičnost— nijedna transakcija ne bi trebala biti zabilježena djelimično;
- Dosljednost- sistem je u konzistentnom stanju prije početka transakcije i mora ostati u konzistentnom stanju nakon što je transakcija završena;
- Izolacija— tokom izvršenja transakcije, paralelne transakcije ne bi trebalo da utiču na njen rezultat;
- Trajnost- u slučaju kvara, promjene izvršene uspješno završenom transakcijom moraju ostati sačuvane nakon što se sistem vrati u rad.
Transakcije u 1C
Transakcije u 1C 8.3 i 8.2 kreiraju se automatski i opisuju ih programeri.
Možete koristiti metodu TransactionActive() da saznate da li je transakcija aktivna.
Primjer automatske transakcije je obrada knjiženja dokumenta, upisivanje stavke direktorija u bazu podataka, pisanje skupa zapisa registra informacija itd.
Riječ "transakcija" došla je do nas tek krajem devedesetih. To je bio period razvoja moderne bankarski sistem i opšti kompjuterski bum. Tada se ovaj koncept počeo pojavljivati u kolokvijalnom i književnom govoru. I ako ima problema sa programerima obični ljudi susreti su rijetki; svi moraju imati posla sa bankama. Gotovo svaka operacija - od provjere statusa računa do složenih intrabankovnih transfera plaćanja - može se kvalifikovati kao transakcija. Ova riječ je prisutna u bankarskom poslovanju gotovo češće od pojmova kao što su “novac” ili “kredit”. Međutim, mali broj klijenata banke u potpunosti razumije njenu suštinu.
Značenje te riječi
Transakcije su određene procedure za interakciju bilo kojeg objekta u određenom vremenskom periodu. Takve procedure su formirali programeri. Imaju jasan proceduralni karakter. Svaka transakcija je kombinacija tri bitne komponente:
- zahtjev;
- izvršenje;
- izvještaj.
Proces normalne transakcije može biti prilično složen, ali rezultat ove procedure ima samo dva stanja. To jest, transakcija može, ali i ne mora biti završena.
Bankovne transakcije
Šta znači riječ "transakcija"? Koji se procesi dešavaju kada se to dogodi? Preciznije, transakcije su sve bankarske operacije vezane za kretanje sredstava. Ali najčešće se ovaj izraz koristi kada se koriste elektronički računi. Ili direktno upućuje na transakcije bankovnim karticama.
Izraz “sprovođenje transakcija” označava operacije koje koriste elektronski račun. Ovo uključuje plaćanje komunalne usluge, kupovina robe u trgovini koristeći plastična kartica, kreditiranje plata i stipendija i mnoge druge novčane transakcije.
Vrste transakcija
IN bankarstvo Postoje dvije vrste operacija:
- Online transakcije su manipulacija bezgotovinskim novcem povezivanjem na bankarski centar u realnom vremenu. Najočigledniji primjer je rad s terminalom.
- Offline transakcije su završetak bankarsku transakciju bez direktnog kontakta između učesnika. Na primjer, kreditiranje plata zaposlenih. Sredstva se terete sa računa organizacije, a zaposleni dobija samo obaveštenje o dopuni stanja na svom tekućem računu.
Da bismo bolje razumjeli suštinu bankarskih transakcija, razmotrimo nekoliko njihovih opcija.
Transfer sredstava
Najjednostavniji primjer takve operacije je prijenos između vlastitih računa, primanje ili polaganje novca, polaganje gotovine putem bankomata ili terminala. Takve transakcije banka obično obavlja bez provizije. Situacija je složenija sa transferima između dvije različite osobe - unutar iste finansijska institucija naknade za transfer mogu dostići 3%. Ako je riječ o različitim bankama unutar zemlje, provizija će biti još veća. Najskuplji je transfer stranim institucijama, jer pored provizije često naplaćuju i tzv. transakcionu naknadu.
Prevodi
Transferi s jednog računa na drugi ponekad dovode do dosadnih grešaka. Najmanja netočnost u pisanju prezimena primaoca može dovesti do blokiranja manipulacije elektronski sistem sigurnost. Automatska transakcija će riješiti problem. To se dešava, na primjer, kada se sredstva dodijele na saldo primaoca pomoću broja bankovne kartice. Ovo značajno smanjuje vjerovatnoću greške. Ako se transakcija resetuje, novac se jednostavno vraća na saldo vlasnika. Istina, to se dešava u roku od deset ili petnaest kalendarskih dana.
Ako pošiljalac nema bankovni račun, možete koristiti uslugu transferi novca. Najpoznatiji međunarodni operateri su MoneyGram, Western Union, Anelik, Contact i drugi. Glavna prednost ovakvih operacija je velika brzina transakcije. Glavni nedostatak je prilično visoka provizija.
Šta učiniti ako transakcija ne uspije?
Za bilo koje nestandardna situacija vezano za prijenos sredstava, morate to odmah prijaviti banci ili operateru terminala. U tom slučaju postoji velika vjerovatnoća da će se novac vratiti na saldo pošiljaoca ili će se koristiti za svoju namjenu. Operater će vam pomoći ako:
- Tokom transakcije dogodio se kvar (program se zamrznuo, nestala je struja), a novac je već nestao. Call to hotlineće snimiti vaš zahtjev. Nakon provjere i otklanjanja greške, stručnjaci će moći ručno dovršiti operaciju.
- Terminal ili bankomat nisu izdali potvrdu za transakciju. Razlog može biti trivijalan - nedostatak kase u mašini. Nakon što kontaktirate operatera, biće vam ponuđen duplikat računa. Obično se šalje na navedenu email adresu.
- Došlo je do greške u navedenim detaljima. Novac je nestao, ali ga primalac nikada nije vidio.
Operater može pomoći u rješavanju ovog problema: na primjer, pronaći grešku u broju računa primatelja. U ovom slučaju novac ne stiže do klijenta samo zbog sigurnosnih pravila. Takva sredstva banka ne podiže, već se čuvaju 10 dana na posebnom privremenom računu. Ako pošiljalac na vrijeme kontaktira finansijsku instituciju, naznači vrijeme transakcije, iznos transfera i odgovori na nekoliko pitanja, novac će biti deblokiran. Nakon odbitka transakcijske naknade, iznos će biti vraćen na saldo pošiljaoca.
kao što vidite, bankovne transakcije- ovo je zanimljivo, neophodna procedura u životu svakog od nas. Sljedeći put, prilikom jednostavnog transfera ili podizanja novca sa kartice, razmislite koliko nam ovakve manipulacije olakšavaju život. Uostalom, do sada vjerovatno već znate šta su transakcije. Značenje te riječi za vas nije tajna.
Mnogi ljudi se pitaju šta je transakcija? Uostalom, ova riječ se stalno pojavljuje, posebno ako osoba radi s novcem. Ako to uzmemo globalno - redoslijed operacija razmjene podataka, nakon čega se vrše promjene sistema.
Najčešća upotreba termina je u obavljanju transfera novca i kupovini robe. moglo bi biti:
- Podizanje gotovine na bankomatu ili filijali banke;
- Kupovina određenog broja akcija na berzi;
- Plaćanje karticom u prodavnici.
Čim je operacija potvrđena i novac poslan, transakcija se smatra uspješno obavljenom. Novac se podiže sa računa kupca ili klijenta ustanove, a roba se prenosi pojedincu. Možemo reći da transakcija služi kao način da se dobrovoljno prebaci novac sa računa osobe na osobu koja pruža uslugu. Sve transakcije se evidentiraju u bazi podataka finansijske institucije. Nije bitno da li je operacija bila uspješna ili ne. Na primjer, u slučaju pogrešnog kreditiranja sredstava na bankovnu karticu.
Ali nemojte misliti da se koncept transakcije odnosi samo na finansijski sektor. IT kompanije također često koriste ovaj termin, posebno kada je u pitanju programiranje baza podataka. U ovom slučaju, pojam će značiti određeni niz izmjena u bazi podataka.
Ovdje također postoje dvije opcije aplikacije. Kada je operacija odobrena, dodjeljuje joj se “Commit”, ali ako iz nekog razloga dođe do odbijanja, tada se dodjeljuje “Rollback”. Najčešće se to dešava kada žele podijeliti jedan od brojeva sa nulom ili unijeti iznos koji ne odgovara onome što je prethodno uneseno u bazu podataka.
Vrste
Najčešći slučaj upotrebe transakcije je plaćanje. platnu karticu iz banke na bilo kojoj teritoriji shopping centar, trgovinu ili finansijsku instituciju. Operacija počinje kada vlasnik želi da plati robu, nakon čega svoju bankovnu karticu daje zaposleniku odgovornom za kasu.
Zatim se kartica postavlja u poseban terminal, gdje je potrebno samo potvrditi naknadnu operaciju. Da biste to učinili, morate unijeti podatke i unaprijed određeni PIN kod. Zatim će terminal odlučiti da li je unesena lozinka bila ispravna ili je treba odbiti. U svakom slučaju, informacije o transakciji će biti zabilježene u određenoj bazi podataka. To se događa zbog prijenosa podataka na opsluživanje platnog sistema ovu mapu. I već u ovoj fazi dolazi do potpune provjere autentičnosti unesenih podataka. Na kraju krajeva, oni mogu, ali i ne moraju biti prisutni na uplatnici.
Ali ako je sve ispravno, transakcija je uspješno završena i poslata direktno banci izdavaocu. Preko njega je izvršena izrada ove platne kartice. Zatim se informacija o transakciji šalje u press centar, gdje se uspostavlja informacija o pravima korištenja platnog sistema.
Vrijedi napomenuti da ako se u jednoj od faza otkrije greška ili neslaganje podataka, transakcija se jednostavno odbija.
Prijave
U različitim područjima primjene koriste se različite oznake za riječ "transakcija":
- Ekonomija znači transfer sredstava sa jednog tokovnog računa na drugi. Ovo posebno važi za transakcije kupovine i prodaje;
- Poslovanje sa bankomatima rezultira izdavanjem gotovine klijentu koji je za prijem koristio bankovnu karticu ili broj računa;
- Političko objašnjenje nosi sporazum o obostrano korisnim uslovima između dvije strane.
Mnogo zavisi od kartice koju je izdala banka. Debit i kreditna kartica se poslužuju drugačije. Direktan utjecaj također ima prioritet prijave, koji je postavljen finansijsku strukturu ko je izdao karticu. U zavisnosti od ovih faktora, brzina operacije će varirati.
Transakcije s malim iznosima novca izgledaju jednostavnije. Ako je osoba navela određenu postavku u parametrima, imat će priliku da ne unese lozinku tokom transakcije. Provest će se automatski i ukoliko na računu bude dovoljan iznos sredstava, oni će biti otpisani, a podaci o operaciji evidentirani u bazi podataka.
Čak i oblasti koje nisu potpuno povezane sa finansijama rade sa konceptom „transakcija“. Psihologija je navedena kao primjer. Stručnjaci u ovoj oblasti transakcijom nazivaju razmjenu podražaja koja se javlja tokom razgovora između dvije osobe. Ova aplikacija je pomalo nategnuta, ali ima pravo na postojanje. Sada znate šta su transakcije.
Morate znati barem gore navedene informacije o transakcijama, jer bez njih ne možete savremeni svet To je jednostavno nemoguće. To znači da još uvijek trebate imati minimalnu ideju.