Atviras
Uždaryti

Klaida naudojant užrakto tvarkyklę. Sandorių duomenų užrakto valdymas, mechanizmas. Darbas su valdomomis spynomis naudojant integruotą kalbą

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:

Tvarkomų 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ų (daug vartotojų), 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ų. Kitose sąveikos galimybėse 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“.

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 funkcionalumą 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

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 DBVS duomenų, o domeno požiūriu. 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 vartotojo darbo lygiagretumą kliento-serverio veikimo režimu, naudojant žemesnį duomenų bazės operacijų izoliavimo 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 tik naudojant įtaisytąją kalbą.