În mod clar despre incomprehensibilul

În acest articol, arătăm cum interacționează părțile client și server ale platformei și ce caracteristici există în utilizarea directivelor de compilare.

Acest lucru va fi util pentru dezvoltatorii novici și pentru cei care au lacune în domeniul interacțiunii client-server - totul este explicat "pe degete" :)







Arhitectura client-server este încorporată în platformă încă de la început - de la "1C: Enterprise 8.0".

Cu toate acestea, în dezvoltarea de 8.0 și 8.1 privind separarea codului în părțile clientului și ale serverului, nu le-a mai putut face griji. deoarece pe client (pe un client gros), aceeași funcționalitate ca și pe server a fost disponibilă.

Totul sa schimbat odată cu lansarea platformei 1C: Enterprise 8.2, când a apărut un client subțire. Acum, unul funcțional este disponibil pe client, altul este disponibil pe server. Clientul și serverul comunică între ele folosind un apel server.

Desigur, acest lucru a complicat procesul de dezvoltare, dar pe de altă parte - puteți crea soluții mai rapide (rapide), deoarece toate sarcinile complexe sunt efectuate pe server.

Unele teorii de bază

Înainte de a merge la partea de conținut, să convinem asupra unor limitări:

  • Presupunem că știți despre existența unor directive patru compilare disponibile sub formă de module: "# 038; NaKliente", "# 038; NaServere", "# 038; NaServereBezKonteksta" și "# 038; NaKlienteNaServereBezKonteksta".
  • Toate exemplele se vor baza pe lucrarea "1C: Enterprise 8" în modul client-server. Versiunea de fișier este în esență o emulare a modului client-server, cu mici deviații (acest lucru nu este critic pentru acest articol)
  • În cadrul acestui material, este luată în considerare numai interacțiunea dintre client și serverul 1C. Lucrul cu baza de date, conversia datelor și alte nuanțe ale sistemului sunt subiectele altor articole.

Apoi, reîmprospătați în memorie un pic de teorie.

Directive, în numele cărora este menționat "clientul", stabilește o restricție privind accesarea bazei de date.

Procedurile sau funcțiile scrise în directiva "Fără context" nu au acces la contextul (datele) formularului. Pe baza acestor informații, este ușor să ne imaginăm limitările directivelor privind accesul la date sub forma tabelului următor:

Înainte de întrebarea „Ce este o directivă cu cel mai lung nume în cazul în care restricționează utilizarea contextului formelor, precum și pentru a accesa baza de date“, permiteți-mi să vă amintesc de fiecare procedură și funcția sprijină procesarea informațiilor transmise acestuia ca parametri.

Din aceasta tragem concluzia: metodele descrise în directiva "# 038; CliCenterServerServiceBeNexttext", singura sursă de date sunt acești parametri cei mai diferiți.

Nu uitați de disponibilitatea apelării unor proceduri și funcții de la alții. În acest scop, este demn de amintit că puteți apela numai acele proceduri și funcții, care sunt sub același nume (cu metoda de bază), în conformitate cu directiva sau directiva situată mai jos (decât cea a metodei de bază) conform listei:

  • # OnClient
  • OnServer
  • # 038; pe server fără context
  • # 038; în partea client a serverului fără Context.

Aceasta este, dintre metodele descrise în cadrul directivei „# 038; NaKliente“, puteți apela procedurile și funcțiile descrise în conformitate cu orice directivă. Dar "din" directive "# 038; NaServereBezKonteksta" poate apela numai ceea ce este descris în temeiul directivei "# 038; NaServereBezKonteksta" sau "# 038; NaKlienteNaServereBezKonteksta".

Acum despre apelul la server

Un apel server este transferul unor informații din partea clientului din "1C: Enterprise 8" către partea serverului pentru a reveni la un anumit set de date.

„Oh! Ce înseamnă Biblioteca? "- întrebați.

Este foarte simplu:

Rețineți că accesul la baza de date este numai din partea serverului, iar conexiunea dintre client și server are o lățime de bandă limitată. Acest lucru nu este surprinzător - la urma urmei, conexiunea dintre client și partea de server poate fi instalată chiar și pe un canal de comunicații instabil de joasă viteză (de exemplu, prin intermediul Internetului mobil).

În plus, transferul de date între client și server este posibil numai printr-un apel server.

Dar, în scopul de a merge la subiectul principal al acestui articol, trebuie să înțelegem mai întâi - în cazul în care codul va fi executat, în scris în conformitate cu directivele specifice. Aceasta este, în unele părți ale aplicării "1C: Enterprise 8" va fi funcțiile și procedurile disponibile descrise în conformitate cu directivele "# 038; NaKliente", "# 038; NaServere", "# 038; NaServereBezKonteksta" și "# 038; NaKlienteNaServereBezKonteksta":







Vedem că pe partea clientului vom avea proceduri și funcții scrise sub două directive de câte patru, iar pe partea de server - sub trei din cele patru.

Problema apare imediat: „De ce această diversitate și modul în care este util?“, „Cum metoda descrisă în temeiul directivei“ # 038; NaKlienteNaServereBezKonteksta „poate fi realizată pe client și server?“.

Acum vom încerca să înțelegem caracteristicile sistemului atunci când folosim directive și de ce este necesar să putem folosi corect fiecare din directivele de compilare existente.

Și noii noștri prieteni ne vor ajuta în acest sens, să ne cunoaștem!

Acesta este procesul de partea server a aplicației "1C: Enterprise 8". Există pe serverul 1C. Stie ce sesiuni de clienti sunt in desfasurare, dar nu pot initia interactiunea cu ei pe cont propriu. Funcționează cu partea clientului numai prin apelul server primit de la acesta.

Și acesta este un apel de server. După cum sa spus mai sus, aceasta este generată de procesul părții client și este chemată să o "servească". Transmite solicitări din partea clientului către partea serverului și gestionează, de asemenea, datele de la client către server și înapoi.

Deci, să ne uităm la unele caracteristici ale lucrării codului de program din "1C: Enterprise 8", redactat în diferite directive.

Pasul 1: Deschideți un formular cu date.

Când utilizatorul apasă butonul de deschidere a formularului din interfață, comanda este transferată pe server. Prin parametrii trecuți, se obțin datele necesare pentru construirea datelor din baza de date și se generează contextul de formă, care este apoi trimis către partea clientului. Utilizatorul afișează formularul solicitat pe ecran.

Pasul 2. Obținerea unei forme de date suplimentare din baza de date deschisă de Utilizator.

Primirea acestor date poate fi descrisă în două linii directoare - "# 038; pe server" și "# 038; pe partea de server a link-ului". Să luăm în considerare ambele cazuri.

Fenomenul 1. Directiva "# 038; pe server"

Când apelați o procedură sau o funcție sub direcția "# 038; Pe server" din formularul de pe partea clientului, întregul context al formularului este "înfășurat" și trimis pe partea serverului.

După ce metoda este executată pe server, întregul "pachet" este transportat înapoi. Astfel, forma cu toate elementele și datele trece prin cel mai îngust punct al sistemului de două ori.

Fenomenul 2. Directiva "# 038; la nord de context"

Atunci când apelați o procedură sau o funcție în temeiul directivei „# 038; NaServereBezKonteksta“ in forma de client este transmis la partea de server numai datele care au fost enumerate ca opțiuni. În schimb, numai informațiile necesare sunt transmise într-o formă deja pregătită.

Astfel, apelul de server nu are sarcină inutilă, iar transferul de date între client și server va necesita mai puține resurse.

Din exemple se poate observa că directiva de compilare "# 038; pe server" nu este întotdeauna justificată din punctul de vedere al utilizării contextului (datelor) formularului de pe server.

Dacă este posibilă rezolvarea problemei prin trimiterea numai unui anumit set de date către server, atunci această posibilitate ar trebui utilizată și descrisă de metodă conform directivei "038; ServerNetContext". Aceasta va reduce încărcarea pe server și nu va ocupa serverul prin procesarea și stocarea în acest moment a informațiilor inutile.

Apropo, de aceea, înainte de versiunea platformei 8.3.7.1759 pe forme complexe pentru controlul vizibilității elementelor, sa recomandat utilizarea panourilor cu pagini, mai degrabă decât a proprietății Vizibilitate. Numai începând cu această versiune, testarea schimbării în vizibilitatea elementelor a început să fie efectuată pe partea clientului.

Până în acest moment, de fiecare dată când a fost modificată Vizibilitatea, a apărut un apel de server, la fel ca atunci când utilizați directiva "# 038; pe server".

Dar folosirea directivei "# 038; OnServiceBeanstext" nu este un panaceu. În plus față de sarcina de pe server de apel, este întotdeauna necesar să se gândească la un alt parametru.

Pasul 3. Prelucrarea datelor din partea tabelară a formularului cu obținerea de informații suplimentare din baza de date.

Fenomenul 1. Procesarea liniară a părții de tabel din partea clientului cu organizarea apelului de server pentru obținerea informațiilor suplimentare din baza de date.

Știm deja - este mai bine să folosiți directiva "# 038; OnServiceBezContext".

O prezentare interesantă, unic +++, dar desigur pentru mine, desigur, nu sa găsit nimic nou.
Cred că 1C este de vină pentru că a făcut o astfel de abordare încât 95% utilizează directiva NaServer. Cel puțin, ar fi necesar să se modifice valorile directivelor, adică Pe server - pentru a rula fără context (și creat în mod implicit, și directiva pe server este deja contextual, atunci este liber / involuntar, dar majoritatea dezvoltatorilor ar trebui să le folosească mai corect.

Toate aceste contexte sunt invenția lui 1C, ca de obicei. Mediile de dezvoltare normală determină ele însele unde să execute codul. Client-server este un nivel scăzut, de ce 1S de la superstructura de peste limbajul superior a ajuns acolo - este neclar.

  • În mod clar despre incomprehensibilul
  • integrare 1C / interogări de depanare / documente / mesager în 1C / indicație de operare ">
    În mod clar despre incomprehensibilul
  • Primul curs al cursului "Programarea volumului în 1C: ERP 2, nave spațiale 2 și UT ​​11" ">
  • Preț preferențial pentru curs "Programarea volumului în 1C: ERP 2, KA 2 și UT ​​11" anulate ">
  • STEM-training pentru copii și reduceri pentru cursuri pe 1C pentru cei care sunt mai mari :) ">
    În mod clar despre incomprehensibilul






    Articole similare

    Trimiteți-le prietenilor: