Klaida naudojant užrakto tvarkyklės automatinį režimą. Sandorių duomenų užrakto valdymas, mechanizmas

Pagrindinės priežastys, kodėl reikia pereiti prie valdomų užraktų:

  • Pagrindinė priežastis yra 1C:Expert rekomendacija, pagrįsta parodymais arba 1C:TsUP
  • Problemos su vienu metu esančiais naudotojais ()
  • Naudojant Oracle, PostgreSQL ir .

Darbo kaina:

Valdomų spynų esmė

Dirbant automatinio užrakinimo valdymo režimu, 1C:Enterprise nustato aukštą duomenų izoliavimo laipsnį atliekant operaciją DBVS lygiu. Tai leidžia visiškai pašalinti galimybę gauti neišsamius ar neteisingus duomenis be ypatingų programų kūrėjų pastangų.

Tai patogus ir teisingas būdas nedideliam aktyvių vartotojų skaičiui. Kūrimo paprastumo kaina yra tam tikras perteklinis užrakinimas DBVS lygiu. Šie užraktai siejami tiek su užrakinimo mechanizmų diegimo pačioje DBVS ypatumais, tiek su tuo, kad DBVS negali (ir neatsižvelgia) atsižvelgti į fizinę 1C:Enterprise metaduomenų objektų reikšmę ir struktūrą.

Dirbant su dideliu pasipriešinimu dėl išteklių (didelis vartotojų skaičius), tam tikru momentu perteklinių užraktų poveikis tampa pastebimas našumo lygiagrečiame režime atžvilgiu.

Perkėlus konfigūraciją į valdomą režimą, platformoje įjungiamas papildomas „užrakto tvarkyklės“ funkcionalumas ir dabar duomenų vientisumo kontrolė vykdoma ne DBVS, o 1C serverio pusėje. Tai padidina 1C serverio aparatinės įrangos apkrovą (reikia greitesnių procesorių ir daugiau atminties), o iš tikrųjų netgi šiek tiek sulėtėja (kelis procentais), tačiau žymiai pagerina spynų situaciją (mažiau užraktų dėl objekto užraktų ir ne ant lentelių derinio, mažiau blokuojamo ploto ir kai kuriais atvejais skaitymo užraktų tarnavimo laikas yra trumpesnis, t. y. ne iki operacijos pabaigos). Tai pagerina bendrą suderinamumą.


Naujos 1C konfigūracijos buvo nedelsiant įdiegtos valdomu režimu.

  • Klausimas: Ar galima pirma atlikti auditą, o tik tada perkelti į FM?

Atsakymas: Taip, auditas pasitarnaus kaip papildomas perėjimo prie valdomų spynų pagrįstumo pagrindimas, taip pat įvertins automatinių užraktų indėlį į bendrą sulėtėjimą ir ar, be perkėlimo, reikia papildomų pastangų.

  • Klausimas: Norint perkelti į UX, kokia prieiga turėtų būti suteikta - RDP, TeamViewer? Arba galiu atsiųsti jums konfigūracijos failą?

Atsakymas: Stengiamės neapsiriboti viena konkrečia nuotolinės prieigos technologija, tai tiks bet kokia nuotolinės prieigos technologija. Jei jums tai nesvarbu, tada KPP yra praktiškesnis.
Mes galime atlikti optimizavimą pagal atsiųstą konfigūracijos failą, tačiau tuomet negalėsime derinti kai kurių realių duomenų ir teks atidžiau testuoti. Jei optimizuojame duomenų bazės kopiją, galime ją nuodugniau išbandyti prieš pateikdami jums darbo rezultatą.

  • Klausimas: Turime 10 etatinių programuotojų, kurie kiekvieną dieną kažką keičia konferencijoje. Naudojama bendra konfigūracijos saugykla. Kaip bus organizuojama sąveika perkėlimo į UX metu? O gal visus programuotojus reikia siųsti atostogų?

Atsakymas: Paprastai mūsų pakeitimai atliekami per porą dienų. Likęs laikas skiriamas atliktų pakeitimų testavimui, taip pat ir verslo, o ne techninių sumetimų nulemtos reikiamos logikos požiūriu. Mes galime atlikti atskiro konfigūracijos failo pakeitimus cf , tada jūsų programuotojas įtrauks jį į saugyklą. Niekam nereikės eiti atostogų. Kituose sąveikos variantuose tereikia susitarti, kokius objektus planuoja užfiksuoti jūsų kūrėjai, kad galėtume sudaryti abiems pusėms patogų darbo planą. Paprastai jūsų kūrėjams nereikia fiksuoti visos konfigūracijos ar duoti mums dienos „vairo“.

Sistema 1C:Enterprise leidžia naudoti du darbo su duomenų baze režimus: automatinių užraktų režimą atliekant operaciją ir valdomų užraktų režimą atliekant operaciją.

Esminis skirtumas tarp šių režimų yra toks. Automatinio užrakinimo režimas nereikalauja, kad kūrėjas imtųsi jokių veiksmų, kad galėtų valdyti operacijos užraktus. Šias taisykles užtikrina 1C:Enterprise sistemos platforma, naudodama tam tikrus operacijų izoliavimo lygius tam tikroje DBVS. Šis veikimo būdas kūrėjui yra pats paprasčiausias, tačiau kai kuriais atvejais (pavyzdžiui, intensyviai dirbant vienu metu dideliam vartotojų skaičiui) DBVS naudojamas operacijų izoliacijos lygis negali užtikrinti pakankamo lygiagretumo, kuris pasireiškia daugybe užrakinimo konfliktų, kai vartotojai dirba.

Dirbdama valdomo užrakinimo režimu, 1C:Enterprise sistema naudoja daug žemesnį transakcijų izoliavimo lygį DBVS, o tai gali žymiai padidinti programos sprendimo vartotojų lygiagretumą. Tačiau, skirtingai nuo automatinio užrakinimo režimo, toks operacijų izoliavimo lygis pats savaime nebegali užtikrinti visų darbo su duomenimis taisyklių laikymosi operacijos metu. Todėl dirbant valdomu režimu, kūrėjas privalo savarankiškai valdyti operacijoje nustatytas užraktus.

Apibendrinant, skirtumai dirbant automatinio blokavimo režimu ir valdomo blokavimo režimu parodyti šioje lentelėje:

Blokavimo režimo nustatymas konfigūracijoje

Konfigūracija turi duomenų užrakto valdymo režimo ypatybę. Kiekvienas konfigūracijos programos objektas taip pat turi duomenų užrakto valdymo režimo ypatybę.
Duomenų užrakto valdymo režimas visai konfigūracijai gali būti nustatytas kaip Automatinis, Tvarkomas (naujos konfigūracijos numatytoji vertė) arba Automatic and Managed. Automatinės ir valdomos reikšmės reiškia, kad atitinkamas blokavimo režimas bus naudojamas visiems konfigūracijos objektams, neatsižvelgiant į kiekvienam objektui nustatytas vertes. Vertė Automatic ir Managed reiškia, kad konkrečiam konfigūracijos objektui bus naudojamas režimas, nurodytas jo ypatybėje Duomenų blokavimo valdymo režimas: Automatinis arba Valdomas.
Pažymėtina, kad metaduomenų objektui nurodytas duomenų užrakinimo valdymo režimas nustatomas toms operacijoms, kurias inicijuoja 1C:Enterprise sistema dirbant su šio objekto duomenimis (pavyzdžiui, keičiant objekto duomenis).
Jei, pavyzdžiui, objekto rašymo operacija atliekama kūrėjo inicijuotoje operacijoje (metodas StartTransaction()), tai duomenų užrakinimo valdymo režimą lems parametro Locking Mode reikšmė.
metodas StartTransaction(), o ne duomenų užrakto valdymo režimo metaduomenų objekto ypatybės reikšmė.
Pagal numatytuosius nustatymus parametras Blokavimo režimas yra nustatytas į Duomenų blokavimo valdymo režimą
Norėdami naudoti valdomo užrakinimo režimą aiškioje operacijoje, turite nurodyti šio parametro reikšmę
Duomenų užrakto valdymo režimas.

Darbas su valdomomis spynomis naudojant integruotą kalbą

Norėdami valdyti operacijos užraktus, naudojamas integruotas kalbos objektas DataLock. Šio objekto egzempliorius gali būti sukurtas naudojant konstruktorių ir leidžia apibūdinti reikiamas užrakinimo erdves ir užrakinimo režimus. Norėdami nustatyti visus sukurtus užraktus, naudokite objekto DataLock metodą Lock(). Jei šis metodas vykdomas atliekant operaciją (aiškią ar numanomą), užraktai įgyjami ir bus automatiškai atleidžiami, kai operacija baigiasi. Jei metodas Lock() vykdomas ne operacijos metu, užraktai neįgyjami.

Nustatomos sąlygos, kad lauko reikšmė būtų lygi nurodytai reikšmei arba kad lauko reikšmė būtų nurodytame diapazone.
Sąlygas galima nustatyti dviem būdais:

  • aiškiai nurodant lauko pavadinimą ir reikšmę (DataLockElement objekto metodas SetValue());
  • nurodydami duomenų šaltinį, kuriame yra reikiamos reikšmės (DataLockElement objekto ypatybė DataSource).

Kiekvienam blokuojančiam elementui galima nustatyti vieną iš dviejų blokavimo režimų:

  • pasidalino,
  • išskirtinis.

Tvarkomo užrakinimo suderinamumo lentelė atrodo taip:

Bendras užrakinimo režimas reiškia, kad užrakinti duomenys negali būti pakeisti kita operacija iki dabartinės operacijos pabaigos.
Išskirtinis užrakinimas reiškia, kad užrakintų duomenų negali keisti kita operacija iki dabartinės operacijos pabaigos, taip pat jų negali nuskaityti kita operacija, kuri turi bendrą duomenų užraktą.

Veikimo „Automatinis ir valdomas“ režimu ypatybės

Dirbant automatinio ir valdomo blokavimo valdymo režimu, reikia atsižvelgti į dvi ypatybes:

Nepriklausomai nuo tam tikros operacijos režimo, sistema įdiegs atitinkamą valdomą
blokavimas.
Užrakto valdymo režimas nustatomas pagal aukščiausio lygio operaciją. Kitaip tariant, jei operacijos pradžios metu buvo pradėta kita operacija, pradėta operacija gali būti vykdoma tik tokiu režimu, kuris nustatytas jau vykdomai operacijai.

Išsamiau apsvarstykime išvardytas funkcijas.

Pirmoji ypatybė yra ta, kad net jei operacijai naudojamas automatinis užraktų valdymo režimas, įrašant duomenis į šią operaciją, sistema papildomai įdiegs atitinkamus valdomus užraktus. Iš to išplaukia, kad operacijos, vykdomos valdomo užrakinimo režimu, gali prieštarauti operacijoms, vykdomoms automatinio užrakinimo valdymo režimu.

Antroji savybė yra ta, kad užrakto valdymo režimas, nurodytas metaduomenų objektui konfigūracijoje arba aiškiai nurodytas pradedant operaciją (kaip StartTransaction() metodo parametras), yra tik „pageidaujamas“ režimas. Tikrasis užrakto valdymo režimas, kuriuo bus vykdoma operacija, priklauso nuo to, ar šis iškvietimas pradėti operaciją yra pirmasis, ar iki to momento šioje 1C:Enterprise sistemos sesijoje jau buvo pradėta kita operacija.

Pavyzdžiui, jei reikia tvarkyti užraktus rašant registro įrašų rinkinius registruojant dokumentą, tada valdomas užrakinimo režimas turi būti nustatytas ir pačiam registrui, ir dokumentui, nes atliekant operaciją bus rašomi registro įrašų rinkiniai. atidarytas rašant dokumentą.

Duomenų užrakto valdymo mechanizmas sandoryje leidžia užrakinti keičiamus duomenis ne per naudojamą duomenų bazių valdymo sistemą, o per platformą. Toks duomenų užrakto valdymas atliekamas ne pagal DBVS duomenis, o pagal dalykinę sritį. Dėl to užraktai taikomi tiksliau ir padidėja naudotojų lygiagretumas.

1C konfigūracija: „Enterprise 8“ gali veikti vienu iš trijų režimų, skirtų valdyti užraktus operacijos metu:

  • automatinis;
  • valdomas - standartinis režimas naujoms konfigūracijoms;
  • automatinis ir valdomas.

IN automatinis režimas Duomenų užrakto valdymas naudoja pakartojamus skaitymo ir nuosekliuosius operacijų izoliavimo lygius, kuriuos suteikia duomenų bazės valdymo sistema. Šie operacijų izoliavimo lygiai užtikrina nuoseklų ir nuoseklų duomenų skaitymą, nereikalaujant jokių papildomų užrakto valdymo pastangų iš kūrėjo.

Valdomas režimas leidžia padidinti vartotojų lygiagretumą kliento-serverio veikimo režimu, naudojant žemesnį duomenų bazės operacijų izoliacijos lygį (Read Committed). Įrašant duomenis į operaciją, integruoti kalbos objektai automatiškai užrakina reikiamus duomenis. Kūrėjas turi valdyti duomenų užraktus tais atvejais, kai verslo logika reikalauja nuoseklaus ir nuoseklaus operacijos duomenų skaitymo.

Automatinis ir valdomas režimas leidžia naudoti galimybę valdyti užraktus operacijos metu tik kai kuriems konfigūracijos objektams. Šis režimas gali būti naudojamas siekiant optimizuoti vartotojo suderinamumą su atskirais programos objektais (pavyzdžiui, keliais intensyviausiai naudojamais dokumentais) arba laipsniškai perjungti dideles konfigūracijas į operacijų užrakto valdymo režimą.

Apibendrinant, skirtumai dirbant automatinio blokavimo režimu ir valdomo blokavimo režimu parodyti šioje lentelėje:

Dažniausiai poreikis valdyti duomenų užraktus operacijos metu iškyla dokumentų registravimo procese, kai reikia perskaityti, o vėliau įrašyti pakeistus duomenis į tas pačias lenteles. Pavyzdžiui, jei registruodami dokumentą stebite likučius.

Specialiai šiam tikslui turtą turi kaupiamųjų registrų ir apskaitos registrų įrašų rinkiniai BlockForChange.

Jei jums reikia kontroliuoti likučius ir tada įrašyti judesius tame pačiame registre, tada ši nuosavybė turi būti nustatyta šio registro įrašų rinkiniui nuosavybėje Judesiai.

Šios savybės poveikis yra toks pat, kaip jei kūrėjas savarankiškai įdiegtų (nurodytas kode) reikiamus valdomus užraktus 1C:Enterprise 8. Rašant šį įrašų rinkinį platforma automatiškai įdiegs reikiamą valdomą užraktą. Dėl to kitos valdomos operacijos, naudojant tą patį užraktą, negalės pradėti skaityti šio registro, kol nebus baigta dabartinė operacija.

Žemiau pateikiamas duomenų užraktų „rankinio“ valdymo, nuskaitant kaupimo registro duomenis, pavyzdys Daiktų apskaita dokumentų tvarkyme Pardavimo sąskaita faktūra. Šiame pavyzdyje valdomi užraktai sukuriami ir nustatomi naudojant įtaisytąją kalbą.

Mechanizmas sandorių užraktai naudojamas konkurenciniam vartotojo prieigai prie DBVS.
Sandoris – tai tam tikra nenutrūkstama operacija, kurios metu keičiasi duomenų bazės būsena. Tai yra minimalus pokyčių kiekis: negalite atlikti pusės sandorio; jei operacija nebus baigta, duomenų bazė bus grąžinta į pradinę būseną.
Kadangi operacija fiksuoja duomenų masyvą, prie šio masyvo atsiranda niuansas: pavyzdžiui, viena operacija pakeičia duomenis, o kita bando juos nuskaityti. Skaitymo rezultatas gali būti neteisingas, nes nebus įtraukti naujausi pakeitimai. Todėl operacijų izoliavimas veikia DBVS lygiu. Galimi šie izoliacijos lygiai:

  • Skaityti neįsipareigojęs- kol viena operacija pakeičia masyvą, kita negali jo pakeisti, bet gali ją perskaityti. Žemiausias izoliacijos lygis.
  • Skaityti įsipareigojo- kol viena operacija pakeičia masyvą, kita negali jo pakeisti ar nuskaityti
  • Pakartotinis skaitymas- kol viena operacija skaito masyvą, kita negali jo pakeisti, bet gali nuskaityti
  • Serializuojama- kol viena operacija skaito masyvą, kita negali jo pakeisti ar nuskaityti. Visos operacijos yra nuoseklios. Maksimalus izoliacijos lygis.

Jei nustatyta 1C:Enterprise konfigūracija automatinis užrakinimo režimas, tada DBVS pasirenka operacijos izoliavimo lygį. MS SQL atveju tai bus Repeatable read arba Serializable lygiai, ty duomenų izoliacija yra artima maksimaliai. Tai išsprendžia duomenų teisingumo problemas, tačiau intensyvaus vartotojo darbo metu gali atsirasti blokavimas DBVS lygiu. Todėl „1C:Enterprise“ turi savo funkciją darbui su užraktais, kurie įjungiami įjungus valdomų užraktų režimą. Tokiu atveju MS SQL operacijos izoliacijos lygis bus perskaitytas. Pati platforma išskirs duomenis nepasikliaudama DBVS.

Valdomas užrakinimo režimas įgalintas konfigūracijos ypatybėse:

Be to, užrakinimo režimą galima nustatyti konkretiems konfigūracijos objektams:

Jei visa konfigūracija nustatyta į Automatinio užrakinimo režimą, visos visų registrų operacijos veiks automatiniu režimu, neatsižvelgiant į konfigūracijos objektui nustatytą režimą. Jei valdoma, tada panašiai visos operacijos bus valdomos. Jei konfigūracijos režimas nustatytas į Automatinis ir valdomas, kiekvieno objekto režimas bus nustatomas pagal jo nustatymus.

Yra vienas taškas automatiniam ir valdomam režimui. Viena vartotojo operacija platformos požiūriu gali reikšti kelias operacijas. Pavyzdžiui, interaktyvus dokumento paskelbimas registre daro du operacijos – paties dokumento įrašas, o šios operacijos viduje – eilučių rinkinio pagal registrą įrašas. Atsižvelgiant į paties dokumento užrakto valdymo režimą ir registrą, kurį jis perkelia, galimos keturios situacijos:

  1. Dokumento režimas Automatinis, registro režimas Automatinis ->
  2. Dokumento režimas Tvarkomas, registro režimas Tvarkomas -> įrašymas pagal registrą valdomu režimu
  3. Dokumento režimas Automatinis, registro režimas Valdomas -> įrašymas pagal registrą automatiniu režimu
  4. Dokumento režimas Tvarkomas, registravimo režimas Automatinis -> išimtis (klaida)

1C egzamino 06.59 klausimas: Platform Professional. Skelbiant dokumentą per bet kurį registrą, jei dokumente yra automatinio operacijų užrakto valdymo režimas, o registre yra valdomas režimas (konfigūracijos ypatybėse naudojama parinktis „Automatinis ir valdomas“, toks registravimas lems:

Teisingas atsakymas yra antras, jį nustatome pagal pirmą operaciją, jei ji yra automatinė, tai viskas automatiškai.

1C egzamino 06.60 klausimas: Platform Professional. Skelbiant dokumentą per bet kurį registrą, jei dokumente yra valdomas operacijų užraktų valdymo režimas, o registre yra automatinis (konfigūracijos ypatybėse naudojama parinktis „Automatinis ir valdomas“, toks registravimas lems:

  1. į klaidos situaciją
  2. visa operacija bus baigta automatiškai
  3. visas sandoris bus baigtas kontroliuojamai

Teisingas atsakymas yra pirmasis, nustatome pagal pirmą operaciją, jei jis yra kontroliuojamas, tai yra klaida.

1C egzamino 06.61 klausimas: Platform Professional. Skelbiant dokumentą per bet kurį registrą, jei dokumente yra automatinis operacijų užraktų valdymo režimas, o registre yra valdomas režimas (konfigūracijos ypatybėse naudojama parinktis „Tvarkoma“), toks registravimas sukels:

  1. į klaidos situaciją
  2. visa operacija bus baigta automatiškai
  3. visas sandoris bus baigtas kontroliuojamai


 

Gali būti naudinga perskaityti: