itthon / Böngészők / Új mechanizmus az elemek űrlapba helyezéséhez. Elemek igazítása normál űrlapon Űrlap párbeszédablak szerkesztése

Új mechanizmus az elemek űrlapba helyezéséhez. Elemek igazítása normál űrlapon Űrlap párbeszédablak szerkesztése

A szabályos űrlapokon az elemek helye teljesen manuálisan rajzolódik ki. Ennek a folyamatnak a megkönnyítésére a platform számos mechanizmust kínál:

- elem igazítás- biztosítja az automatikus központosítást, vagy a vezérlők egymás irányvonalainak „megnyomását”, vagy a vezérlők méretének összehangolását:

- háló- az Opciók segítségével konfigurálhatja a rács megjelenítését az elemek pontos kézi igazítására:

A helyes válasz a második. Ez egy panel az elemek méretének összehangolására és egységesítésére.

Az 1C vizsga 10.79. kérdése: Platform Professional.

  1. Semmi sem fog változni
  2. Az "Inscription1" elem vízszintesen eltolódik, és a jobb oldali szegélye igazodik a "Felirat2" elem jobb oldali szegélyéhez.
  3. Az "Inscription2" elem vízszintesen eltolódik, és a jobb oldali szegélye igazodik az "Inscription1" elem jobb oldali szegélyéhez.
  4. Mindkét elem az űrlap jobb oldali éligazítási vonalába kerül

A helyes válasz a második. A címkék jobbra lesznek igazítva.

Az 1C vizsga 10.82. kérdése: Platform Professional. Mi történik, ha a képen jelölt parancssor gombra kattint?

  1. Vízszintesen minden felirat azonos méretű lesz
  2. Semmi sem fog változni
  3. A címkék eltolódnak. Az egyes vezérlőelemek függőleges szimmetriatengelye egybeesik a forma függőleges szimmetriatengelyével, azaz. minden vezérlőt vízszintesen középre állítva
  4. A címkék vízszintesen eltolódnak. A vezérlőelemek nem fognak elmozdulni egymáshoz képest a csoporton belül, pl. úgymond egy elem egészének központosítása
  5. A címkék függőlegesen eltolódnak. A vezérlőelemek nem fognak elmozdulni egymáshoz képest a csoporton belül, pl. úgymond egy elem egészének központosítása

A helyes válasz a negyedik. Az összes kiválasztott vezérlőelem a közös középvonala köré összpontosul.

Az 1C vizsga 10.83. kérdése: Platform Professional. Mi történik, ha a képen jelölt parancssor gombra kattint?

  1. Az összes felirat függőlegesen azonos méretű lesz. Az "Inscription1" vezérlőelemet mintaként veszik.
  2. Semmi sem fog változni
  3. Az összes felirat függőlegesen azonos méretű lesz. Az "Inscription3" vezérlőelemet mintaként veszik.
  4. Minden címke függőlegesen lesz középre igazítva
  5. A feliratok függőleges irányban egyenletesen oszlanak el. A „Felirat1” és „Felirat3” kezelőszervek a helyükön maradnak, a „Felirat2” elem pedig a kívánt irányba mozog. Egy elem mozgatásakor a rendszer nem veszi figyelembe az elrendezési rácshoz való illesztést
  6. A feliratok függőleges irányban egyenletesen oszlanak el. A „Felirat1” és „Felirat3” kezelőszervek a helyükön maradnak, a „Felirat2” elem pedig a kívánt irányba mozog. Amikor egy elemet mozgat, az a jelölőrácshoz fog kapcsolódni, ha a használati mód be van állítva

A helyes válasz az első. Az elemek magassága szabványos lesz

Az 1C vizsga 10.86. kérdése: Platform Professional. Mi történik, ha a képen látható parancssor gombjára kattint?

  1. Minden felirat azonos méretű lesz függőlegesen és vízszintesen. Az "Inscription1" vezérlőelemet mintaként veszik.
  2. Minden felirat azonos méretű lesz függőlegesen és vízszintesen. Az "Inscription3" vezérlőelemet mintaként veszik.
  3. Semmi sem fog változni
  4. A címkék automatikusan igazításra kerülnek
  5. Minden címke átlátszó hátterű lesz.

A helyes válasz a négyes, maga a gomb neve "Automatikus igazítás"

Az 1C vizsga 10.90. kérdése: Platform Professional. Az igazítási mód letiltása igazítási vonalak használatával egy korábban létrehozott formában:

  1. Ez tiltott
  2. Tud. Ehhez az űrlaptulajdonságok palettán le kell tiltani az "Igazítási vonalak használata" tulajdonságot.
  3. Tud. Ehhez a főmenü "Eszközök-Opciók" menüpontját választva az "Űrlap" fülön le kell tiltani az "Igazítási vonalak használata" tulajdonságot.
  4. Tud. Ehhez az űrlap tulajdonságai palettán le kell tiltani az "Igazítási vonalak használata" tulajdonságot, vagy az "Eszközök-Beállítások" főmenüpont kiválasztásával az "Űrlap" fülön az "Igazítási vonalak használata" tulajdonságot.

A helyes válasz a második. Az igazítási vonalakat (nyíl jelzi) a megfelelő form tulajdonság letiltja:

Az 1C vizsga 10.92. kérdése: Platform Professional. Az űrlapelemek igazításakor egy elrendezési rács jelenhet meg:

  1. Folyamatos vonalak
  2. Sakktábla pontok
  3. A jelölővonalak metszéspontjában található pontok
  4. Az 1. és 2. válasz helyes
  5. A 2. és 3. válasz helyes
  6. Az 1., 2. és 3. válasz helyes

A helyes válasz az ötödik. A pontok elhelyezkedését a Rendszerparaméterek Checkerboard opciója szabályozza (lásd a képernyőképet a bejegyzésben).

Az 1C vizsga 10.95. kérdése: Platform Professional.

  1. Egy speciális igazítási marker, amely a vezérlőelemek eltolását mutatja. Felkínálja a kiválasztott vezérlőelem balra mozgatását
  2. Egy speciális igazítási marker, amely a vezérlőelemek eltolását mutatja. A kiválasztott vezérlőelemet felajánlja a lefelé mozgatásra
  3. Egy speciális igazítási marker, amely a kezelőszervek átfedését mutatja. Felkínálja a kiválasztott vezérlőelem balra mozgatását
  4. Egy speciális igazítási marker, amely a kezelőszervek átfedését mutatja. A kiválasztott vezérlőelemet felajánlja a lefelé mozgatásra

A helyes válasz az első. Az alsó margó a felső részhez képest jobbra tolódik, ezért javasolt balra mozgatni.

Az 1C vizsga 10.96. kérdése: Platform Professional. Használhatok igazítási vonalakat az űrlapvezérlők átméretezésére és mozgatására?

  1. Ez tiltott
  2. Igen, ha a vezérlőelemek ezekhez a vonalakhoz vannak csatlakoztatva
  3. Ez lehetséges, ha a vezérlőelemek ezekhez a vonalakhoz vannak rögzítve, de csak mozgatják őket
  4. Ez lehetséges, ha a vezérlőelemek ezekhez a sorokhoz vannak csatolva, de csak átméretezni
  5. Mindig lehet

A helyes válasz a második. Az ugyanahhoz a kötélhez rögzített elemek együtt mozgathatók.

Az 1C vizsga 10.97. kérdése: Platform Professional. Az ábrán a piros kör a következőket jelzi:

  1. Egy speciális igazítási marker, amely a vezérlőelemek eltolását mutatja. A kiválasztott vezérlőelem balra és felfelé mozgatható
  2. Egy speciális igazítási marker, amely a vezérlőelemek eltolását mutatja. A kiválasztott vezérlőelem jobbra és lefelé mozgatható
  3. Egy speciális igazítási marker, amely a kezelőszervek átfedését mutatja. A kiválasztott vezérlőelem balra és felfelé mozgatható
  4. Egy speciális igazítási marker, amely a kezelőszervek átfedését mutatja. A kiválasztott vezérlőelem jobbra és lefelé mozgatható

A helyes válasz a negyedik. Ahová a nyilak mutatnak, oda kell lépni.

Az 1C vizsga 10.98. kérdése: Platform Professional. Az ábrán a piros kör a következőket jelzi:


Az 1C vizsga 10.110. kérdése: Platform Professional. Hogyan tudom az ábrán látható parancssor gombbal mindhárom címkét jobbra igazítani?

  1. Először válassza ki az „Inscription1” vezérlőt úgy, hogy rákattint a bal egérgombbal, és egyszerre nyomja meg a billentyűt. Ezután nyomja meg a jelzett gombot
  2. Csak kattintson a jelzett gombra
  3. Ezzel a gombbal nem lehet igazítani a címkéket, mert különböző panelekhez tartoznak
A helyes válasz a harmadik. Az igazítás egyetlen panelen belül működik.

Az 1C vizsga 10.115. kérdése: Platform Professional. Az elrendezési rács meglévő űrlapon való megjelenítéséhez elegendő:

  1. Az űrlap tulajdonságai palettán állítsa be a "Rács használata" tulajdonságot
  2. A főmenü "Eszközök-Opciók" menüpontjának kiválasztásával az "Űrlap" fülön állítsa be a "Rács használata" jelzőt
  3. Az "Eszközök-Opciók" főmenüpont kiválasztásával az "Űrlap" fülön állítsa be a "Megjelenítési rács" jelzőt
  4. Az "Eszközök-Opciók" főmenüpont kiválasztásával az "Űrlap" fülön állítsa be a "Display Grid" jelzőt, majd az űrlap tulajdonságai palettán állítsa be a "Rács használata" tulajdonságot.
  5. Az "Eszközök-Opciók" főmenüpont kiválasztásával az "Űrlap" fülön állítsa be a "Megjelenítési rács" és a "Rács használata" jelzőt.

A helyes válasz a negyedik, az űrlapnál megadható a megjelenítés vagy sem.

19.05.2015

Megvalósítva a 8.3.7.1759 verzióban.

Ahhoz, hogy világos legyen, miről beszélünk ebben a cikkben, egy kis magyarázatot kell készíteni.

A kezelt űrlapok sajátossága, hogy a fejlesztő közvetlenül nem alakítja az űrlap megjelenését. A fejlesztő csak néhány logikai szabály segítségével készíti el az űrlap leírását. Ezen szabályok alapján a platform önállóan generálja az űrlap vizuális megjelenítését. Ezenkívül ez a vizuális megjelenítés attól függ, hogy mekkora ablakban jelenik meg az űrlap. A keskeny ablakban vagy a teljes képernyőre kibontott ablakban látható ugyanazon űrlap vizuális megjelenése eltérő lesz.

Tehát a platformnak azt a részét, amely az űrlap vizuális megjelenítését képezi, az elemek űrlapba helyezésének mechanizmusának nevezzük.

Miért volt szükség új mechanizmusra?

Először is, az előző mechanizmusnak sajnos voltak hiányosságai. Ezek közül a legjelentősebb az volt, hogy az űrlapelemek tulajdonságainak a kliensen végrehajtott számos változtatása hívást igényelt a szerver felé. És minden hozzáférés a szerverhez vezet lassuláshoz.

Másodszor, felmértük a kezelt űrlapok használatának tapasztalatait, és számos olyan kritikus igényt fedeztünk fel, amelyekkel foglalkozni kell.

Harmadszor pedig be akartuk építeni az új mechanizmusba a jövőbeli fejlődés lehetőségeit.

Nagy változások

Az előző mechanizmus működése sematikusan a következőképpen ábrázolható:

A fejlesztő létrehozza az űrlapelemek fát a konfigurátorban, és beállítja az elemek tulajdonságait. Abban a pillanatban, amikor az alkalmazásmegoldásnak meg kell mutatnia az űrlapot a felhasználónak, a következő történik. Először a platform létrehozza a vizuális űrlap leírását a szerveren. Ezután ezt a leírást továbbítják az ügyfélnek. A kliensen pedig a megjelenítő generálja azt a képet, amelyet a felhasználó látni fog.

A vizuális forma leírásának létrehozásakor a szerveren végrehajtott fő művelet a vonalak hosszának kiszámítása volt. Ez mindenféle címsorra, feliratra stb. vonatkozik. A vonalak hosszának ismeretében már kiszámítható az elemek elrendezése az űrlapon.

Mivel ezt a műveletet a szerveren hajtották végre, két negatív szempont volt. Először is, a számításhoz nem a kliensen használt, hanem a szerverre telepített betűtípusokat használtuk. És ezek eltérhetnek, különösen, ha különböző platformokról van szó (Windows, Linux). Vagy az is előfordulhat, hogy a szükséges betűtípusok egyáltalán nincsenek telepítve a szerverre. Másodszor, a hosszok kiszámításához a kiszolgálón található betűtípus-raszterező motort használtuk. És nem biztos, hogy pontosan úgy működik, mint a szöveges karakterláncok renderelésének mechanizmusa, amely például az ügyfélen létezik egy internetböngészőben. Ennek eredményeként megjelenhettek a nyomtatványok „csonka” szövegekkel, vagy éppen ellenkezőleg, túlságosan széles feliratokkal.

További probléma volt, hogy nem volt adaptálva annak az ablaknak a méretéhez, amelyben az űrlapot az ügyfélnek mutatják. Valójában a szerveren az űrlap leírása a lehető legkisebb ablakméret alapján készült, megjelenítésének további sikere attól függött, hogy mennyire „tud” nyújtani.

Az új mechanizmusban a vizuális forma leírásának generálását, amely korábban teljes egészében a szerveren történt, két részre osztottuk, szerverre és kliensre:

A szerver rész lényegesen kisebb lett. Nem végez számításokat. Csak egy „üres” leírás jön létre a szerveren, amely nem tartalmazza a szövegmezők pontos hosszát, és nem engedélyezettek benne adaptációs elemek. A szerver kezeli az elemek láthatóságát, de csak a funkcionális opciók által meghatározott és a felhasználó által beállítottakat. De itt lehetetlen másként tenni, mert maguk a funkcionális lehetőségek csak a szerveren érhetők el. És a beállítások interaktív megváltoztatása a felhasználó által minden esetben szerverhíváshoz vezet.

Az eredmény egyfajta „félkész termék” a forma vizuális megjelenítéséből, amelyet átadnak az ügyfélnek.

A vizuális forma leírásának szükséges módosításait az ügyfélen végezzük el. Megtörténik a sorhosszak kiszámítása, a kliens kijelző méretéhez kapcsolódó reszponzivitási elemek kiszámítása és a láthatóság kidolgozása. Ezt követően, mint korábban, a vizualizáló elkezd dolgozni, amely létrehozza a kliens által látott végső formát.

Tekintettel arra, hogy a húrhosszak számítását a megrendelőn végzik, sikerült megszabadulni az elemek közötti felesleges és hanyag „résektől”. A kliens láthatóságának kidolgozása a szerver elérése nélkül pedig lehetővé tette az űrlapok munkájának felgyorsítását. Mert az űrlapelemek láthatóságának be- és kikapcsolása az egyik leggyakoribb művelet.

Néhány új funkció

Reszponzív interfész elemek

Az elemek űrlapon való elhelyezésének új mechanizmusa nemcsak a korábban elérhető képességeket javítja, hanem új képességekkel is bővíti. Például az űrlap megjelenését az ügyfélkijelző méretéhez igazítja. Ennek többféle módja van.

Először az automatikus vonalkötést hajtják végre, a címsorok és a díszítések magasságának beállításával. Az ábrán láthatja, hogyan működik ez:

Ha az alakban vannak hosszú sorok, amelyek egyes szavakra bonthatók, akkor az ilyen sorokat szükség esetén tördeljük. Ennek megfelelően nő a forma magassága, mert az alsó része „lefelé mozog”. Ennek eredményeként az űrlap még keskeny képernyőkön is normálisnak tűnik. Sőt, ez a mechanizmus dinamikusan működik, ami azt jelenti, hogy valós időben tömörítheti az űrlapot, és a hosszú sorok vele együtt tekerednek.

Az elemek címeinek, csoportcímeinek, szövegdekorációinak és a hiperhivatkozás nézetű gombok szövegének automatikus tördelése működik.

Az alkalmazkodóképesség második eleme a csoportok orientációjának megváltoztatása. A csoportoknak és az űrlap egészének új tájolási opciója van – „Lehetőleg vízszintes”. Ebben az opcióban, ha a kliens kijelző lehetővé teszi az elemek vízszintes elhelyezését, akkor azok vízszintesen kerülnek elhelyezésre. Ha nem, akkor függőlegesen helyezkednek el.

Az alkalmazkodóképesség harmadik eleme egy kapcsoló vagy billenőkapcsoló oszlopok számának automatikus meghatározása. Korábban, hacsak nem voltak külön utasítások, az oszlopok számát maximálisra állítottuk, és ez egy sorban jelent meg. Most ugyanebben a helyzetben a rendszer elemzi az űrlap szélességét, és úgy állítja be az oszlopok számát, hogy a kapcsoló/váltókapcsoló jól nézzen ki a képernyőn.

Vízszintes és függőleges igazítás

Korábban ez a lehetőség hiányzott, és a nem szabványos igazítás megvalósításához különféle „trükköket” kellett kitalálni. Most megadható az űrlap és a csoport, hogy az elemei hogyan legyenek igazítva függőlegesen és vízszintesen. Például az alábbi képen egy gombcsoport három lehetséges igazítási lehetőséget mutat: Balra, Középre és Jobbra:

Ezen a képen a gombok egy vízszintesen húzódó szabályos csoportba helyezkednek el. A gombok csoporton belüli elhelyezését a csoport HorizontalPositionSubordinates tulajdonsága szabályozza.

Külső beállítás vezérlés

Például van egy űrlapja, amelyen a Részleg mező, a Cím és a Telefon csoportok találhatók. Az előző mechanizmus ezeknek a csoportoknak a mezőit igazította a bal oldali ábrán látható módon. Az űrlap mezői egymáshoz, az egyes csoportok mezői pedig egymáshoz igazodtak.

Mostantól lehetősége van beállítani a csoportok végpontok közötti igazítását, aminek eredményeként például az összes űrlapmező egyformán lesz igazítva. Ez az opció a jobb oldali képen látható.

Ezenkívül az egyes csoportokhoz külön-külön kezelheti a végpontok közötti igazítást. Ezért például letilthatja a végpontok közötti igazítást a Telefon csoportban, és ekkor az űrlap úgy fog kinézni, mint a jobb oldali ábrán.

Elemek és címsorok igazítása

Egy másik újdonság jelent meg az elemek és címsorok egymáshoz viszonyított helyzetének szabályozása. Minden formában és egyéni csoportokban egyaránt. Például „kinyújthatja” a címsorokat és az elemeket az űrlap különböző széleire, vagy fordítva, „húzhatja” őket egymás felé, a címsorokat jobbra, az elemeket pedig balra igazítva.

Az elemek maximális szélességének korlátozása

Korábban, ha azt mondtad egy elemnek, hogy nyúljon, az elem ameddig tudott nyúlni. Például teljes képernyő. Egyes elemeknél ez jó volt (például egy HTML mező), de más elemeknél nem biztos, hogy olyan jó. Például numerikus mezők esetén. Mert a numerikus adatok, vagy a mezőt vezérlő gombok valahol jobbra kerültek.

Az elemek mostantól logikai tulajdonságokkal rendelkeznek, amelyekkel beállíthatja az automatikus nyújtási módot szélességben vagy magasságban. Ebben az üzemmódban a platform önállóan határozza meg, hogy a mező milyen határokig nyújtható. Ha az automatikus mód le van tiltva, akkor a platform ugyanúgy fog viselkedni, mint korábban. Ha egy adott mezőszélességet/magasságot ad meg, az kerül felhasználásra. Ha pedig 0 értéket ad meg, akkor az elem a lehető legmesszebbre nyúlik.

Az elemek közötti távolság szabályozása

Lehetőség van az elemek közötti vízszintes és függőleges távolság szabályozására is. Például a következő ábrán a bal oldali csoport növelte a függőleges távolságot, míg a jobb csoport csökkentette a függőleges távolságot.

A forma nyújtás letiltása

Az űrlap egy másik, új működési módját valósítottuk meg, amely letiltja elemeinek függőleges nyújtását. Ez a mód kis számú elemet tartalmazó űrlapoknál hasznos.

Az oldalak görgetésének letiltása

A nagy számú elemet tartalmazó űrlapok viselkedésén is változtattunk némileg. Most a függőleges görgetés nem jelenik meg az oldalakon. A függőleges görgetés most már magán az űrlapon vagy űrlapelemeken belül is történhet, például táblázatban, táblázatos dokumentumban stb. Az űrlapoldal pedig mindig teljes magasságban lesz. Ez megkönnyíti a felhasználói élményt, mert egy űrlapon lévő nagyszámú görgető gyakran zavaró és zavaró lehet.

Összegzés

Ebben az áttekintő cikkben csak az elemek űrlapon való elhelyezésének új mechanizmusa által biztosított főbb funkciókat soroltuk fel. De véleményünk szerint nem kevésbé fontos, hogy ez a mechanizmus jelentős tartalékot tartalmaz a jövőbeli fejlődéshez.

És adatátviteli objektum a kód strukturálásához, vezérelt formában az 1C 8.2 környezetben.

Bevezetés

Kezdjük a „menedzselt forma” fogalmának és az 1C platform kapcsolódó fogalmainak rövid leírásával. A platform ínyencei érdemes kihagyni ezt a részt.

2008-ban elérhetővé vált az 1C platform új verziója: Enterprise 8.2 (a továbbiakban: felügyelt alkalmazás), amely teljesen megváltoztatja a felülettel végzett munka teljes rétegét. Ez magában foglalja a parancsfelületet, az űrlapokat és az ablakrendszert. Ugyanakkor nemcsak a konfigurációs felhasználói felület fejlesztésének modellje változik meg, hanem egy új architektúra is javasolt a kliens alkalmazás és a szerver közötti funkcionalitás elválasztására.
A felügyelt alkalmazás a következő típusú ügyfeleket támogatja:

  • Vastag kliens (normál és felügyelt indítási mód)
  • Vékony kliens
  • Web kliens
A felügyelt alkalmazás új technológiára épülő űrlapokat használ. Úgy hívják Kezelt űrlapok. Az átállás megkönnyítése érdekében a korábbi űrlapok (az ún. reguláris űrlapok) is támogatottak, de ezek funkcionalitása nincs kifejlesztve, és csak vastag kliens indító módban érhetők el.
A kezelt űrlapok fő különbségei a fejlesztők számára:
  • A szerkezet deklaratív, nem „pixelről pixelre” leírása. Az elemek konkrét elhelyezését a rendszer automatikusan elvégzi az űrlap megjelenítésekor.
  • Az űrlap összes funkciója a következőképpen van leírva részletekÉs csapatok. A részletek azok az adatok, amelyekkel az űrlap működik, a parancsok pedig a végrehajtandó műveletek.
  • Az űrlap a szerveren és a kliensen is fut.
  • Kliens környezetben szinte minden alkalmazástípus nem érhető el, ennek megfelelően az infobázisban lévő adatok megváltoztatása nem lehetséges.
  • Minden metódushoz vagy űrlapváltozóhoz meg kell adni összeállítási irányelv, amely meghatározza a végrehajtási helyet (kliens vagy szerver) és az űrlapkontextushoz való hozzáférést.
Soroljuk fel az űrlapmetódusok összeállítására vonatkozó direktívákat:
  • &OnClient
  • &A szerveren
  • &OnServerContext nélkül
  • &OnClientOnServerKontextus nélkül
Illusztráljuk a fentieket. A képernyőkép egy felügyelt űrlapra és annak moduljára mutat példát fejlesztési módban. Keresse meg a deklaratív leírást, kellékeket, összeállítási utasításokat stb.

Minden további megbeszélés az illusztráció jobb oldaláról fog szólni, arról, hogyan kell felépíteni a modul kódját, és milyen elvek teszik lehetővé a hatékony kliens-szerver interakció megvalósítását.

Határozzuk meg a problémát

Több év telt el azóta, hogy az 1C platform új verzióját aktívan használják, és számos megoldást (konfigurációt) adott ki az 1C és számos partnere.
Ezalatt az idő alatt kialakult-e a fejlesztők közös értelmezése a kliens-szerver interakció elveiről az űrlapok létrehozásakor, és megváltozott-e a szoftvermodulok megvalósításának megközelítése az új építészeti valóságban?

Nézzük meg a kódszerkezetet (űrlapmodult) ugyanazon szabványos konfiguráció több alakjában, és próbáljunk mintákat találni.
Struktúrán a kód szakaszait értjük (leggyakrabban ezek megjegyzésblokkok), amelyeket a fejlesztő a metódusok csoportosítására és az ezekhez a metódusokhoz tartozó fordítási direktívákhoz rendel hozzá.
1. példa:
Eseménykezelők szekciója Módszer - a kliensen Módszer - a szerveren Módszer - a kliensen Szervizeljárások és -funkciók szekció Kiegészítő bemenetvezérlő funkciók
2. példa:
Szolgáltatási eljárások és funkciók Fizetési bizonylatok Értékek Eseménykezelők
3. példa:
Szervizeljárások a szerveren Szervizeljárások a kliensen Szolgáltatási eljárások a szerveren kontextus nélkül Fejléc eseménykezelők Parancs eseménykezelők
4. példa:
Általános célú eljárások Űrlap-eseménykezelők A „kapcsolati adatok” alrendszer eljárásai
Lényegében hiányzik a kódstruktúra, vagy enyhén szólva hasonló a Forms 8.1-hez:

  • Nem tájékoztató jellegű „Általános, Szerviz, Kisegítő” szavak.
  • Félénk kísérletek a kliens és a szerver metódusainak elkülönítésére.
  • A módszereket gyakran interfész-elemek szerint csoportosítják: „Munka a táblázatos résszel Termékek, Elérhetőségek”.
  • Metódusok és kódcsoportok tetszőleges elrendezése. Például előfordulhat, hogy az eseménykezelők egyik formában felül vannak, egy másikban alul, harmadikban egyáltalán nincsenek kiemelve stb.
  • És ne felejtsük el, hogy mindez egyetlen konfiguráción belül van.
  • Igen, vannak olyan konfigurációk, amelyekben az „Általános, Szerviz, Kisegítő” szavak mindig ugyanazokon a helyeken vannak, de...
Miért van szükség kódszerkezetre?
  • A karbantartás egyszerűsítése.
  • Egyszerűsítse a tanulást.
  • Általános/fontos/sikeres alapelvek rögzítése.
  • ...a te választásod
Miért nem segít az 1C meglévő fejlesztési szabványa?
Nézzük meg az ITS-lemezeken és a különféle „Fejlesztői útmutatókban...” közzétett alapelveket, amelyek a kezelt űrlap megírásakor ajánlottak.
  • Minimalizálja a szerverhívások számát.
  • Maximális számítás a szerveren.
  • A nem kontextuális szerverhívások gyorsabbak, mint a kontextus szerintiek.
  • Program az ügyfél-szerver kommunikációt szem előtt tartva.
  • stb.
Ezek teljesen igazak szlogenek, de hogyan valósítsuk meg őket? Hogyan lehet minimalizálni a hívások számát, mit jelent kliens-szerver módban programozni?

Tervezési minták vagy generációs bölcsesség

A kliens-szerver interakciót évtizedek óta használják a különféle szoftvertechnológiákban. Az előző részben felvázolt kérdésekre a válasz régóta ismert, és két alapelvben foglalható össze.
  • Távoli homlokzat(a továbbiakban: Távoli hozzáférési interfész)
  • Adatátviteli objektum(a továbbiakban: adatátviteli objektum)
Egy szó Martin Fowlertől, ezekről az elvekről:
  • Minden távoli hozzáférésre szánt objektumnak rendelkeznie kell alacsony részletességű interfész, amely minimálisra csökkenti az adott eljárás végrehajtásához szükséges hívások számát. ... A számlát és az összes tételét külön kéri, hanem az összes számlatételt egy kérelemben kell elolvasnia és frissítenie. Ez kihat az objektum teljes szerkezetére...Ne feledje: távoli elérési felület nem tartalmaz tartomány logikát.
  • ...ha gondoskodó anya lennék, biztosan azt mondanám a gyerekemnek: "Soha ne írj adatátviteli objektumokat!" A legtöbb esetben az adatátviteli objektumok nem mások, mint dagadt mezei készlet... Ennek az undorító szörnyetegnek az értéke kizárólag a lehetőségben rejlik több információ továbbítása a hálózaton keresztül egy hívás során- elosztott rendszerekben nagy jelentőségű technika.
Példák sablonokra az 1C platformon
A felügyelt űrlap fejlesztése során a fejlesztő rendelkezésére álló alkalmazásprogramozási felület számos példát tartalmaz ezekre az elvekre.
Például az OpenForm() metódus, egy tipikus „durva” felület.
OpeningParameters = New Structure("Paraméter1, Paraméter2, Paraméter 3", Érték1, Érték2, Érték3); Form = OpenForm(FormName, OpeningParameters);
Hasonlítsa össze a v8.1-ben elfogadott stílussal.
Form = GetForm(FormName); Form.Parameter1 = Érték1; Form.Parameter2 = Érték2; Form.Open();

A kezelt űrlap kontextusában sok „adatátviteli objektum” létezik. Választhat szisztémásÉs fejlesztő által meghatározott.
A rendszeresek egy alkalmazásobjektumot modelleznek az ügyfélen, egy vagy több űrlapadat-elem formájában. Lehetetlen létrehozni őket az űrlap részleteire való hivatkozás nélkül.

  • DataFormsStructure
  • DataFormsCollection
  • DataFormStructureWithCollection
  • DataShapesTree
A rendszeradatátviteli objektumok alkalmazástípusokká konvertálása és fordítva a következő módszerekkel történik:
  • ValueInFormData()
  • FormDataValue()
  • CopyFormData()
  • ValueInFormAttributes()
  • FormAttributesValue()
Gyakran explicit konverziót használnak egy meglévő megoldás adaptálásakor. A metódusok bemeneti paramétereket várhatnak (funkciókat használhatnak), például a ValueTable-t a FormDataCollection helyett, vagy a metódust egy alkalmazásobjektum kontextusában határozták meg, és nem elérhető az űrlapról történő közvetlen meghíváshoz.
Példa 1C v8.1:
// az ügyfélen a FillUserCache(DepartmentLink) űrlap kontextusában
Példa 1C v8.2:
// a szerveren a ProcessingObject = Form AttributesValue("Object") űrlap kontextusában; ProcessingObject.FillUserCache(DepartmentRef); ValueВFormAttributes(ProcessingObject, "Object");

Az adatátviteli objektumok, amelyek szerkezetét a fejlesztő határozza meg, a kliensen és a szerveren egyaránt elérhető típusok egy kis részhalmazát alkotják. Leggyakrabban a következőket használják a „durvított” interfész metódusainak paramétereiként és eredményeiként:

  • Primitív típusok (karakterlánc, szám, logikai érték)
  • Szerkezet
  • Levelezés
  • Sor
  • Alkalmazásobjektumokra mutató hivatkozások (egyedi azonosító és szöveges megjelenítés)
Példa: a metódus elfogadja a megbízások listáját az állapot módosítására, és visszaküldi a hibák leírását az ügyfélnek.
&OnServerWithoutContext függvény SzerverChangeOrderStatus(Orders, NewStatus) Errors = New Match(); // [megrendelés][hiba leírása] Minden rendelésből Megbízás Cycle StartTransaction(); Próbáld ki a DocOb = Order.GetObject(); …. egyéb műveletek, amelyek nem csak a megrendeléssel lehetségesek... Kivétel CancelTransaction(); Errors.Insert(Rendelés, Hibaleírás()); EndAttempt; EndCycle; Visszaküldési hiba; EndFunction // ServerChangeOrderStatus()

A kód strukturálása

A fő célok, amelyeket a kezelt űrlap modulnak tükröznie kell, és a megoldás megközelítései.
  • A kliens és a szerver kód egyértelmű elkülönítése. Ne felejtsük el, hogy a végrehajtás időpontjában ez két kölcsönhatásban lévő folyamat, amelyek mindegyike jelentősen eltérő elérhető funkciókkal rendelkezik.
  • A távelérési felület egyértelmű azonosítása, mely szerver metódusok hívhatók a kliensből és melyek nem? A távoli interfész metódusainak neve a "Szerver" előtaggal kezdődik. Ez lehetővé teszi, hogy a kód olvasása közben azonnal láthassa az irányítás átadását a szerverre, és leegyszerűsíti a kontextus súgó használatát. Ne feledje, hogy a hivatalos ajánlás (ITS) a postfixes elnevezési módszereket javasolja, például ChangeOrderStatusOnServer(). Megismételjük azonban, hogy nem minden szervermetódus hívható meg a klienstől, ezért a logikai hozzáférhetőség fontosabb, mint a fordítási hely. Ezért a „Server” előtaggal csak a kliens számára elérhető metódusokat jelöljük, nevezzük a példametódusnak ServerChangeOrderStatus().
  • Olvashatóság.Ízlés dolga, akkor fogadjuk el a sorrendet, amikor a modul elkezdődik a szerveren lévő űrlapkészítési eljárásokkal és a távoli elérési módokkal.
  • Karbantarthatóság. Az új kód hozzáadásához egyértelmű helyet kell biztosítani. Fontos szempont, hogy a konfigurátor által automatikusan létrehozott metódusablonok a modul végére kerülnek. Mivel az űrlapelemek eseménykezelői leggyakrabban automatikusan jönnek létre, a megfelelő blokk az utolsó helyen található, hogy ne húzza át az egyes kezelőket a modul másik helyére.
Az alábbiakban a felsorolt ​​célokat megvalósító modul alapvető felépítése látható.
  • Grafikus opció – világosan mutatja a végrehajtás fő folyamatát.
  • A szöveg opció egy példa egy sablontervre, amellyel gyorsan beszúrhat egy szerkezetet egy új űrlapmodulba.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор=""Dátum=""/> // <Описание> // // //////////////////////////////////////////////// /////////////////////////// // MODUL VÁLTOZÓI ////////////////// ////////////////////////////////////////////////// ////////// // A SZERVEREN //******* ESEMÉNYEK A SZERVEREN ******** &A kiszolgálói eljárásról a szerveren történő létrehozáskor (hiba, szabványos feldolgozás) / /A kezelő tartalmának beillesztése Eljárás vége //******* TÁVELÉRÉSI INTERFÉSZ ****** //******** ÜZLETI LOGIKA A SZERVEREN ******* ////////////////////////////////////////////////// /////// //////////////////// // AZ ÜGYFÉL ÉS A SZERVER KÖZÖS MÓDSZEREI //////////////// /////// /////////////////////////////////////////// ///// //////// // AZ ÜGYFÉLEN //******* ÜZLETI LOGIKA AZ ÜGYFÉLEN ******** //******** CSAPAT * ****** //******** CLIENT ESEMÉNYEK ******* /////////////////////////// ///// ///////////////////////////////////////////// // / / FŐ PROGRAM ÜZEMELTETEŐI

Kapcsolódó kérdések
Végezetül felvázolunk néhány olyan területet, amelyekre érdemes gondolni a kliens-szerver interakció programozása során.
  • A távelérési interfész megvalósítási lehetőségei. Aszinkron, részletesség...
  • Gyorsítótárazás. Az 1C sikertelen építészeti döntést hozott, a gyorsítótárazást csak a közös modulok hívási módszereinek szintjén vezette be, és nem biztosított vezérlési képességeket (relevanciaidő, igény szerinti visszaállítás).
  • Implicit szerverhívások. Ne feledkezzünk meg a technológiai jellemzőkről, az ügyfél számos „ártalmatlan” művelete arra készteti a platformot, hogy kapcsolatba lépjen a szerverrel.

Bevezetés

Kezelt űrlapok. Egy új 1C fejlesztés, amelynek célja, hogy megkönnyítse a fejlesztő munkáját, így több ideje marad a kódírásra az interfész kialakításának egyszerűsítésével. Sőt, sokszor kiderül, hogy az ún. Az „ellenőrzött formák” teljesen ellenőrizhetetlenek. Az UV-fények nem tudnak olyan banális dolgokat csinálni, mint az ablak minimalizálása/maximalizálása, nem beszélve a képernyőn való elhelyezéséről és a méretének pixelben történő beállításáról. Talán ezeket a funkciókat nem igényelték, és nem szerepeltek az új felületen, de a gyakorlat azt mutatja, hogy néha nagyon hiányoznak. Egy ideig a problémát részben megoldotta a WSH, de szerettem volna még valamit. Így valósítottak meg egy külső komponenst, hogy a „menedzselt űrlapokat” kicsit kezelhetőbbé tegyék.

Mit? Ahol? Amikor?

Ez a VK az ablakok állapotának és helyzetének vezérlésére szolgáló függvénykönyvtár. A könyvtár számos hasznos rendszerfunkciót is tartalmaz.

Ablak állapot vezérlése:

Kiterjed ( HeaderWindow ) teljes képernyőre bővíti az ablakot

Összecsukás (WindowTitle) - kicsinyíti az ablakot a tálcára

Elrejtés (WindowTitle) - elrejti az ablakot (amíg az űrlapkód végrehajtása folytatódik)

Előadás () - az utolsó rejtett funkciót mutatja hide() ablak

CollapseWindow (WindowTitle) - be visszaállítja az ablakot az eredeti állapotába

IGAZI láthatóság (WindowTitle) – 1. o ellenőrzi, hogy az ablak látható-e a képernyőn

TRUE kibontva (WindowTitle) - ellenőrzi, hogy az ablak teljes képernyőre van-e állítva

TRUE Összecsukva (WindowTitle) - ellenőrzi, hogy az ablak a tálcára van-e kicsinyítve

Állítsa be az átlátszóságot(Ablakcím, Együttható) - beállítja az ablak átlátszóságát. Az átlátszóság mértéke együtthatóval (0-255) állítható be.

Az ablak helyzetének szabályozása:

GetPosition(Ablak címe, x, Y) - Lekéri az ablak bal felső sarkának a képernyőhöz viszonyított koordinátáit. A koordinátákat paramétereken keresztül adják visszaX,Y.

Mozog(Ablak címe, x, Y) - az ablakot egy megadott pozícióba mozgatjaXY. Ebben az esetben XYaz ablak bal felső sarkának koordinátái.

Méretek beszerzése- az ablak méretét pixelben kapja meg. Az értékek a megfelelő paramétereken keresztül kerülnek visszaadásra.

Méretek beállítása(Ablak címe, szélessége, magassága) - beállítja az ablak méretét pixelben.

A rendszer funkciói:

Get CurrentPermission(Horz, Vert) - megkapja az aktuális képernyőfelbontást. Az értékek a megfelelő paramétereken keresztül kerülnek visszaadásra.

GetPermissionList() - megkapja a rendszerben elérhető képernyőfelbontások listáját. Az adatok „RESOL.1, RESOL.2, RESOL.3...” formában kerülnek visszaküldésre. A demó feldolgozásban van egy példa az engedélyek listájának létrehozására egy űrlapon.

SetPermission(SelectedScreenResolution) - beállítja a képernyő felbontását. A paraméter az engedély sorozatszámát adja meg. A bemutató feldolgozás példát mutat a felbontás beállítására egy korábban létrehozott listából.

Bónuszok:

Alvás (alvásidő) alvás().Az alvási idő ezredmásodpercben van megadva.

Jel (frekvencia, időtartam) - a klasszikus funkció megvalósításahangjelzés ().Lehetővé teszi a hang frekvenciájának és időtartamának beállítását.

Teljes

A könyvtárat saját igényeinkre írtuk, és valószínűleg szükség szerint továbbfejlesztjük. Ha valakinek van egy jó ötlete, hogy bővítse a funkcionalitását azon a témakörön belül, amelyre kigondolták, akkor írja meg kívánságát. Ha az ötletek beváltak, meg is valósítják azokat.

A szállítási készlet tartalma: Egy alap csatlakoztatott VC-vel általános elrendezés és bemutató feldolgozás formájában. VK a zip archívumban.