{"id":32465,"date":"2019-10-31T21:47:12","date_gmt":"2019-10-31T18:47:12","guid":{"rendered":"https:\/\/prohoster.info\/blog\/pro-veb-klient-1s\/"},"modified":"2026-05-20T19:17:21","modified_gmt":"2026-05-20T17:17:21","slug":"pro-veb-klient-1s__trashed","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pro-veb-klient-1s__trashed","title":{"rendered":"P\u00ebr klientin web 1C","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nj\u00eb nga karakteristikat e k\u00ebndshme t\u00eb teknologjis\u00eb 1C: Nd\u00ebrmarrja \u00ebsht\u00eb se zgjidhja aplikative, e zhvilluar mbi teknologjin\u00eb e formave t\u00eb kontrolluara, mund t\u00eb ekzekutohet si n\u00eb klientin e holl\u00eb (ekzekutiv) n\u00eb Windows, Linux, MacOS X, ashtu edhe si klient web n\u00eb 5 shfletues \u2013 Chrome, Internet Explorer, Firefox, Safari, Edge, dhe gjith\u00e7ka \u2013 pa ndryshuar kodin burimor t\u00eb aplikacionit. P\u00ebr m\u00eb tep\u00ebr, aplikacioni duket dhe funksionon praktikisht identik si n\u00eb klientin e holl\u00eb, ashtu edhe n\u00eb shfletues.<br \/>\nGjeni 10 ndryshime (n\u00eb vijim 2 imazhe):<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDritarja e klientit t\u00eb holl\u00eb n\u00eb Linux:<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebr klientin web 1C\" src=\"\/wp-content\/uploads\/2019\/04\/6a836d01f80f447302e04d1827d5eebb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nE nj\u00ebjta dritare n\u00eb klientin web (n\u00eb shfletuesin Chrome):<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebr klientin web 1C\" src=\"\/wp-content\/uploads\/2019\/04\/1cab8bdf0d9d1c9d6601219c3ae6018c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPse e kemi krijuar klientin web? Duke folur disi me patos, nj\u00eb detyr\u00eb e till\u00eb na \u00ebsht\u00eb caktuar nga koha. Prej koh\u00ebsh, puna n\u00eb internet \u00ebsht\u00eb b\u00ebr\u00eb nj\u00eb kusht i nevojsh\u00ebm p\u00ebr aplikacionet biznesore. Fillimisht, ne shtuam mund\u00ebsin\u00eb e pun\u00ebs p\u00ebrmes internetit p\u00ebr klientin ton\u00eb t\u00eb holl\u00eb (disa nga konkurent\u00ebt tan\u00eb, p\u00ebr fat t\u00eb keq, ndal\u00ebn k\u00ebtu; t\u00eb tjer\u00eb, p\u00ebrkundrazi, e braktis\u00ebn klientin e holl\u00eb dhe u p\u00ebrqendruan n\u00eb realizimin e klientit web). Ne vendos\u00ebm t'u japim p\u00ebrdoruesve tan\u00eb mund\u00ebsin\u00eb t\u00eb zgjedhin at\u00eb variant kliente q\u00eb u p\u00ebrshtatet m\u00eb shum\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebr klientin web 1C\" src=\"\/wp-content\/uploads\/2019\/04\/345d070d695cfc4854c485148d22d24c.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nShtimi i mund\u00ebsis\u00eb p\u00ebr t\u00eb punuar p\u00ebrmes Internetit p\u00ebr klientin e holl\u00eb ishte nj\u00eb projekt i madh me nj\u00eb ndryshim t\u00eb plot\u00eb t\u00eb arkitektur\u00ebs s\u00eb nd\u00ebrveprimit klient-server. Nd\u00ebrsa krijimi i klientit t\u00eb web-it ishte nj\u00eb projekt krejt\u00ebsisht i ri, duke filluar nga zero.<\/p>\n<h3>Vendosja e detyr\u00ebs<\/h3>\n<p>\nK\u00ebshtu, k\u00ebrkesat p\u00ebr projektin: klienti web duhet t\u00eb b\u00ebj\u00eb t\u00eb nj\u00ebjt\u00ebn gj\u00eb si klienti i holl\u00eb, pra:<\/p>\n<ol>\n<li>T\u00eb shfaq\u00eb nd\u00ebrfaqen e p\u00ebrdoruesit<\/li>\n<li>T\u00eb ekzekutoj\u00eb kodin e klientit t\u00eb shkruar n\u00eb gjuh\u00ebn 1C<\/li>\n<\/ol>\n<p>\nNd\u00ebrfaqja e p\u00ebrdoruesit n\u00eb 1C p\u00ebrshkruhet n\u00eb redaktorin vizual, por n\u00eb m\u00ebnyr\u00eb deklarative, pa vendosjen e elementeve pixel p\u00ebr pixel; p\u00ebrdoren rreth tridhjet\u00eb lloje elementesh nd\u00ebrfaqe - butona, fusha inputi (tekst, numra, dat\u00eb\/koh\u00eb), lista, tabela, grafik\u00eb etj. <\/p>\n<p>Kodi i klientit n\u00eb gjuh\u00ebn 1C mund t\u00eb p\u00ebrmbaj\u00eb thirrje server\u00ebsh, pun\u00eb me burime lokale (skedare etj.), printim dhe shum\u00eb t\u00eb tjera.<\/p>\n<p>Si klienti i holl\u00eb (kur punon p\u00ebrmes web-it), ashtu edhe klienti web p\u00ebrdorin t\u00eb nj\u00ebjtin grup sh\u00ebrbimesh web p\u00ebr t\u00eb komunikuar me serverin e aplikacioneve 1C. Implementimi n\u00eb klient\u00eb, natyrisht, \u00ebsht\u00eb ndryshe - klienti i holl\u00eb \u00ebsht\u00eb shkruar n\u00eb C++, nd\u00ebrsa klienti web \u00ebsht\u00eb n\u00eb JavaScript.<\/p>\n<h3>Pak histori<\/h3>\n<p>\nProjekti p\u00ebr krijimin e klientit web filloi n\u00eb vitin 2006, me nj\u00eb ekip mesatarisht prej 5 personash. N\u00eb etapa t\u00eb ve\u00e7anta t\u00eb projektit, ishin angazhuar zhvillues p\u00ebr t\u00eb realizuar funksionalitete specifike (dokumenti tabelar, grafik\u00ebt etj.); zakonisht, k\u00ebta ishin t\u00eb nj\u00ebjt\u00ebt zhvillues q\u00eb kishin realizuar k\u00ebt\u00eb funksionalitet n\u00eb klientin e holl\u00eb. Pra, zhvilluesit rikodifikonin komponent\u00ebt n\u00eb JavaScript, t\u00eb cil\u00ebt m\u00eb par\u00eb i kishin krijuar n\u00eb C++.<\/p>\n<p>Q\u00eb nga fillimi ne e hodh\u00ebm posht\u00eb iden\u00eb e ndonj\u00eb konvertimi automatike (edhe pjesor) t\u00eb kodit C++ t\u00eb klientit t\u00eb holl\u00eb n\u00eb JavaScript p\u00ebr klientin web p\u00ebr shkak t\u00eb ndryshimeve t\u00eb forta konceptuale midis k\u00ebtyre dy gjuh\u00ebve; klienti web \u00ebsht\u00eb shkruar n\u00eb JavaScript nga fillimi.<\/p>\n<p>N\u00eb iteraimet fillestare t\u00eb projektit, klienti web e konvertonte kodin klientit n\u00eb gjuh\u00ebn e integruar 1C direkt n\u00eb JavaScript. Klienti i holl\u00eb vepron ndryshe \u2013 kodi n\u00eb gjuh\u00ebn e integruar 1C kompilohen n\u00eb kod bajt, dhe pastaj ky kod bajt interpretohet n\u00eb klient. M\u00eb von\u00eb, gjithashtu e filloi dhe klienti web \u2013 s\u00eb pari, kjo ofroi p\u00ebrfitim n\u00eb performanc\u00eb, s\u00eb dyti \u2013 leht\u00ebsoi unifikimin e arkitektur\u00ebs s\u00eb klient\u00ebve t\u00eb holl\u00eb dhe web.<\/p>\n<p>Versioni e par\u00eb e platform\u00ebs 1C: Nd\u00ebrmarrja me mb\u00ebshtetje p\u00ebr klientin web doli n\u00eb vitin 2009. Klienti web n\u00eb at\u00eb koh\u00eb mb\u00ebshteste 2 shfletues \u2013 Internet Explorer dhe Firefox. N\u00eb planet fillestare ishte parashikuar mb\u00ebshtetje p\u00ebr Opera, por p\u00ebr shkak t\u00eb problemeve t\u00eb pakap\u00ebrcyeshme me trajtuesit e mbylljes s\u00eb aplikacionit n\u00eb Opera (nuk ishte e mundur t\u00eb ndiqeshin me 100% siguri se aplikacioni po mbyllej, dhe n\u00eb at\u00eb moment t\u00eb kryhej procedura e shk\u00ebputjes nga serveri i aplikacioneve 1C) k\u00ebto plane duhej t\u00eb braktisnin.<\/p>\n<h3>Struktura e projektit<\/h3>\n<p>\nN\u00eb total, platforma 1C: Nd\u00ebrmarrja ka 4 projekte, t\u00eb shkruara n\u00eb JavaScript:<\/p>\n<ol>\n<li>WebTools \u2013 biblioteka t\u00eb p\u00ebrgjithshme, t\u00eb p\u00ebrdorura nga projektet e tjera (k\u00ebtu p\u00ebrfshijm\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Google_Closure_Tools#Closure_Library\">Google Closure Library<\/a><\/noindex>).<\/li>\n<li>Element kontrolli <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Term_000000785.htm\">Dokumenti i formatizuar<\/a><\/noindex> (implementuar n\u00eb JavaScript si n\u00eb klientin e holl\u00eb ashtu edhe n\u00eb klientin web)<\/li>\n<li>Element kontrolli <noindex><a rel=\"nofollow\" href=\"https:\/\/wonderland.v8.1c.ru\/blog\/planirovshchik\/\">Planifikuesi<\/a><\/noindex> (implementuar n\u00eb JavaScript si n\u00eb klientin e holl\u00eb ashtu edhe n\u00eb klientin web)<\/li>\n<li>Klienti web<\/li>\n<\/ol>\n<p>\nStruktura e \u00e7do projekti i ngjan struktur\u00ebs s\u00eb projekteve Java (ose projekteve .NET \u2013 p\u00ebr k\u00eb t\u00eb duket m\u00eb af\u00ebr); kemi hap\u00ebsira em\u00ebrore, dhe \u00e7do hap\u00ebsir\u00eb em\u00ebrore ndodhet n\u00eb nj\u00eb dosje t\u00eb ve\u00e7ant\u00eb. Brenda dosjes ndodhen skedar\u00eb dhe klasa t\u00eb hap\u00ebsir\u00ebs em\u00ebrore. N\u00eb projektin e klientit web ka rreth 1000 skedar\u00eb.<\/p>\n<p>Struktura e klientit web ndahen n\u00eb m\u00ebnyr\u00eb t\u00eb madhe n\u00eb sistemet e m\u00ebposhtme:<\/p>\n<ul>\n<li>Nd\u00ebrfaqja e menaxhuar e aplikacionit t\u00eb klientit\n<ul>\n<li>Nd\u00ebrfaqja e p\u00ebrgjithshme e aplikacionit (menut\u00eb sistemike, panellet)<\/li>\n<li>Nd\u00ebrfaqja e formave t\u00eb menaxhuara, e cila p\u00ebrfshin rreth 30 elemente kontrolli (butona, lloje t\u00eb ndryshme fushe hyr\u00ebse \u2013 tekst, numra, dat\u00eb\/koha etj., tabela, lista, grafik\u00eb etj.)<\/li>\n<\/ul>\n<p>\n<\/li>\n<li>Modeli i objektit t\u00eb disponuesh\u00ebm p\u00ebr zhvilluesit n\u00eb klient (m\u00eb shum\u00eb se 400 lloje: modeli i objektit t\u00eb nd\u00ebrfaqes s\u00eb menaxhuar, cil\u00ebsimet e kompozimit t\u00eb t\u00eb dh\u00ebnave, stilizimi i kushteve etj.)<\/li>\n<li>Interpretuesi i gjuh\u00ebs s\u00eb integruar 1C<\/li>\n<li>Zgjerimet e shfletuesve (p\u00ebrdoren p\u00ebr funksionalitet q\u00eb nuk mb\u00ebshtetet n\u00eb JavaScript)\n<ul>\n<li>Puna me kriptografin\u00eb<\/li>\n<li>Puna me skedar\u00ebt<\/li>\n<li>Teknologjia e komponenteve t\u00eb jashtme, e cila lejon p\u00ebrdorimin e tyre si n\u00eb klientin e holl\u00eb, ashtu edhe n\u00eb at\u00eb web<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<h3>Karakteristikat e zhvillimit<\/h3>\n<p>\nRealizimi i gjith\u00e7kaje t\u00eb p\u00ebrshkruar m\u00eb sip\u00ebr n\u00eb JavaScript nuk \u00ebsht\u00eb nj\u00eb detyr\u00eb e leht\u00eb. Mund\u00ebsisht, klienti web 1C \u2013 \u00ebsht\u00eb nj\u00eb nga aplikacionet m\u00eb t\u00eb m\u00ebdha an\u00ebs klientit t\u00eb shkruara n\u00eb JavaScript \u2013 rreth 450,000 rreshta. Ne aktivisht p\u00ebrdorim n\u00eb kodin e klientit web nj\u00eb qasje objektive, duke e leht\u00ebsuar pun\u00ebn me nj\u00eb projekt kaq t\u00eb madh.<\/p>\n<p>P\u00ebr t\u00eb minimizuar madh\u00ebsin\u00eb e kodit t\u00eb klientit, n\u00eb fillim p\u00ebrdor\u00ebm nj\u00eb obfuskator t\u00eb vetin, dhe q\u00eb nga versioni i platform\u00ebs 8.3.6 (tetor 2014) filluam t\u00eb p\u00ebrdorim <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Google_Closure_Tools#Closure_Compiler\">Google Closure Compiler<\/a><\/noindex>. Efekti i p\u00ebrdorimit n\u00eb numra \u2013 madh\u00ebsia e korniz\u00ebs s\u00eb web-klientit pas obfuskimit:<\/p>\n<ul>\n<li>Obfuskatori yn\u00eb \u2013 1556 kB<\/li>\n<li>Google Closure Compiler \u2013 1073 kB<\/li>\n<\/ul>\n<p>\nP\u00ebrdorimi i Google Closure Compiler na ndihmoi t\u00eb rrisim performanc\u00ebn e web-klientit me 30% krahasuar me obfuskatorin ton\u00eb. P\u00ebr m\u00eb tep\u00ebr, konsumimi i memories nga aplikacioni u ul me 15-25% (n\u00eb var\u00ebsi t\u00eb shfletuesit).<\/p>\n<p>Google Closure Compiler funksionon shum\u00eb mir\u00eb me kodin orientuar n\u00eb objekte, prandaj efikasiteti i tij p\u00ebr web-klientin \u00ebsht\u00eb maksimal. Closure Compiler b\u00ebn disa gj\u00ebra t\u00eb mira p\u00ebr ne:<\/p>\n<ul>\n<li>Kontrolli statik i tipeve n\u00eb faz\u00ebn e nd\u00ebrtimit t\u00eb projektit (e siguruar duke mbuluar kodin me annotacione JSDoc). N\u00eb p\u00ebrfundim, rezulton nj\u00eb tipizim statik q\u00eb \u00ebsht\u00eb shum\u00eb af\u00ebr nivelit t\u00eb tipizimit n\u00eb C++. Kjo ndihmon n\u00eb kapjen e nj\u00eb p\u00ebrqindjeje t\u00eb madhe t\u00eb gabimeve n\u00eb faz\u00ebn e kompilimit t\u00eb projektit.<\/li>\n<li>Reducimi i madh\u00ebsis\u00eb s\u00eb kodit p\u00ebrmes obfuskimit<\/li>\n<li>Seri optimizimesh t\u00eb kodit t\u00eb ekzekutimit, si p.sh.:\n<ul>\n<li>z\u00ebvend\u00ebsime inline t\u00eb funksioneve. Thirrja e nj\u00eb funksioni n\u00eb JavaScript \u00ebsht\u00eb nj\u00eb operacion mjaft i kushtuesh\u00ebm, dhe z\u00ebvend\u00ebsimet inline t\u00eb metodave t\u00eb vogla q\u00eb p\u00ebrdoren shpesh e p\u00ebrshpejtojn\u00eb ndjesh\u00ebm pun\u00ebn e kodit.<\/li>\n<li>Llogaritja e konstantave n\u00eb faz\u00ebn e kompilimit. N\u00ebse shprehja varet nga nj\u00eb konstant\u00eb, do t\u00eb vendoset vlera e sakt\u00eb e konstant\u00ebs.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\nSi ambient zhvillimi p\u00ebr klientin web p\u00ebrdorim WebStorm.<\/p>\n<p>P\u00ebr analiz\u00ebn e kodit ne p\u00ebrdorim <noindex><a rel=\"nofollow\" href=\"http:\/\/www.sonarqube.org\/\">SonarQube<\/a><\/noindex>, ku integrojm\u00eb analizator\u00ebt statik\u00eb t\u00eb kodit. Me ndihm\u00ebn e analizator\u00ebve, ne ndjekim degradimin e cil\u00ebsis\u00eb s\u00eb kodit burimor n\u00eb JavaScript dhe p\u00ebrpiqemi ta parandalojm\u00eb at\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebr klientin web 1C\" src=\"\/wp-content\/uploads\/2019\/04\/886fe89a8c12d29d940b6b59316ea627.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Cilat probleme kemi zgjidhur\/zgjidhim<\/h3>\n<p>\nGjat\u00eb zbatimit t\u00eb projektit, u p\u00ebrball\u00ebm me nj\u00eb s\u00ebr\u00eb \u00e7\u00ebshtjesh interesante q\u00eb duhej t\u00eb zgjidheshin.<\/p>\n<h4>Shk\u00ebmbimi i t\u00eb dh\u00ebnave me serverin dhe midis dritareve<\/h4>\n<p>\nEkzistojn\u00eb situata, kur obfuscimi i kodit burimor mund t\u00eb pengoj\u00eb funksionimin e sistemit. Kodi, i jasht\u00ebm n\u00eb lidhje me kodin ekzekutues t\u00eb klientit web, si rezultat i obfuscimit mund t\u00eb ket\u00eb emra funksionesh dhe parametrash q\u00eb ndryshojn\u00eb nga ato q\u00eb kodit yn\u00eb ekzekutues pret. Kodi i jasht\u00ebm p\u00ebr ne p\u00ebrfshin:<\/p>\n<ul>\n<li>Kodi q\u00eb vjen nga serveri n\u00eb form\u00ebn e strukturave t\u00eb dh\u00ebnash<\/li>\n<li>Kodi i dritares tjet\u00ebr t\u00eb aplikacionit<\/li>\n<\/ul>\n<p>\nP\u00ebr t\u00eb shmangur obfuscimin gjat\u00eb nd\u00ebrveprimit me serverin ne p\u00ebrdorim tags @expose:<\/p>\n<pre><code class=\"javascript\">\/**\n * @constructor\n * @extends {Base.SrvObject}\n *\/\nSrv.Core.GenericException = function ()\n{\n    \/**\n     * @type {string}\n     * @expose\n     *\/\n    this.descr;\n\n    \/**\n     * @type {Srv.Core.GenericException}\n     * @expose\n     *\/\n    this.inner;\n\n    \/**\n     * @type {string}\n     * @expose\n     *\/\n    this.clsid;\n\n    \/**\n     * @type {boolean}\n     * @expose\n     *\/\n    this.encoded;\n}<\/code><\/pre>\n<p>\nDhe p\u00ebr t\u00eb shmangur obfuscimin gjat\u00eb nd\u00ebrveprimit me dritare t\u00eb tjera, ne p\u00ebrdorim ato q\u00eb quhen interfaca t\u00eb eksportuara (interfaca ku t\u00eb gjitha metodat jan\u00eb t\u00eb eksportuara).<\/p>\n<pre><code class=\"javascript\">\/**\n * \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0430 DropDownWindow\n *\n * @interface\n * @struct\n *\/\nWebUI.IDropDownWindowExp = function(){}\n\n\/**\n * \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 1 \u0432\u043f\u0435\u0440\u0435\u0434 \u0438\u043b\u0438 \u043d\u0430\u0437\u0430\u0434\n *\n * @param {boolean} isForward\n * @param {boolean} checkOnly\n * @return {boolean}\n * @expose\n *\/\nWebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly){}\n\n\/**\n * \u041f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u043e \u0438\u043b\u0438 \u043a\u043e\u043d\u0435\u0446\n *\n * @param {boolean} isFirst\n * @param {boolean} checkOnly\n * @return {boolean}\n * @expose\n *\/\nWebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly){}\n\n\/**\n * @return {boolean}\n * @expose\n *\/\nWebUI.IDropDownWindowExp.prototype.selectValue = function (){}<\/code><\/pre>\n<h4>Kemi p\u00ebrdorur Virtual DOM para se t\u00eb b\u00ebhej mainstream)<\/h4>\n<p>\nSi t\u00eb gjith\u00eb zhvilluesit q\u00eb merren me UI komplekse t\u00eb Uebit, ne kuptuam shpejt se DOM-i nuk \u00ebsht\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr t\u00eb punuar me nj\u00eb nd\u00ebrfaqe dinamike p\u00ebrdoruesi. Praktikisht menj\u00ebher\u00eb, nj\u00eb analog i Virtual DOM u realizua p\u00ebr optimizimin e pun\u00ebs me UI. Gjat\u00eb procesit t\u00eb p\u00ebrpunimit t\u00eb ngjarjeve, t\u00eb gjitha ndryshimet n\u00eb DOM mbahen n\u00eb kujtes\u00eb dhe, vet\u00ebm p\u00ebrfundimisht, pas p\u00ebrfundimit t\u00eb t\u00eb gjitha operacioneve, ndryshimet e akumuluara aplikohen n\u00eb pem\u00ebn DOM.<\/p>\n<h4>Optimizimi i performanc\u00ebs s\u00eb klientit t\u00eb uebit<\/h4>\n<p>\nP\u00ebr t\u00eb b\u00ebr\u00eb q\u00eb klienti yn\u00eb i uebit t\u00eb funksionoj\u00eb m\u00eb shpejt, ne p\u00ebrpiqemi maksimalisht t\u00eb shfryt\u00ebzojm\u00eb mund\u00ebsit\u00eb e integruara t\u00eb shfletuesit (CSS etj.). K\u00ebshtu, paneli i komandave t\u00eb formularit (i vendosur pothuajse n\u00eb \u00e7do formular t\u00eb aplikacionit) vizatohet ekskluzivisht me mjete t\u00eb shfletuesit, duke p\u00ebrdorur markup dinamik t\u00eb bazuar n\u00eb CSS.<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebr klientin web 1C\" src=\"\/wp-content\/uploads\/2019\/04\/116261ca79218eaa2bee9a4f5104092b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Testimi<\/h4>\n<p>\nP\u00ebr testimin funksional dhe performues, ne p\u00ebrdorim nj\u00eb mjet t\u00eb zhvilluar nga ne (i shkruar n\u00eb Java dhe C++), si dhe nj\u00eb grup testesh t\u00eb bazuara n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Selenium\">Selenium<\/a><\/noindex>.<\/p>\n<p>Mjeti yn\u00eb \u00ebsht\u00eb universal \u2013 ai lejon testimin e pothuajse \u00e7do programi dritare, dhe k\u00ebshtu, \u00ebsht\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr testimin e klient\u00ebve t\u00eb holl\u00eb dhe t\u00eb uebit. Mjeti regjistron veprimet e p\u00ebrdoruesit q\u00eb ka nisur zgjidhjen aplikative '1C' n\u00eb nj\u00eb skenar skenari. Po ashtu, regjistrohen imazhe t\u00eb zon\u00ebs s\u00eb pun\u00ebs n\u00eb ekran\u2014etalonet. Kur kontrollohen versionet e reja t\u00eb klientit t\u00eb uebit, skenar\u00ebt ekzekutohen pa pjes\u00ebmarrjen e p\u00ebrdoruesit. N\u00eb rast se ekrani i kapur nuk p\u00ebrputhet me etalonin n\u00eb ndonj\u00eb hap, testi konsiderohet si i d\u00ebshtuar, pas t\u00eb cilit nj\u00eb specialist i cil\u00ebsis\u00eb kryen nj\u00eb hetim \u2013 n\u00ebse \u00ebsht\u00eb nj\u00eb gabim ose nj\u00eb ndryshim i planifikuar i sjelljes s\u00eb sistemit. N\u00eb rast t\u00eb sjelljes s\u00eb planifikuar, etalonet automatizohen p\u00ebr t'u z\u00ebvend\u00ebsuar me t\u00eb reja.<\/p>\n<p>Instrumenti gjithashtu mat performanc\u00ebn e aplikacioneve me sakt\u00ebsi deri n\u00eb 25 milisekonda. N\u00eb disa raste, ne rrethojm\u00eb pjes\u00eb t\u00eb skenarit (p.sh., variasionin e porosis\u00eb disa her\u00eb) p\u00ebr t\u00eb analizuar degradimin e koh\u00ebs s\u00eb ekzekutimit me kalimin e koh\u00ebs. Rezultatet e t\u00eb gjitha matjeve regjistrohen n\u00eb log p\u00ebr analiz\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"P\u00ebr klientin web 1C\" src=\"\/wp-content\/uploads\/2019\/04\/058bab976becf6fd38b2ec668492043b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b>Instrumenti yn\u00eb i testimit dhe aplikacioni i testuar<\/b><\/p>\n<p>Instrumenti yn\u00eb dhe Selenium p\u00ebrplot\u00ebsojn\u00eb nj\u00ebri-tjetrin; p\u00ebr shembull, n\u00ebse ndonj\u00eb buton n\u00eb nj\u00eb nga ekranet ka ndryshuar vendndodhjen - Selenium nuk mund ta ndjek\u00eb k\u00ebt\u00eb, por instrumenti yn\u00eb e v\u00ebren, pasi b\u00ebjm\u00eb nj\u00eb krahasim pik\u00eb p\u00ebr pik\u00eb t\u00eb screenshot-it me standartin. Gjithashtu, instrumenti \u00ebsht\u00eb n\u00eb gjendje t\u00eb ndjek\u00eb problemet me p\u00ebrpunimin e inputeve nga tastiera ose miu, pasi ato jan\u00eb pik\u00ebrisht ato q\u00eb ai riprodhon.<\/p>\n<p>T\u00eb dy instrumentet (tonin dhe Selenium) ekzekutojn\u00eb skenar\u00eb tipik\u00eb pune nga zgjidhjet tona aplikative. Testet fillojn\u00eb automatikisht pas nd\u00ebrtimit t\u00eb p\u00ebrditsh\u00ebm t\u00eb platform\u00ebs \"1C:Enterprise\". N\u00eb rast t\u00eb ngadalt\u00ebsimit t\u00eb ekzekutimit t\u00eb skenar\u00ebve (krahasuar me nd\u00ebrtimin e m\u00ebparsh\u00ebm), ne kryejm\u00eb nj\u00eb hetim dhe eliminojm\u00eb shkakun e ngadalt\u00ebsimit. Kriteri yn\u00eb \u00ebsht\u00eb i thjesht\u00eb \u2013 nd\u00ebrtimi i ri duhet t\u00eb funksionoj\u00eb jo m\u00eb ngadal\u00eb se ai i m\u00ebparshmi.<\/p>\n<p>P\u00ebr hetimin e incidenteve t\u00eb ngadalt\u00ebsis\u00eb, zhvilluesit p\u00ebrdorin mjete t\u00eb ndryshme; kryesisht p\u00ebrdoret <noindex><a rel=\"nofollow\" href=\"http:\/\/apmblog.dynatrace.com\/2014\/12\/11\/dynatrace-ajax-edition-4-5-last-page-chapter-yet-story-continues\/\">Dynatrace AJAX Edition<\/a><\/noindex> prodhim i kompanis\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Dynatrace\">DynaTrace<\/a><\/noindex>. \u041f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u043b\u043e\u0433\u043e\u0432 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438 \u043d\u0430 \u043d\u043e\u0432\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435, \u0437\u0430\u0442\u0435\u043c \u043b\u043e\u0433\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442\u0441\u044f. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 (\u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445) \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0431\u044b\u0442\u044c \u0440\u0435\u0448\u0430\u044e\u0449\u0438\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u2013 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0442\u0438\u043f\u0430 \u0443\u0431\u043e\u0440\u043a\u0438 \u043c\u0443\u0441\u043e\u0440\u0430, \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u043b\u043e\u0436\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u0438\u0441\u043a\u0430\u0437\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u0443. \u0411\u043e\u043b\u0435\u0435 \u0440\u0435\u043b\u0435\u0432\u0430\u043d\u0442\u043d\u044b\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 JavaScript, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 DOM \u0438 \u0442.\u043f. \u0415\u0441\u043b\u0438 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439\/\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0432 \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u043e\u0441\u044c \u2013 \u044d\u0442\u043e \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0438\u0447\u0438\u043d \u043f\u0430\u0434\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e, \u0447\u0442\u043e Google Closure Compiler \u043f\u043e \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043d\u0435 \u0441\u043c\u043e\u0433 \u0441\u0434\u0435\u043b\u0430\u0442\u044c inline-\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u0430\u044f \u0438\u043b\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f). \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0441\u0442\u0430\u0440\u0430\u0435\u043c\u0441\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<h3>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432<\/h3>\n<p>\n\u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u043c\u0443 \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u043d\u0443\u0436\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435\u0442 \u0432 JavaScript, \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432:<\/p>\n<ul>\n<li>p\u00ebr pun\u00ebn me skedar\u00ebt<\/li>\n<li>p\u00ebr pun\u00ebn me kriptografin\u00eb<\/li>\n<li>pun\u00eb me <noindex><a rel=\"nofollow\" href=\"http:\/\/v8.1c.ru\/overview\/Term_000000545.htm\">komponent\u00ebt e jasht\u00ebm<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nZgjerimet tona p\u00ebrbuhen nga dy pjes\u00eb. Pjesa e par\u00eb \u00ebsht\u00eb ajo q\u00eb quhet zgjerimi i shfletuesit (zakonisht, zgjerime t\u00eb shkruara n\u00eb JavaScript p\u00ebr Chrome dhe Firefox), t\u00eb cilat nd\u00ebrveprojn\u00eb me pjes\u00ebn e dyt\u00eb \u2014 zgjerimin binar, i cili realizon funksionalitetin ton\u00eb t\u00eb nevojsh\u00ebm. Duhet t\u00eb p\u00ebrmendet se ne shkruajm\u00eb 3 versione t\u00eb zgjerimeve binare \u2013 p\u00ebr Windows, Linux dhe MacOS. Zgjerimi binar shp\u00ebrndahet si pjes\u00eb e platform\u00ebs 1C:Enterprise dhe ndodhet n\u00eb serverin e aplikacioneve 1C. N\u00eb Thirrjen e par\u00eb nga klienti i uebit, ai shkarkohet n\u00eb kompjuterin e klientit dhe instalohet n\u00eb shfletues.<\/p>\n<p>Kur punojm\u00eb n\u00eb Safari, zgjerimet tona p\u00ebrdorin NPAPI, n\u00eb Internet Explorer p\u00ebrdoret teknologjia ActiveX. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Microsoft_Edge\">Microsoft Edge<\/a><\/noindex> end\u00e9 nuk mb\u00ebshtet zgjerimet, prandaj klienti i uebit n\u00eb t\u00eb funksionon me kufizime.<\/p>\n<h3>Zhvillimi i m\u00ebtejsh\u00ebm<\/h3>\n<p>\nNj\u00eb nga grupet e detyrave p\u00ebr ekipin e zhvillimit t\u00eb klientit t\u00eb uebit \u00ebsht\u00eb zhvillimi i m\u00ebtejsh\u00ebm i funksionalitetit. Funksionaliteti i klientit t\u00eb uebit duhet t\u00eb jet\u00eb identik me funksionalitetin e klientit t\u00eb holl\u00eb, t\u00eb gjitha funksionalitetet e reja realizohen nj\u00ebherazi n\u00eb t\u00eb dy klient\u00ebt, si n\u00eb t\u00eb hollin ashtu edhe n\u00eb at\u00eb t\u00eb uebit.<\/p>\n<p>Detyra t\u00eb tjera jan\u00eb zhvillimi i arkitektur\u00ebs, refaktorizimi, rritja e performanc\u00ebs dhe besueshm\u00ebris\u00eb. P\u00ebr shembull, nj\u00eb nga drejtimet \u00ebsht\u00eb l\u00ebvizja drejt nj\u00eb modeli asinkron t\u00eb pun\u00ebs. Nj\u00eb pjes\u00eb e funksionalitetit t\u00eb klientit web aktualisht \u00ebsht\u00eb nd\u00ebrtuar mbi nj\u00eb model sinkron t\u00eb bashk\u00ebpunimit me serverin. Modeli asinkron tani po b\u00ebhet m\u00eb aktual n\u00eb shfletues (dhe jo vet\u00ebm n\u00eb shfletues) dhe kjo na detyron t\u00eb modifikojm\u00eb klientin web duke z\u00ebvend\u00ebsuar thirrjet sinkrone me ato asinkrone (dhe duke b\u00ebr\u00eb refaktorizimin p\u00ebrkat\u00ebs t\u00eb kodit). Kalimi gradual n\u00eb modelin asinkron shpjegohet me nevoj\u00ebn p\u00ebr t\u00eb mb\u00ebshtetur zgjidhjet e l\u00ebshuara dhe adaptimin e tyre gradual.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/1c\/blog\/315414\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0435 \u043f\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0444\u043e\u0440\u043c, \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432 \u0442\u043e\u043d\u043a\u043e\u043c (\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c) \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u043e\u0434 Windows, Linux, MacOS X, \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0434 5 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u2013 Chrome, Internet Explorer, Firefox, Safari, Edge, \u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u2013 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u2013 \u0432\u043d\u0435\u0448\u043d\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24269,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32465","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0435 \u043f\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0444\u043e\u0440\u043c, \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432 \u0442\u043e\u043d\u043a\u043e\u043c (\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c) \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u043e\u0434 Windows, Linux, MacOS X, \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0434 5 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u2013 Chrome, Internet Explorer, Firefox, Safari, Edge, \u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u2013 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u2013 \u0432\u043d\u0435\u0448\u043d\u0435\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pro-veb-klient-1s__trashed\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u043e \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 1\u0421 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0435 \u043f\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0444\u043e\u0440\u043c, \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432 \u0442\u043e\u043d\u043a\u043e\u043c (\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c) \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u043e\u0434 Windows, Linux, MacOS X, \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0434 5 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u2013 Chrome, Internet Explorer, Firefox, Safari, Edge, \u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u2013 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u2013 \u0432\u043d\u0435\u0448\u043d\u0435\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pro-veb-klient-1s__trashed\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:47:12+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-05-20T17:17:21+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47P\u00ebr klientin web 1C | ProHoster","description":"Nj\u00eb nga karakteristikat e k\u00ebndshme t\u00eb teknologjis\u00eb 1C: Enterprise \u00ebsht\u00eb se zgjidhja aplikative, e zhvilluar sipas teknologjis\u00eb s\u00eb formave t\u00eb menaxhuara, mund t\u00eb ekzekutohet si n\u00eb klientin e holl\u00eb (ekzekutues) n\u00ebn Windows, Linux, MacOS X, ashtu edhe si nj\u00eb klient web n\u00eb 5 shfletues \u2013 Chrome, Internet Explorer, Firefox, Safari, Edge, dhe t\u00eb gjitha k\u00ebto - pa ndryshuar kodin burimor t\u00eb aplikacionit. P\u00ebr m\u00eb tep\u00ebr \u2013 nga jasht\u00eb","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pro-veb-klient-1s__trashed","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u043e \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 1\u0421 | ProHoster","og:description":"\u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043f\u0440\u0438\u044f\u0442\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 1\u0421:\u041f\u0440\u0435\u0434\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e, \u0447\u0442\u043e \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0435 \u043f\u043e \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0444\u043e\u0440\u043c, \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0432 \u0442\u043e\u043d\u043a\u043e\u043c (\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c) \u043a\u043b\u0438\u0435\u043d\u0442\u0435 \u043f\u043e\u0434 Windows, Linux, MacOS X, \u0442\u0430\u043a \u0438 \u043a\u0430\u043a \u0432\u0435\u0431-\u043a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u0434 5 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u2013 Chrome, Internet Explorer, Firefox, Safari, Edge, \u0438 \u0432\u0441\u0435 \u044d\u0442\u043e \u2013 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e \u2013 \u0432\u043d\u0435\u0448\u043d\u0435","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pro-veb-klient-1s__trashed","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:47:12+00:00","article:modified_time":"2026-05-20T17:17:21+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32465","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 11:00:20","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:58:23","updated":"2026-01-21 11:00:20","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/32465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=32465"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/32465\/revisions"}],"predecessor-version":[{"id":173305,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/32465\/revisions\/173305"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/24269"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=32465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=32465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=32465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}