1c povoliť ladenie na serveri. Ladiace procedúry servera (1Cv82)

Úlohou vývojára 1C nie je len písať kód, ale aj sledovať a opravovať chyby, zostavovať optimálny algoritmus vykonávania príkazov a optimalizovať rýchlosť práce, teda ladenie. Je ťažké to urobiť bez použitia funkcií vstavaného debuggera serverových procedúr.

Spočiatku je režim ladenia na serveroch 1C zakázaný, takže vývojár bude musieť vykonať jednoduché manipulácie s nastaveniami, aby mohol dôkladne skontrolovať kód.

Povolenie režimu ladenia na serveri pre platformu 1C verzie 8.2 a vyššej

Algoritmus na povolenie ladenia je pomerne jednoduchý. Nepredpokladá hlbokú znalosť architektúry operačného systému a administrácie 1C. Stále by ste však mali byť veľmi opatrní, pretože ladenie sa vykonáva priamo na serveri a s právami správcu. Preto, ak nemáte dôkladné znalosti, prísne dodržiavajte algoritmus akcií bez improvizácie:

  • Zastavte službu 1C:Enterprise Server Agent prostredníctvom Server Manager. Ak sa nastavenie uskutoční na pracovnom serveri, mali by ste sa vopred postarať o neprítomnosť používateľov 1C v databáze;
  • Spustite editor systémového registra kliknutím na „Štart“ - „Spustiť“ alebo klávesovou skratkou „Win“ + „R“. V okne, ktoré sa otvorí, zadajte riadok „regedit“;
  • V registri musíte nájsť položku;

  • Medzi parametrami nájdite „ImagePath“ a zmeňte ho pridaním „-debug“ k existujúcej hodnote s medzerou na konci;
  • Prostredníctvom správcu servera spustite službu, ktorá bola zastavená – „1C:Enterprise Server Agent“.

Povolenie režimu ladenia na serveri pre verziu 1C 8.1

Ak potrebujete povoliť režim ladenia na platforme 8.1, algoritmus akcií zostane prakticky nezmenený. Jedinou zmenou je umiestnenie parametra cesty „ImagePath“. Vo verzii 8.1 sa nachádza v sekcii.

Vývojári 1C odporúčajú povoliť režim ladenia výlučne pre testovacie servery, kde by sa mal ladiť kód. Dôvodom tohto odporúčania je vplyv na výkon, ku ktorému dochádza, keď je na serveri povolené ladenie. Ak máte veľa používateľov alebo výkon servera zanecháva veľa požiadaviek, berte túto radu opatrne, aby ladenie nemalo negatívne dôsledky.

Implementované vo verzii 8.3.7.1759.

Výrazne sme prepracovali mechanizmus ladenia. Bolo na to viacero dôvodov. Po prvé, chceli sme vám dať možnosť ladiť každú aplikáciu, ktorá je dnes dostupná. Po druhé, predchádzajúca architektúra debuggera si vyžadovala zmeny, aby držala krok so súčasnými trendmi a prispôsobila sa budúcemu vývoju. Po tretie, bolo potrebné univerzálne ladiace rozhranie, s ktorým by sa mal používať nielen konfigurátor 1C:Enterprise, ale aj .

Hlavné výhody

Aby ste si vedeli predstaviť rozsah zmien, ktoré sme vykonali, stručne uvedieme hlavné výhody nového mechanizmu.

Ladenie HTTP

Predchádzajúci mechanizmus ladenia bol založený na skutočnosti, že debugger implementovaný v konfigurátore 1C:Enterprise priamo interagoval s položkami ladenia (klientske a serverové aplikácie). Táto interakcia bola vykonaná pomocou protokolu TCP/IP.

S vydaním aplikácií 1C:Enterprise na internete a najmä s príchodom mobilných aplikácií sa však tento prístup stal zdrojom obmedzení a nepríjemností. Protokol TCP/IP nie vždy umožňuje debuggeru „dosiahnuť“ ladené položky. Koniec koncov, môžu byť umiestnené mimo lokálnej siete, v ktorej beží debugger.

Preto sme v novom mechanizme zvolili ako transportný protokol „všadeprítomnejší“ protokol HTTP, ktorý mimochodom využívajú aj klientske aplikácie na pripojenie k informačným databázam.

Moderná architektúra ladenia

Vlastnosťou predchádzajúceho ladiaceho mechanizmu bola potreba pripojiť sa k infobase pomocou konfigurátora. Výsledkom bolo, že ladenie vývojárov malo úplný prístup ku všetkým administratívnym funkciám.

Nový mechanizmus ladenia už nevyžaduje pripojenie k ladenej informačnej databáze. Hlavná vec, ktorú teraz debugger potrebuje, je rovnaká konfigurácia, ktorá funguje pre klientov. Na jeho získanie nie je potrebné sa pripájať k ladenej infobázke. Môžete ho načítať napríklad zo súboru.

Ladenie mobilných aplikácií

Vďaka použitiu protokolu HTTP je možné ladiť aplikácie vykonávané mobilnou platformou. Okrem toho môžete ladiť akékoľvek kontexty: klient, server, ako aj úlohy na pozadí.

Teraz, počas ladenia, môžete zmeniť hodnoty akýchkoľvek zapisovateľných premenných. Na rýchle zobrazenie a zmenu lokálnych premenných sme implementovali samostatné okno. A výpočet výrazov zobrazených ladiacim programom sa teraz vykonáva v asynchrónnom režime.

Ladenie vo vývojových nástrojoch

Pri vytváraní nového mechanizmu ladenia sme implementovali nové, univerzálne softvérové ​​rozhranie na interakciu s ním. Toto rozhranie používa konfigurátor 1C:Enterprise a rovnaké rozhranie teraz používa aj nové vývojové prostredie. Všetky možnosti ladenia sú teda teraz dostupné pri práci v .

Architektúra procesu ladenia

Nová architektúra ladenia vyzerá takto:

Ladenie zahŕňa debugger, ladiace položky a nový prvok - ladiaci server.

Neexistuje žiadny priamy prenos informácií medzi debuggerom a položkami ladenia. Všetky interakcie sú organizované cez ladiaci server. Toto je hlavný prvok mechanizmu. Ladiaci server má front správ, cez ktorý si ladiaci program a položky ladenia navzájom odovzdávajú informácie.

Samotný debugger aj položky ladenia komunikujú s ladiacim serverom cez HTTP. Takže teraz nezáleží na tom, kde sa tieto ladiace položky nachádzajú.

Interakciu so serverom ladenia iniciuje ladiaci program a položky ladenia. Na tento účel sa organizujú ďalšie spojenia. Ich hlavným účelom je zistiť, či sa pre nich na ladiacom serveri objavili informácie. A ak sa objaví, získajte tieto informácie.

Interakcia je teda jednostranná. Informácie sa neustále prenášajú z ladiaceho servera do ladiaceho nástroja a do ladiacich objektov.

Identifikácia informačných báz

V predchádzajúcom mechanizme sa na identifikáciu infobáz používal reťazec pripojenia. Toto riešenie v niektorých prípadoch spôsobovalo ťažkosti pri priraďovaní ladiacich položiek a konfigurátora. Pretože po prvé rozlišovalo veľké a malé písmená a po druhé, pri ladení niektorých kontextov platforma automaticky vygenerovala reťazec pripojenia. A nie vždy sa zhodoval s tým, ktorý ste zadali pri pripájaní infobázy v konfigurátore. Nájdenie a náprava takýchto situácií skomplikovala proces ladenia.

V novom mechanizme sme sa zbavili pripájacieho reťazca. Teraz používame identifikátor informačnej databázy. V informačnej databáze súborov sa takýto identifikátor vygeneruje pri prvom vytvorení pripojenia klienta. V informačnej databáze servera sa ako takýto identifikátor používa registračný identifikátor informačnej databázy v klastri.

Príjemným dodatočným bodom je, že sme zatiaľ zachovali starý mechanizmus ladenia v platforme (v budúcnosti môže byť vylúčený). A môžete ho použiť, ak chcete alebo ak je to potrebné. Takže sme upravili starý mechanizmus a teraz používa aj identifikátor infobase a nie pripájací reťazec.

Typické scenáre ladenia

Z pohľadu vývojára aplikácií sa typické scenáre ladenia nezmenili. Jediný významný rozdiel je v tom, že musí byť povolený nový mechanizmus ladenia. Pretože v predvolenom nastavení je vypnutá.

Bez ohľadu na to má zmysel oboznámiť sa s tým, čo sa deje teraz, keď spustíte ladenie. Pretože to môže byť pre vás užitočné v niektorých neštandardných pracovných scenároch.

Možnosť súboru

Pred začatím ladenia vo verzii súboru musíte v nastaveniach konfigurátora uviesť, že chcete použiť nový mechanizmus ladenia - “ Ladenie HTTP».

V tomto prípade vás konfigurátor automaticky vyzve, aby ste použili lokálny ladiaci server. Musíte s tým súhlasiť a reštartovať konfigurátor.

Metóda ladenia, ktorú nastavíte, sa ukladá medzi reláciami konfigurátora, ale je uložená v kontexte informačných báz. Preto pre ďalšiu informačnú základňu ju budete musieť znova povoliť.

Teraz, keď spustíte konfigurátor alebo keď ho reštartujete, platforma automaticky spustí ladiaci server. Toto je samostatná aplikácia dbgs.exe. Môžete to vidieť v správcovi úloh.

Parameter ownerPID určuje identifikátor aplikácie, ktorá vlastní tento ladiaci server. V tomto prípade ide o konfigurátor 1C:Enterprise.

Ak teraz spustíte reláciu ladenia 1C:Enterprise z konfigurátora, automaticky sa pripojí k serveru ladenia a v konfigurátore uvidíte pripojené položky ladenia.

Ak bola relácia 1C:Enterprise spustená bez ladenia, môžete ju ako predtým pripojiť k debuggeru. Až teraz musíte zadať adresu servera na ladenie:

Túto adresu nájdete v nastaveniach položiek ladenia:

S prácou s viacerými súborovými databázami naraz je spojený jeden nezvyčajný bod. Vo verzii súboru každý konfigurátor s povoleným ladením http spúšťa svoju vlastnú kópiu ladiaceho servera na rôznych portoch:

Preto, ak máte otvorených niekoľko konfigurátorov naraz, musíte na pripojenie klientskej aplikácie k debuggeru vybrať ten správny.

Možnosť klient-server

Pred začatím ladenia vo verzii klient-server musíte, ako predtým, spustiť server 1C:Enterprise v režime ladenia, ale uveďte, že na ladenie sa použije nový mechanizmus HTTP. Napríklad takto:

ragent.exe -debug -http

Keď sa server spustí týmto spôsobom, spustí sa aj ladiaci server.

Parameter ownerPID bude označovať identifikátor manažéra klastra 1C:Enterprise.

Teraz v nastaveniach konfigurátora, ako v prípade databázy súborov, musíte uviesť, že chcete použiť nový mechanizmus ladenia - “ Ladenie HTTP».

V tomto prípade vás konfigurátor automaticky vyzve, aby ste použili server na ladenie klastra, a nie lokálny server. Musíte s tým súhlasiť a reštartovať konfigurátor.

Pripojenie ladiacich položiek

Keď spustíte relácie ladenia z konfigurátora, aplikácie automaticky pripájajú položky ladenia (klient aj server) k serveru ladenia.

Zároveň, ako doteraz, máte možnosť nakonfigurovať konfigurátor na automatické pripájanie ladiacich položiek bez ohľadu na to, ako boli spustené. Teraz sú tieto možnosti oveľa bohatšie.

Po prvé, platforma vám teraz ponúka všetky možné položky na ladenie, z ktorých si môžete vybrať.

A po druhé, objavil sa ďalší, jemnejší spôsob nastavenia. Ide o použitie vopred vytvorených výberov.

Takéto výbery môžete použiť pri pripájaní položiek ladenia aj na zobrazenie dostupných položiek ladenia.

Vo výbere môžete okrem samotných položiek ladenia špecifikovať konkrétnych používateľov, ktorých relácie vás zaujímajú, a tiež, ak sa používa oddelenie údajov, uviesť oblasť informačnej databázy, ktorá sa bude ladiť.

Zmena premenných, vlastností objektu a asynchrónne vyhodnocovanie výrazov

Nový mechanizmus ladenia vám umožňuje meniť hodnoty premenných počas ladenia. V predchádzajúcom mechanizme takáto možnosť nebola.

Pre pohodlné prezeranie a zmenu lokálnych premenných, čo sa zdá byť najbežnejšou úlohou, sme implementovali „ Lokálne premenné».

Navonok je to veľmi podobné „Výsledkovej tabuľke“, na ktorú ste zvyknutí. Po prvé, toto okno je už automaticky vyplnené všetkými lokálnymi premennými a po druhé, teraz môžete zmeniť hodnoty premenných.

Hodnoty primitívnych typov môžete zmeniť priamo v bunke " Význam»:

A na zmenu iných hodnôt môžete použiť okno na zadanie výrazu:

Príjemným bonusom je, že kontextový popis je v tomto okne plne funkčný.

Presne rovnakým spôsobom môžete meniť hodnoty akýchkoľvek (nielen lokálnych) premenných a zapisovateľných vlastností. V okne výpočtu výrazu (ktoré sa volá príkazom Shift+F9) môžete zmeniť hodnoty premenných v bunke „Hodnota“ aj pomocou samostatného dialógového okna.

Mimochodom, samotný výpočet výrazu sa teraz vykonáva asynchrónne. To znamená, že konfigurátor nariadi výpočet ladiacej položky. A nejaký čas sa tento výpočet očakáva na serveri. Ak je výpočet dokončený, výsledky sa okamžite odošlú do konfigurátora. Ak sa výpočet vykonáva dlhší čas, potom sa výsledky týchto výpočtov asynchrónne dostávajú do konfigurátora neskôr. Tento prístup vám umožňuje nečakať na zdĺhavé výpočty v konfigurátore a pokračovať v práci.

Tento článok hovorí o tom, ako povoliť ladenie na serveri 1C 8.1, 8.2 a 8.3 v operačných systémoch Windows a Ubuntu.

Okrem toho poznamenávam, že tento článok je súčasťou malej série článkov o ladení v 1C:

  • Ako povoliť ladenie na serveri 1C

Povoliť ladenie na serveri 1C v systéme Windows

Spustite editor databázy Registry spustením príkazu regedit (pomocou Win+R alebo Štart->Spustiť).

Viac o ladení HTTP a ladiacom serveri si môžete prečítať v ďalšom článku série.

Povoliť ladenie na serveri 1C v Ubuntu

Najprv nainštalujeme server:

sudo služba srv1cv83 stop

Potom otvorte súbor /etc/init.d/srv1cv83 ako superuser a nájdite v ňom riadok:

A prinášame to do tejto podoby:

Potom znova spustíme server:

spustenie služby sudo srv1cv83

V konfigurátore na klientskom počítači prejdite na „Nastavenia“ -> „Spustiť 1C:Enterprise“ -> „Rozšírené“ a povoľte dve položky:

  • "Nastaviť režim povolenia ladenia"
  • "Spustiť ladenie pri spustení"

Môžete si prečítať o tom, ako nainštalovať server 1C na Ubuntu 16.04/18.04.

To je všetko, dúfam, že tento článok bol pre vás užitočný. Dovoľte mi tiež pripomenúť ďalšie články zo série o ladení v 1C, odkazy na ne nájdete na začiatku tohto článku.

Ako začať ladiť na serveri 1C...

Pri použití architektúry klient-server 1C:Enterprise štandardne funguje režim ladenia kódu 1C iba na strane klienta. Procedúry a funkcie servera nie sú viditeľné pre klientsky počítač.

Ak chcete povoliť používanie ladenia na serveri 1C, musíte vykonať nasledujúce kroky:

1. Nájdite a zastavte službu „1C:Enterprise Server Agent 8.3“ v správcovi služieb (pre verziu 8.3).

2. Otvorte editor systémového registra. Môžete použiť príkazový riadok alebo ponuku Štart - Spustiť... a príkaz regedit.

3. Nájdite pobočku v registri:

  • Pre verziu 1C 8.1
  • Pre verziu 1C 8.2
  • Pre verziu 1C 8.3

4. Zmeňte vlastnosť ImagePath, pridajte direktívu „-debug“ na koniec riadku. Dostanete nasledujúci riadok vlastností: „C:\Program Files (x86)\1cv8\8.3.6.2152\bin\ragent.exe“ -srvc -agent -regport 1541 -port 1540 -rozsah 1560:1591 -d "C: \Program Files (x86)\1cv8\srvinfo" – ladiť

Potom je možné kód servera 1C bezpečne skontrolovať pomocou debuggeru a kedykoľvek je to potrebné, môžete nastaviť body prerušenia.

18.10.2016

Ladenie na serveri 1C (8.2, 8.3...)

Ak je databáza 1C spustená vo verzii klient-server, režim ladenia kódu na strane servera je zakázaný. Preto nebude možné vidieť krok za krokom, čo sa stane pri vykonávaní funkcie alebo procedúry. Ak chcete povoliť ladenie na strane servera, musíte vykonať niekoľko jednoduchých krokov.

Povoliť ladenie na serveri 1C:Enterprise 8.2, 8.3

Prvá vec, ktorú musíte urobiť, je zastaviť službu servera 1C:Enterprise. Prejdite na "Štart - Spustiť" (alebo klávesovú skratku "Windows + R"), napíšte "services.msc" (samozrejme musíte otvoriť správu služieb Windows od správcu)

Po zastavení otvorte editor registra Windows ("Štart - Spustiť" (alebo klávesovú skratku "Windows + R") a napíšte "regedit") a nájdite vetvu s názvom "" alebo "" v závislosti od verzie platformy


Zaujíma nás kľúč databázy Registry s názvom "ImagePath". Pridajte „-debug“ na koniec hodnoty kľúča. To znamená, že je aktivovaný režim ladenia na strane servera 1C.
bol: "C:\Program Files\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -rozsah 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Sa stal: "C:\Program Files\1cv8\8.3.6.2530\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -rozsah 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug


Uložte a spustite službu 1C. Všetko je pripravené! Šťastné ladenie!