1c omogući otklanjanje grešaka na serveru. Ispravljanje grešaka serverskih procedura (1Cv82)

Zadatak 1C programera nije samo pisanje koda, već i praćenje i ispravljanje grešaka, izgradnja optimalnog algoritma za izvršavanje naredbi i optimizacija brzine rada, odnosno otklanjanja grešaka. Teško je to učiniti bez korištenja funkcionalnosti ugrađenog debugera serverskih procedura.

U početku je način otklanjanja grešaka onemogućen na 1C serverima, tako da će programer morati napraviti jednostavne manipulacije s postavkama kako bi mogao temeljito provjeriti kod.

Omogućavanje načina za otklanjanje grešaka na serveru za 1C platformu verziju 8.2 i noviju

Algoritam za omogućavanje otklanjanja grešaka je prilično jednostavan. Ne pretpostavlja dubinsko poznavanje arhitekture operativnog sistema i administracije 1C. Ipak, ipak treba da budete veoma oprezni, jer se rad na otklanjanju grešaka obavlja direktno na serveru i sa administratorskim pravima. Stoga, ako nemate temeljno znanje, striktno slijedite algoritam akcija bez improvizacije:

  • Zaustavite uslugu 1C:Enterprise Server Agent putem Server Managera. Ako se postavljanje odvija na proizvodnom serveru, tada biste trebali unaprijed voditi računa o odsustvu 1C korisnika u bazi podataka;
  • Pokrenite uređivač sistemskog registra klikom na “Start” - “Run” ili prečicom na tastaturi “Win” + “R”. U prozoru koji se otvori unesite red “regedit”;
  • U registru trebate pronaći stavku;

  • Među parametrima, pronađite “ImagePath” i promijenite ga dodavanjem “-debug” postojećoj vrijednosti sa razmakom na kraju;
  • Preko upravitelja servera pokrenite uslugu koja je zaustavljena - "1C: Enterprise Server Agent".

Omogućavanje načina za otklanjanje grešaka na serveru za 1C verziju 8.1

Ako trebate omogućiti način otklanjanja grešaka na platformi 8.1, algoritam akcija ostaje gotovo nepromijenjen. Jedina promjena je lokacija parametra putanje "ImagePath". U verziji 8.1 nalazi se u odjeljku.

1C programeri savjetuju da se omogući način otklanjanja grešaka isključivo za test servere, gdje bi kod trebao biti otklonjen. Razlog za ovu preporuku je zbog uticaja na performanse koji se javlja kada je otklanjanje grešaka omogućeno na serveru. Ako imate mnogo korisnika ili snaga servera ostavlja mnogo da se poželi, pažljivo poslušajte ovaj savjet kako otklanjanje grešaka ne bi imalo negativne posljedice.

Implementirano u verziji 8.3.7.1759.

Značajno smo redizajnirali mehanizam za otklanjanje grešaka. Za to je bilo nekoliko razloga. Prvo, željeli smo vam dati mogućnost otklanjanja grešaka u svakoj aplikaciji koja je danas dostupna. Drugo, prethodna arhitektura debuggera zahtijevala je promjene kako bi se održala korak sa trenutnim trendovima i prilagodila budući razvoj. Treće, bilo je potrebno univerzalno sučelje za otklanjanje grešaka, s kojim ne samo 1C:Enterprise konfigurator, već i .

Glavne prednosti

Kako biste mogli zamisliti obim promjena koje smo napravili, ukratko ćemo navesti glavne prednosti novog mehanizma.

HTTP otklanjanje grešaka

Prethodni mehanizam za otklanjanje grešaka bio je zasnovan na činjenici da je debuger, implementiran u konfiguratoru 1C:Enterprise, direktno komunicirao sa stavkama za otklanjanje grešaka (klijentske i serverske aplikacije). Ova interakcija je obavljena korištenjem TCP/IP protokola.

Međutim, puštanjem aplikacija 1C:Enterprise na Internet, a posebno pojavom mobilnih aplikacija, ovaj pristup je postao izvor ograničenja i neugodnosti. TCP/IP protokol ne dozvoljava uvijek ispravljaču grešaka da "dostigne" stavke koje se otklanjaju. Na kraju krajeva, oni se mogu nalaziti izvan lokalne mreže u kojoj je pokrenut program za otklanjanje grešaka.

Stoga smo u novom mehanizmu kao transportni protokol odabrali „sveprisutniji“ HTTP protokol, koji, inače, koriste i klijentske aplikacije za povezivanje sa informacionim bazama podataka.

Moderna arhitektura za otklanjanje grešaka

Karakteristika prethodnog mehanizma za otklanjanje grešaka bila je potreba za povezivanjem na infobazu pomoću konfiguratora. Kao rezultat toga, programer za otklanjanje grešaka imao je pun pristup svim administrativnim funkcijama.

Novi mehanizam za otklanjanje grešaka više ne zahtijeva vezu s informacijskom bazom koja se otklanja. Glavna stvar koja debugeru sada treba je ista konfiguracija koja radi za klijente. Da biste ga dobili, nema potrebe da se povežete na infobazu koja se otklanja greške. Možete ga učitati, na primjer, iz datoteke.

Otklanjanje grešaka u mobilnim aplikacijama

Zahvaljujući korištenju HTTP protokola, postalo je moguće otklanjanje grešaka u aplikacijama koje izvršava mobilna platforma. Štaviše, možete otkloniti greške u bilo kojem kontekstu: klijentu, serveru, kao i pozadinskim poslovima.

Sada, tokom otklanjanja grešaka, možete promijeniti vrijednosti bilo koje varijable za pisanje. Za brzi pregled i promjenu lokalnih varijabli implementirali smo poseban prozor. A izračunavanje izraza koje prikazuje program za otklanjanje grešaka sada se izvodi u asinhronom režimu.

Otklanjanje grešaka u razvojnim alatima

Prilikom kreiranja novog mehanizma za otklanjanje grešaka, implementirali smo novi, univerzalni softverski interfejs za interakciju sa njim. Ovaj interfejs koristi konfigurator 1C:Enterprise, a isti interfejs sada koristi i novo razvojno okruženje. Stoga su sve mogućnosti otklanjanja grešaka sada dostupne kada radite u .

Arhitektura procesa otklanjanja grešaka

Nova arhitektura za otklanjanje grešaka izgleda ovako:

Otklanjanje grešaka uključuje debugger, stavke za otklanjanje grešaka i novi element - debug server.

Ne postoji direktan prijenos informacija između alata za otklanjanje grešaka i stavki za otklanjanje grešaka. Sva interakcija je organizirana preko servera za otklanjanje grešaka. Ovo je glavni element mehanizma. Server za otklanjanje grešaka ima red poruka kroz koji debuger i stavke za otklanjanje grešaka prenose informacije jedna drugoj.

I sam program za otklanjanje grešaka i stavke za otklanjanje grešaka komuniciraju sa serverom za otklanjanje grešaka preko HTTP-a. Dakle, sada nije važno gdje se nalaze ove stavke za otklanjanje grešaka.

Interakciju sa serverom za otklanjanje grešaka inicira program za otklanjanje grešaka i stavke za otklanjanje grešaka. U tu svrhu se organiziraju dodatne veze. Njihova glavna svrha je otkriti da li su se informacije pojavile za njih na serveru za otklanjanje grešaka. I ako se pojavi, saznajte ovu informaciju.

Dakle, interakcija je jednostrana. Informacije se stalno prenose sa servera za otklanjanje grešaka u debuger i objekte za otklanjanje grešaka.

Identifikacija informacionih baza

U prethodnom mehanizmu, niz veze je korišten za identifikaciju baza podataka. Ovo rješenje je u nekim slučajevima uzrokovalo poteškoće u usklađivanju stavki za otklanjanje grešaka i konfiguratora. Zato što je, prvo, bilo osjetljivo na velika i mala slova, a drugo, prilikom otklanjanja grešaka u nekim kontekstima, platforma je automatski generirala niz veze. I nije se uvijek podudarao s onim koji ste naveli prilikom povezivanja baze podataka u konfiguratoru. Pronalaženje i ispravljanje takvih situacija zakomplikovalo je proces otklanjanja grešaka.

U novom mehanizmu smo se riješili niza veze. Sada koristimo identifikator baze podataka. U bazi podataka datoteka, takav identifikator se generiše prvi put kada se uspostavi veza sa klijentom. U informacijskoj bazi servera, identifikator registracije baze podataka u klasteru se koristi kao takav identifikator.

Lijepa dodatna stvar ovdje je da smo za sada zadržali stari mehanizam za otklanjanje grešaka na platformi (možda će biti isključen u budućnosti). I možete ga koristiti ako želite, ili ako je potrebno. Tako smo izmijenili stari mehanizam i sada koristi identifikator baze podataka, a ne niz veze.

Tipični scenariji za otklanjanje grešaka

Iz perspektive programera aplikacija, tipični scenariji otklanjanja grešaka se nisu promijenili. Jedina značajna razlika je u tome što novi mehanizam za otklanjanje grešaka mora biti omogućen. Zato što je po defaultu onemogućeno.

Bez obzira na to, ima smisla upoznati se s onim što se dešava sada kada pokrenete otklanjanje grešaka. Zato što vam može biti od koristi u nekim nestandardnim radnim scenarijima.

Opcija datoteke

Prije nego što počnete s otklanjanjem grešaka u verziji datoteke, morate u postavkama konfiguratora naznačiti da želite koristiti novi mehanizam za otklanjanje grešaka - “ HTTP otklanjanje grešaka».

U ovom slučaju, konfigurator će vas automatski upitati da koristite lokalni server za otklanjanje grešaka. Morate se složiti s ovim i ponovo pokrenuti konfigurator.

Metoda otklanjanja grešaka koju ste postavili se čuva između sesija konfiguratora, ali se pohranjuje u kontekstu baza podataka. Stoga, za drugu bazu podataka morat ćete je ponovo omogućiti.

Sada, kada pokrenete konfigurator ili kada ga ponovo pokrenete, platforma će automatski pokrenuti server za otklanjanje grešaka. Ovo je zasebna aplikacija dbgs.exe. Možete ga vidjeti u upravitelju zadataka.

Vlasnički parametar specificira identifikator aplikacije koja posjeduje ovaj server za otklanjanje grešaka. U ovom slučaju, ovo je konfigurator 1C: Enterprise.

Sada, ako pokrenete sesiju otklanjanja grešaka 1C:Enterprise iz konfiguratora, ona će se automatski povezati sa serverom za otklanjanje grešaka, a u konfiguratoru ćete vidjeti povezane stavke za otklanjanje grešaka.

Ako je sesija 1C: Enterprise pokrenuta bez otklanjanja grešaka, tada je, kao i prije, možete povezati s debugerom. Tek sada morate navesti adresu servera za otklanjanje grešaka:

Ovu adresu možete pronaći u postavkama stavki za otklanjanje grešaka:

Postoji jedna neobična stvar povezana sa radom sa nekoliko baza podataka odjednom. U verziji datoteke, svaki konfigurator s omogućenim http debuggingom pokreće vlastitu kopiju servera za otklanjanje grešaka na različitim portovima:

Stoga, ako imate nekoliko otvorenih konfiguratora odjednom, da biste povezali klijentsku aplikaciju s debagerom, morate odabrati ispravan.

Klijent-server opcija

Prije nego što počnete s otklanjanjem grešaka u verziji klijent-server, morate, kao i prije, pokrenuti 1C:Enterprise server u načinu za otklanjanje grešaka, ali naznačiti da će se novi HTTP mehanizam koristiti za otklanjanje grešaka. Na primjer, ovako:

ragent.exe -debug -http

Kada se server pokrene na ovaj način, pokrenut će se i server za otklanjanje grešaka.

Vlasnički parametar će naznačiti identifikator upravitelja klastera 1C:Enterprise.

Sada u postavkama konfiguratora, kao iu slučaju baze podataka datoteka, morate naznačiti da želite koristiti novi mehanizam za otklanjanje grešaka - “ HTTP otklanjanje grešaka».

U ovom slučaju, konfigurator će vas automatski upitati da koristite server za otklanjanje grešaka u klasteru, a ne lokalni server. Morate se složiti s ovim i ponovo pokrenuti konfigurator.

Povezivanje stavki za otklanjanje grešaka

Kada pokrenete sesije otklanjanja grešaka iz konfiguratora, aplikacije automatski povezuju stavke za otklanjanje grešaka (i klijent i server) sa serverom za otklanjanje grešaka.

Istovremeno, kao i prije, imate priliku konfigurirati konfigurator da automatski povezuje stavke za otklanjanje grešaka, bez obzira na to kako su pokrenute. Sada su ove mogućnosti postale mnogo bogatije.

Prvo, platforma vam sada nudi sve moguće stavke za otklanjanje grešaka koje možete izabrati.

I drugo, pojavio se još jedan, suptilniji način postavljanja. Ovo je korištenje unaprijed kreiranih selekcija.

Takve odabire možete koristiti i kada povezujete stavke za otklanjanje grešaka i da vidite dostupne stavke za otklanjanje grešaka.

U odabiru, pored samih stavki za otklanjanje grešaka, možete odrediti određene korisnike čije sesije vas zanimaju, a također, ako se koristi razdvajanje podataka, naznačiti područje baze podataka koje će biti otklonjene.

Promjena varijabli, svojstava objekta i asinhrono evaluiranje izraza

Novi mehanizam za otklanjanje grešaka omogućava vam da promenite vrednosti varijabli tokom otklanjanja grešaka. U prethodnom mehanizmu nije postojala takva mogućnost.

Za praktično gledanje i promjenu lokalnih varijabli, što se čini najčešćim zadatkom, implementirali smo “ Lokalne varijable».

Izvana, vrlo je sličan „Scoreboardu“ na koji ste navikli. Ali, prvo, ovaj prozor je već automatski popunjen svim lokalnim varijablama, a drugo, sada možete promijeniti vrijednosti varijabli.

Možete promijeniti vrijednosti primitivnih tipova direktno u ćeliji " Značenje»:

A da promijenite druge vrijednosti, možete koristiti prozor za unos izraza:

Dobar bonus je što je kontekstualni opis alata potpuno funkcionalan u ovom prozoru.

Na potpuno isti način možete promijeniti vrijednosti bilo koje (ne samo lokalne) varijable i svojstva za pisanje. U prozoru za izračunavanje izraza (koji se poziva naredbom Shift+F9) možete promijeniti vrijednosti varijabli kako u ćeliji "Vrijednost", tako i pomoću zasebnog dijaloga.

Inače, sam proračun izraza se sada izvodi asinhrono. To znači da konfigurator naređuje izračunavanje stavke za otklanjanje grešaka. I neko vrijeme se ovaj proračun očekuje na serveru. Ako je proračun završen, rezultati se odmah šalju konfiguratoru. Ako se proračun provodi dugo vremena, rezultati ovih proračuna kasnije asinhrono stižu u konfigurator. Ovaj pristup vam omogućava da ne čekate dugotrajne proračune u konfiguratoru i nastavite sa radom.

Ovaj članak govori o tome kako omogućiti otklanjanje grešaka na 1C serveru 8.1, 8.2 i 8.3 na Windows i Ubuntu operativnim sistemima.

Osim toga, napominjem da je ovaj članak dio male serije članaka o otklanjanju grešaka u 1C:

  • Kako omogućiti otklanjanje grešaka na 1C serveru

Omogućite otklanjanje grešaka na 1C serveru u Windowsu

Pokrenite uređivač registra tako što ćete pokrenuti naredbu regedit (pomoću Win+R ili Start->Run).

Više o HTTP otklanjanju grešaka i serveru za otklanjanje grešaka možete pročitati u sledećem članku u nizu.

Omogućite otklanjanje grešaka na 1C serveru u Ubuntu

Prvo instaliramo server:

sudo service srv1cv83 stop

Nakon toga otvorite datoteku /etc/init.d/srv1cv83 kao superkorisnik i pronađite red u njoj:

I dovodimo to u ovaj oblik:

Zatim ponovo pokrećemo server:

sudo servis srv1cv83 start

U konfiguratoru na klijentskoj mašini idite na “Postavke” -> “Pokreni 1C:Enterprise” -> “Napredno” i omogućite dvije stavke:

  • "Postavi način za omogućavanje otklanjanja grešaka"
  • "Započni otklanjanje grešaka pri pokretanju"

Možete pročitati o tome kako instalirati 1C server na Ubuntu 16.04/18.04.

To je sve, nadam se da vam je ovaj članak bio koristan. Dozvolite mi da vas podsjetim i na druge članke iz serije o otklanjanju grešaka u 1C; veze do njih možete pronaći na početku ovog članka.

Kako započeti otklanjanje grešaka na 1C serveru...

Prema zadanim postavkama, kada se koristi 1C:Enterprise klijent-server arhitektura, način otklanjanja grešaka 1C koda radi samo na strani klijenta. Serverske procedure i funkcije nisu vidljive klijentskoj mašini.

Da biste omogućili korištenje otklanjanja grešaka na 1C serveru, morate izvršiti sljedeće korake:

1. Pronađite i zaustavite uslugu “1C:Enterprise Server Agent 8.3” u upravitelju usluga (za verziju 8.3).

2. Otvorite uređivač sistemskog registra. Možete koristiti komandnu liniju ili alatku menija Start - Pokreni... i komandu regedit.

3. Pronađite filijalu u registru:

  • Za verziju 1C 8.1
  • Za verziju 1C 8.2
  • Za verziju 1C 8.3

4. Promijenite svojstvo ImagePath, dodajte direktivu “-debug” na kraj reda. Dobit ćete sljedeću liniju svojstava: "C:\Program Files (x86)\1cv8\8.3.6.2152\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C: \Programske datoteke (x86)\1cv8\srvinfo" –debug

Nakon toga, šifra 1C servera može se sigurno provjeriti pomoću debuggera i točke prekida se mogu postaviti gdje god je potrebno.

18.10.2016

Otklanjanje grešaka na 1C serveru (8.2, 8.3...)

Ako 1C baza podataka radi u verziji klijent-server, način otklanjanja grešaka koda na strani servera je onemogućen. Stoga, neće biti moguće vidjeti korak po korak šta se dešava prilikom izvršavanja funkcije ili procedure. Da biste omogućili otklanjanje grešaka na strani servera, morate slijediti nekoliko jednostavnih koraka.

Omogućite otklanjanje grešaka na serveru 1C:Enterprise 8.2, 8.3

Prva stvar koju trebate učiniti je zaustaviti uslugu servera 1C:Enterprise. Idite na "Start - Run" (ili prečicu na tastaturi "Windows + R"), napišite "services.msc" (naravno, morate otvoriti upravljanje Windows uslugama od administratora)

Nakon zaustavljanja, otvorite Windows uređivač registra ("Start - Run" (ili prečica na tastaturi "Windows + R") i napišite "regedit") i pronađite granu sa imenom "" ili "" ovisno o verziji platforme


Zanima nas ključ registratora pod nazivom "ImagePath". Dodajte "-debug" na kraj vrijednosti ključa. To znači da je aktiviran način otklanjanja grešaka na strani 1C servera.
Bio: "C:\Program Files\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
postao: "C:\Program Files\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -opseg 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug


Sačuvajte i pokrenite 1C uslugu. Sve je spremno! Srećno otklanjanje grešaka!