itthon / A PC elsajátítása / Különbségek az értékhez való űrlap és az adatlap-érték függvények között. Felügyelt űrlapattribútumok (1Cv8) 1c 8.3 érték az űrlapattribútumban

Különbségek az értékhez való űrlap és az adatlap-érték függvények között. Felügyelt űrlapattribútumok (1Cv8) 1c 8.3 érték az űrlapattribútumban

Az alábbiakban felsoroljuk a felügyelt űrlapokkal végzett munka során használt fő 1C objektumokat. Rövid kódpéldákat mutatunk be, amelyek bemutatják ezen objektumok hagyományos használatát az 1C konfigurációk írásakor.

Ez a forma

Használt az űrlap modulban, eljárásokban&AtClient és &AtServer .

Lehetővé teszi az űrlapelemek és attribútumok elérését.

Az űrlapelem egy objektumon keresztül érhető el Elemek és így néz ki:

ThisForm.Items.VersionNumber.Header = "v."+ProgramVersion;

Az űrlapon található attribútumhoz való hozzáférés a következő:

ThisForm.AnnouncementText="Sziasztok elvtársak!";

Egyszerűsített hozzáférés az űrlapelemekhez és attribútumokhoz

Az űrlap modulban elvileg nem adható meg a kulcsszó Ez a forma . Az űrlapelemeket és -attribútumokat egyszerűsített módon érheti el:

// Űrlapelem

Elements.VersionNumber.Title = "v."+ProgramVersion;

// Forma kellékek

AnnouncementText="Sziasztok elvtársak!";

Az űrlapadatok megszerzésének jellemzői (fontos!)

Ha a formatámasz egyszerű típusú - Karakterlánc, szám, dátum ... akkor egyszerűen név alapján megkaphatja (beállíthatja) az attribútum értékét:

Szöveg=Terméknév; // A terméknév egy űrlapattribútum

Ily módon azonban lehetetlen megismerni a "komplex" típusú részleteket -Értéktáblázat, Értékfa . Amikor egy ilyen típusú attribútumot név szerint próbálunk lekérni, egy ilyen típusú objektum kerül visszaadásraDataFormsCollection.

Egy "összetett" típusú attribútum értékének meghatározásához a függvényt kell használniFormAttributeToValue():

CurrentTable=FormAttributeToValue("SelectedConstructionObjects");

Egy "összetett" attribútum értékének beállításához használhatja a függvénytValueVPropsForm(<Значение>, <ИмяРеквизита>) , mindkét paraméter megadása kötelező.

Funkciók FormAttributeToValue()És ValueVFormProps()csak a szerveren érhető el.

Egy tárgy

Szigorúan véve ez kulcsszó a formán belül nem. Egyszerűen, amikor létrehoz egy űrlapot, például egy elem űrlapot, az 1C automatikusan létrehoz egy attribútumot az űrlapon a névvel Egy tárgy . Ezen az attribútumon keresztül elérhetők az űrlapon szerkesztett aktuális objektum tulajdonságai.

vagy egy teljesebb jelölés:

ThisObject

Magát az objektumot tartalmazza. Objektumok fogadására tervezték egy objektummodulban vagy űrlapmodulban.

Használat: Csak olvasható.

Elérhetőség: Szerver, vastag kliens, külső kapcsolat.

A kövér kliens idejében egyszerű volt egy objektummodul eljárás meghívása űrlapmodulból. Elég volt a moduleljárást exportálhatónak definiálni és az űrlapmodulban meghívni.


Változnak az idők, az 1C platformot optimalizálják és fejlesztik, a vastag klienst elfelejtik, adjon mindenkinek vékony vagy webes klienst. A fejlesztők elkezdik lefordítani a hétköznapi űrlapokat kezelt formákká, de nem minden olyan egyszerű, nehézségek merülnek fel a programkód-végrehajtás két kontextusra való felosztása miatt: szerver és kliens. Ezért a fenti kódpélda nem fog működni vékony kliensben.

Új adattípusok

Emellett a kezelt űrlapok miatt új adattípusok jelentek meg. Van egy űrlap:
Emlékezzünk az attribútumok típusaira, és megnézzük, milyen típusúak ezek az attribútumok hibakeresése:

Új űrlap adattípusok
Arra a következtetésre jutunk, hogy magának az objektumnak az adatainak megjelenítéséhez a típust használjuk DataFormsStructure, az értékfa megjelenítéséhez - DataFormsTree, a táblázatos részhez - DataFormsCollection stb. Vagyis a kliensen lévő űrlap modulban nem magával az objektummal, hanem annak ábrázolásával dolgozunk! Ezért az elérhető metódusok például az objektummodul táblázatos részéhez NEM ELÉRHETŐ az űrlap modulban.

Küzdelem az új típusokkal

Az 1C platform fejlesztői két funkciót biztosítottak:
  1. PropsFormValue- átalakítja a megadott form attribútumot egy alkalmazás típusú objektummá.
  2. FormDataToValue- átalakítja az űrlap adatait egy alkalmazás típusú objektummá.
Ezen funkciók meghívása csak a szerveren érhető el. Térjünk vissza a feladatunkhoz, és írjuk be a vékony kliens kódját az űrlap modulba az eseményben OnCreateOnServer, amely meghívja a függvényt az objektum moduljából:
&A szerveren


AskObject1 = FormAttributeToValue("Object");
AskObject1.OutputMessage(Object.Attribute1);




Vége eljárás

Egyszerre működik egy függvény és egy másik O_o segítségével. Írjuk fel a konverziós kódot DataFormsTree egy alkalmazás típusú objektumba:
&A szerveren
Eljárás a CreationOnServeren (hiba, szabványos feldolgozás)

ValueTree1 = FormAttributeToValue("Attribútum1");
ValueTree2 = FormDataToValue(ThisForm.Attribute1, Type("Értékfa"));

Vége eljárás

A ValueTree1 és a ValueTree2 típusa azonos – ValueTree. Szóval mi a különbség ezek között a funkciók között???

FormDataToValue - funkció globális kontextus. Átalakítja az űrlap által támogatott objektum típusát az adatbázis objektum típusává: DataFormsStructure --> DirectoryObject.Directory1.

PropsFormValue - az űrlap modul funkciója, azaz a szerveren az űrlappal összefüggésben hívják meg (&AtServer). Ha megpróbálja hívni ezt a funkciót az űrlapkontextuson kívül a platform kivételt dob:
&OnServerWithoutContext
ProcedureTypeConversion()

// Ez a kód érvénytelen, az űrlapkontextus nem elérhető, hiba lesz!
AskObject2 = FormDataToValue(Object, Type("KatalógusObject.Katalógus1"));
AskObject2.OutputMessage(Object.Attribute1);

Vége eljárás

Ennyi a különbség.

A Feldolgozás megmutatja a kiválasztott objektum összes részletét, lehetővé teszi azok szerkesztését, valamint két azonos típusú objektum összehasonlítását. Bármilyen konfigurációt támogat, a szabvány automatikusan telepítésre kerül.

Jelenlegi verzió: normál űrlapokhoz 1.09, kezelt űrlapokhoz 1.12.

Letöltés feldolgozása (1C 8.2, 1C 8.3 (normál űrlapok), epf fájl, 47 KB)

Letöltés feldolgozása (1C 8.2, 1C 8.3 (felügyelt űrlapok), epf fájl, 22 KB)

Az 1C 8.1 legújabb verziója: 1.05

Letöltés feldolgozása (1C 8.1-hez, epf fájl, 48 KB)

Mi a teendő, ha a feldolgozás nem nyílik meg

A feldolgozás nagyon hasznos, például ilyen esetekben:

    meg kell értenie egy ismeretlen alapot

    a konfigurációs kiadás frissült, és egy új mező került a dokumentumba (rejtett, de az űrlapon nincs). Ugyanakkor az új dokumentumoknál a létrehozáskor van beállítva, de természetesen elfelejtették a régieket. Ami a felhasználó számára abban nyilvánul meg, hogy két teljesen egyforma dokumentum különböző bejegyzéseket ad 🙁

    csak arról van szó, hogy a mező tartalma nem fér bele az űrlapon a számára kijelölt helyre, hanem teljes egészében meg kell nézni (ezt különösen a táblázatrészek szenvedik – a fejlesztők nagyon szeretik korlátozni az oszlopok szélességét, ill. kiegészítés, megakadályozva annak megváltoztatását)

    a kapcsolódó információkhoz kell menni (pl. megnyitni a számlán megadott CCD-t), de ezt a mezőt elfelejtették elérhetővé tenni (azaz sem a pöttyös gombot, sem a nagyítót, sem az F4-et) (és az is előfordul, hogy a beviteli mező helyett kijelölő mezőt, feliratot vagy általában hiányzó mezőt készítenek az űrlapon 🙁)

    hasonlítson össze két azonos típusú tárgyat

Megkülönböztető tulajdonságok

    szabványos konfigurációkhoz való csatlakozás képessége, mint nyomtatott formában(azaz tiszta felhasználói módban, nincs szükség konfigurátorra)

    az objektum rögzítésének képessége "adatcsere - letöltés" módban - azaz. "ahogy van"

Telepítés (normál interfész)

Nyissa meg a feldolgozást, kövesse a képernyőn megjelenő utasításokat. (Azaz kattintson a "Telepítés" gombra a jobb felső sarokban, és erősítse meg a telepítést a következő ablakban.

Telepítés ("felügyelt" interfész)

Figyelem: Ez a telepítési lehetőség csak tipikus 1C konfigurációkban működik.

1. Lépjen az "Adminisztráció" részre, és ott - " További jelentésekés feldolgozás."

2. Kattintson a "Hozzáadás" gombra, és válassza ki a dannye-objecta-upr.epf fájlt

3. A feldolgozási beállítások ablakban ellenőrizze, hogy:

    Kiadvány: Használt

    A jelölőnégyzetek be vannak jelölve: használja listás formában, objektumokat használ űrlaphoz

4. Erősítse meg a telepítést az OK gombra kattintva

Feldolgozás használat

A dokumentum űrlapból, hivatkozási elem. vagy listaforma

    Normál felület - kattintson a "Nyomtatás ..." gombra

    "Kezelt" felület - kattintson a kitöltés gombra

A menüben válassza az "Objektumadatok" lehetőséget - megnyílik a feldolgozási űrlap

A részletek megtekintéséhez (például a dokumentum tartalmazza a „Szerződés” attribútumot, nem módosítható, és meg kell nyitnia a szerződés kártyáját).

Hogyan szerezzünk kellékeket az ügyfél referenciaértékéből

A feldolgozási űrlapon kattintson az attribútum értékére.

Attribútum módosításához jelölje be az érték melletti négyzetet. Ezt követően az érték módosítható.

A változtatások mentéséhez nyomja meg a kívánt opció gombját a rekord mentéséhez "adatcsere - letöltés" módban, normál rögzítés. feladás (csak dokumentumok esetén).

Ha le kell írnia néhány megváltozott adatot, és le kell írnia néhányat, törölje a jelölőnégyzeteket a leírandó adatok mellett.

A feldolgozásban „Attribútum adatok” találhatók – ez ugyanaz, mintha hivatkozással nyitná meg az értéket (például partnerkártya), és abban újra meghívná a feldolgozást.

Összehasonlíthatja az objektumokat:

2 objektum kiválasztása feldolgozásra

2. A feldolgozás meghívásával az egyik objektumról, majd (az ablak bezárása nélkül) egy másikról. A rendszer felkérést kap, hogy végezzen összehasonlítást.

3. (Csak "felügyelt" felület). Válasszon ki egyszerre 2 objektumot a listából (ehhez tartsa lenyomva a Ctrl gombot), és hívja meg a feldolgozást - az objektumok összehasonlítása megtörténik.

Képernyőképek (normál felület)

Képernyőképek ("felügyelt" felület)

Példák a feldolgozás alkalmazására problémahelyzetek elemzésére.

Változások az 1.12-es verzióban (2017.10.17.)

  • A felügyelt űrlapokkal rendelkező változatnál egy hiba javításra került (a táblázatos részben lévő attribútum nem frissült, ha magának az objektumnak volt azonos nevű fejléc attribútuma)

Változások az 1.10-es verzióban (2017.01.06.)

  • A felügyelt űrlapokkal rendelkező változatnál néhány tipikus konfigurációban javították a munkát (Számvitel, UNF)

Változások az 1.09-es verzióban (2015.07.07.)

  • A "Szülő", "Tulajdonos" mezők megjelenítése hozzáadva
  • A felügyelt felület alatti verzióhoz a modális ablakok nélküli munka biztosított.

Változások az 1.08-as verzióban (2014.04.03.)

    A normál interfész verziójához jobb kompatibilitás a "Manufacturing Enterprise Management" (UPP) 1.3-as konfigurációjában végzett munka során.

Változások az 1.07-es verzióban (2013.04.03.)

    A "kezelt" űrlapokhoz van egy feldolgozási verzió (az automatikus telepítés és frissítés funkció csak a normál űrlapok verziójában van)

    Hiba javítva (az engedélyek a feldolgozási disztribúcióban lettek beállítva)

Változások az 1.06-os verzióban (2012.05.13.)

    Az Objektum verziója mező megjelenítése

    Hiba javítása (nem lehetett csak olvasási jogokat beállítani a feldolgozás során)

Változások az 1.05-ös verzióban (2011.05.04.)

    Hiba javítása (8.2 alatti munka esetén a dokumentum rögzítése nem volt elérhető feladási módban)

Változások az 1.04-es verzióban (2011.04.13.)

    Hiba javítva (8.2 alatti munka esetén az egér dupla kattintása nem nyitja meg a részleteket)

    Most a feldolgozás továbbléphet a referenciatípus attribútumainak megjelenítésére.

    Azaz: tegyük fel, hogy megnyitotta az „Áruk, szolgáltatások értékesítése” dokumentum részleteinek nézetét. BAN BEN ez a dokumentum van egy "Contractor" attribútum a "DirectoryLink.Contractors" típusú. A jobb egérgombbal erre az attribútumra kattintva megkapja helyi menü, amely az „Attribútumadatok” és az „Attribútumadatok új ablakban” tételeket tartalmazza. Az egyik kiválasztásával megtekintheti a megfelelő partner adatait.

Változások az 1.03-as verzióban (2010.10.15.)

    Hozzáadtuk a felhasználók és feldolgozási hozzáférési jogaik beállításának lehetőségét.

Változások az 1.02-es verzióban (2010.08.21.)

    Olyan konfigurációk támogatottak, amelyekben a könyvtár külső feldolgozás"További nyomtatási űrlapok" néven.

Változások az 1.01-es verzióban (2010.01.28.)

    Javítva egy hiba, amely akkor fordult elő, amikor az Object1 üres volt, és az Object2 volt kiválasztva (köszönet a rasswetnek, hogy megmutatta);

    A „részletek” jelölőnégyzet azonnal működik, nem kell a „Megjelenítés”-re kattintani;

    Az „Érték típusa” oszlop átnevezve „Lehetséges értéktípus”-ra, és az ehhez az attribútumhoz a konfigurátorban meghatározott értéktípust mutatja. Az összetett típusú attribútumok esetében az attribútum értéktípusa is megjelenik a megtekintett objektumban.

Ha a feldolgozást csatlakoztatta a konfigurációjához, akkor a frissítéshez:

töltse le a feldolgozást, nyissa meg külsőként, megmondja, mire és hogyan kell kattintani (a "Telepítés" gomb, válassza ki a "Feldolgozás frissítése az adatbázisban", kattintson a "Futtatás" gombra)

Űrlap részletei

Az űrlapattribútumkészlet az űrlapon megjelenített, szerkesztett vagy tárolt adatok tartalmát írja le. Ugyanakkor az űrlaprészletek önmagukban nem teszik lehetővé az adatok megjelenítését és szerkesztését. A megjelenítéshez és szerkesztéshez az űrlapattribútumokhoz társított űrlapelemek (lásd e fejezet "Űrlapelemek" című részét) használatosak. Az összes űrlapattribútum összességét űrlapadatoknak nevezzük.

Fontos! Emlékeztetni kell arra, hogy a hagyományos formákkal ellentétben minden adat kezelt formában részletek formájában kell leírni. Az űrlapelemek adatforrásaként nem használhatók űrlapmodul-változók.

Lehetőség van hozzárendelésre Fő forma attribútum, azaz egy kellék, amely meghatározza az űrlap szabványos funkcionalitását (űrlapkiterjesztés). Emlékeztetni kell arra, hogy az űrlapnak csak egy fő attribútuma lehet.

Űrlapkiterjesztés- Ezt további tulajdonságok, metódusok és a ManagedForm objektum űrlapparaméterei, amelyek az űrlap fő elemét képező objektumra jellemzőek.

Az űrlapok fejlesztése során a Nézet és Szerkesztés tulajdonságok segítségével kifejezetten beállíthatja, hogy bizonyos űrlapattribútumokat tekinthessen meg és szerkeszthessen a szerepkörök összefüggésében (további részletekért lásd a „Szerepkör-alapú űrlapbeállítások” részt a „Szerkesztők” fejezet). Ezenkívül az attribútum elérhetősége magában az űrlapon a funkcionális opciók segítségével konfigurálható (a funkcionális opciókkal kapcsolatos további információkért lásd a „Konfigurációs felület kezelése” című fejezetet).

Form attribútum tulajdonság Mentett adatok azt jelzi, hogy egy kellék interaktív megváltoztatása kísérletet tesz az űrlapadatok szerkesztésre történő zárolására, valamint automatikus telepítés formamódosítás jele.

Kezelt formában elérhető adattípusok

A kezelt űrlap abban is különbözik a normál űrlaptól, hogy milyen adattípusokkal dolgozik. Ha egy normál űrlap az 1C:Enterprise által biztosított legtöbb típussal működik (beleértve a DirectoryObject, DocumentObject stb. típusokat), akkor a kezelt formában a következő típuskategóriák különböztethetők meg:

  • Az űrlapon közvetlenül használt típusok azok, amelyek a vékony és webes kliens oldalán léteznek (például Number, ReferenceReference.Products, GraphicScheme, SpreadsheetDocument);
  • a speciális adattípusokká konvertált típusok kezelt űrlap adattípusok. Az ilyen típusok az űrlapattribútumok listájában jelennek meg zárójelben, például (CatalogObject.Products);
  • dinamikus lista (a részletekért lásd e fejezet „Dinamikus lista” című részét).

Alkalmazásobjektumok átalakítása űrlapadatokká

Egyes alkalmazástípusok (például a DirectoryObject stb.) nem léteznek a vékony és webes kliensek oldalán (további részletekért lásd a Felügyelt alkalmazás fogalma című fejezetet). Ezért az ilyen alkalmazástípusok formájában történő ábrázoláshoz a platform speciális adattípusokat vezetett be, amelyeket a kezelt űrlapokon való használatra terveztek. A felügyelt alkalmazások ezen funkciója szükségessé teszi az alkalmazásobjektumok adattá alakítását (és fordítva).

A következő adattípusok használatosak:

  • FormDataStructure – tetszőleges típusú tulajdonságok halmazát tartalmazza. A tulajdonságok lehetnek más struktúrák, gyűjtemények vagy gyűjteményekkel rendelkező struktúrák. Ezt a típust például DirectoryObject formában ábrázoljuk.
  • A DataFormCollection beírt értékek listája, hasonlóan egy tömbhöz. A gyűjtemény egy eleme index vagy azonosító segítségével érhető el. Előfordulhat, hogy bizonyos esetekben nem elérhető az azonosító. Ez a gyűjtemény által képviselt alkalmazásobjektum típusának köszönhető. Az azonosító bármilyen egész szám lehet. Ez a típus például az űrlapon van ábrázolva táblázatos rész.
  • A FormDataStructureWithCollection egy olyan objektum, amely egyidejűleg struktúraként és gyűjteményként jelenik meg. Úgy kezelhető, mint ezen entitások bármelyike. Ez a típus például rekordkészlet formájában jelenik meg.
  • FormDataTree – hierarchikus adatok tárolására tervezett objektum.

Egy alkalmazásobjektumot egy vagy több űrlapadat-elem képvisel. Általában az űrlapadatok hierarchiája és összetétele a kezelt űrlap alkalmazásobjektumainak összetettségétől és kapcsolatától függ.

Például egy táblázatos szakaszt tartalmazó dokumentumot egy FormDataStructure típusú objektum (maga a dokumentum) ábrázol, amelynek egy FormDataCollection típusú objektum (a dokumentum táblázatos része) van alárendelve.

Fontos! Konfiguráció tervezésekor fontos megjegyezni, hogy az alkalmazásobjektumok csak a szerveren érhetők el, míg az űrlapadat-objektumok mind a szerveren, mind a kliensen használhatók.

Adattovábbítás a kezelt űrlap ügyfél- és szerveroldala között

Valójában azt mondhatjuk, hogy az űrlapadatok a különböző alkalmazásobjektumok adatainak egységes reprezentációja, amelyekkel az űrlap ugyanúgy működik, és amelyek mind a szerveren, mind a kliensen jelen vannak. Vagyis az űrlap saját adattípusok formájában tartalmazza az alkalmazásobjektumok adatainak bizonyos "kivetítését", és szükség esetén konvertál közöttük. Ha azonban a konfigurációfejlesztő saját adatfeldolgozási algoritmust valósít meg, akkor az adatkonverziót (specializált típusokból alkalmazástípusokba és fordítva) egyedül kell végrehajtania.

Űrlapattribútumok speciális szerkesztőben történő szerkesztése során (további részletekért lásd a "Szerkesztők" fejezet "Űrlapattribútumok" című részét) lehetőség van az űrlap működése során a kliens és a szerver közötti adatátvitel befolyásolására. Ehhez használja az attribútumszerkesztő oszlopot. Mindig használd. Ennek a tulajdonságnak a hatása háromféle attribútum esetében különbözik:

  • Egy dinamikus listának alárendelt attribútumhoz (oszlop dinamikus lista):
    • tulajdonság engedélyezve – az attribútum mindig beolvasásra kerül az adatbázisból és szerepel az űrlapadatokban;
    • tulajdonság ki van kapcsolva - az attribútum csak akkor kerül beolvasásra az adatbázisból, és csak akkor kerül be az űrlapadatok közé, ha van ilyen Ebben a pillanatban az attribútumhoz vagy annak alárendelt attribútumához tartozó űrlapelem.
  • A mozgásgyűjtemény alá tartozó kellékek esetében:
    • a tulajdonság engedélyezve van – a dokumentummozgások az adatbázisból kerülnek kiolvasásra, és jelen lesznek az űrlapadatokban;
    • tulajdonság le van tiltva - a dokumentummozgások nem kerülnek kiolvasásra az adatbázisból, és nem szerepelnek az űrlapadatokban (ha nincs dokumentummozgatásokra utaló űrlapelem).
  • Egyéb űrlapadatok:
    • tulajdonság engedélyezve – az attribútum jelen lesz az űrlapadatokban, függetlenül attól, hogy van-e legalább egy űrlapelem, amely az attribútumhoz vagy annak alárendelt attribútumához van társítva;
    • tulajdonság le van tiltva – az attribútum csak akkor lesz jelen az űrlapadatokban, ha az attribútumhoz vagy annak alárendelt attribútumához tartozik űrlapelem. A dinamikus lista kellékekkel ellentétben itt nem számít a kellékhez társított elem láthatósága.

Jegyzet. Ne feledje, hogy a szülőattribútumban beállított tulajdonság minden alárendelt attribútumra hatással van. Például, ha a Use always tulajdonságot a dokumentum táblázatos részénél töröljük, akkor a rendszer úgy tekinti, hogy ez a tulajdonság az összes alárendelt attribútum esetében is törlésre kerül (a tulajdonság aktuális állapota ellenére).

Alkalmazásobjektum-adatok űrlapadatokká konvertálásának módszerei

Az alkalmazásobjektumok adatformátummá alakításához és fordítva, létezik egy sor globális módszer:

  • ValueInFormData(),
  • FormDataToValue(),
  • CopyFormData().

Fontos! Az alkalmazásobjektumokkal működő módszerek csak a szervereljárásokban érhetők el. Az űrlapadatok közötti értékek másolásának módja elérhető a szerveren és a kliensen, mivel nem igényel alkalmazásobjektumokat paraméterként.

Az űrlapadatok alkalmazásobjektummá konvertálásakor figyelembe kell venni a kompatibilitást.

  • ValueToFormData() – egy alkalmazás típusú objektumot űrlapadatokká alakít;
  • FormDataToValue() – az űrlapadatokat alkalmazás típusú objektummá alakítja;
  • CopyFormData() – olyan űrlapadatokat másol, amelyek kompatibilis szerkezettel rendelkeznek. Igaz értéket ad vissza, ha a másolás sikerült, vagy False értéket, ha az objektumok szerkezete nem kompatibilis.

Jegyzet. A fő attribútummal rendelkező űrlap szabványos műveletei (űrlap megnyitása, szabványos Mentés parancs végrehajtása stb.) végrehajtásakor az átalakítás automatikusan megtörténik.

Mutassunk példát arra, hogyan használhatunk adatátalakítást saját algoritmusainkban.

&OnServerCreateProcedureOnServer(hiba, Standard Processing)

ObjectProduct = Directories.Products.FindBy Name("Kávéfőző").GetObject(); ValueVFormData(ObjectItem, Object);

Vége eljárás

&OnClient eljárás Write()

WriteOnServer();

Vége eljárás

&AtServer eljárás WriteAtServer()

ObjectItem = FormDataToValue(Object, Type("KatalógusObject.Products")); ObjectItem.Write();

Vége eljárás

A ManagedForm objektum metódusai is elérhetők a szerveren:

  • ValueVFormAttribute() – egy alkalmazás típusú objektumot a megadott űrlapattribútummá alakít.
  • FormAttributeToValue() – az űrlapadat attribútumot alkalmazás típusú objektummá alakítja.

Ezeknek a módszereknek a használata általában kényelmesebb, mivel információval rendelkeznek például a form attribútum típusáról. Ezenkívül a FormAttributeToValue() metódus beállítja az űrlapadatok és az objektum közötti megfelelést, amelyet az üzenetek generálásakor használnak. Erről bővebben a „Navigációs szolgáltatás opciók” című fejezetben olvashat.

Nézzünk egy példát ezeknek a módszereknek a használatára.

&AtServer eljárás RecalculateAtServer()

// Az Object attribútumot alkalmazásobjektummá alakítja. Document = FormAttributeToValue("Object"); // Újraszámítást hajt végre a dokumentum modulban meghatározott módszerrel. Document.Recalculate(); // Az alkalmazásobjektumot visszaalakítja kellékekké. ValueVFormAttribute(Document, "Object");

Vége eljárás

Szoftver interfész

FormDataTree (FormDataTree)

  • FindById (FindById)
  • GetItems (GetItems)

Leírás:

Egy fa modellezésére tervezték kezelt űrlapadatokban.

Ez az objektum szerializálható XDTO-ba/XDTO-ból. Az adott objektumnak megfelelő XDTO típus a névtérben van definiálva. XDTO típusnév:

GetItems (GetItems)

Szintaxis:

Get Items()

Visszatérési érték:

Típus: FormDataTreeItemsCollection.

Leírás:

Legfelső szintű faelemek gyűjteményét kapja.

Elérhetőség: kliens, szerver, vékony kliens, webkliens.

FindById (FindById)

Szintaxis:

FindByID(<Идентификатор>)

Lehetőségek:

<Идентификатор>(kívánt)

Típus: Szám. Fa elem azonosítója.

Visszatérési érték:

Típus: FormDataTreeElement.

Leírás:

A gyűjtemény egy elemét azonosító alapján kapja meg.

Elérhetőség: kliens, szerver, vékony kliens, webkliens.

FormDataTreeItem (FormDataTreeItem)

Tulajdonságok:

<Имя свойства> (<Имя свойства>)

  • GetId (GetId)
  • GetParent (GetParent)
  • GetItems (GetItems)
  • Ingatlan

Leírás:

Az űrlap adatfa eleme.

FormDataTreeItemCollection (FormDataTreeItemCollection)

Gyűjteményelemek: DataFormElementTree

Egy objektum esetében lehetőség van a gyűjtemény bejárására a For every ... From ... Loop operátorral. A bejárás a gyűjtemény elemeit választja ki. Egy gyűjtemény eleméhez a [...] operátor segítségével lehet hozzáférni. Az elem indexe argumentumként kerül átadásra.

  • Beszúrás
  • Hozzáadás
  • Index (IndexOf)
  • Számol
  • Egyértelmű
  • Kap (kap)
  • Mozog
  • Töröl

Leírás:

Fa elemek gyűjteménye.

Elérhetőség: kliens, szerver, vékony kliens, webkliens.

Lásd még:

  • DataFormItemTree, GetItems metódus
  • FormDataTree, GetItems metódus

Az értékfával való munka jellemzői

Fa frissítés

Van egy probléma esik platformokon a fa frissítésekor.

Ha egy csomópont ki lett bővítve a fában és egy alárendelt csomópont lett kiválasztva, akkor a fa frissítésekor a függvény ValueInDataForms platform összeomlik.

Megoldás: a frissítés előtt törölnie kell a fát.

Például:

&OnServer eljárás ClearTree(elements) Az elemek minden egyes eleméhez Loop ClearTree(element.GetElements()); EndCycle; elemek.Clear(); Vége eljárás

&AtServer eljárás FillConceptTree() dConcepts = cProperties.BuildConceptTree(OnDate, Meta.CurrentIB()); ClearTree(Concept Tree.GetItems()); ValueVFormData(dConcepts, Concept Tree); Vége eljárás

&Az ügyfél-eljárásban OnDateOnChange(Element) FillConceptTree(); Vége eljárás

Nyomtatás (Ctrl+P)

Az alkalmazásobjektumok adatformátummá alakításához és fordítva, létezik egy sor globális módszer:

  • ValueInFormData(),
  • FormDataToValue(),
  • CopyFormData().

Az alkalmazásobjektumokkal működő módszerek csak a szervereljárásokban érhetők el. Az űrlapadatok közötti értékek másolásának módja elérhető a szerveren és a kliensen, mivel nem igényel alkalmazásobjektumokat paraméterként.

Az űrlapadatok alkalmazásobjektummá konvertálásakor figyelembe kell venni a kompatibilitást.

  • ValueInDataForms() – Alkalmazástípusú objektumot form adatokká alakít át.
  • FormDataToValue() - átalakítja az űrlap adatait egy alkalmazás típusú objektummá.
  • CopyDataForms() - olyan űrlapadatokat másol, amelyek kompatibilis szerkezettel rendelkeznek. Igaz értéket ad vissza, ha a másolás sikerült, vagy False értéket, ha az objektumok szerkezete nem kompatibilis.

Amikor az űrlapadatokat alkalmazásobjektummá konvertálja, és fordítva, az objektum-gyorsítótárat használja, de az objektum gyorsítótárban lévő verzióját ellenőrzi a relevancia szempontjából.

JEGYZET. Normál műveletek (űrlap megnyitása, szabványos Write parancs végrehajtása stb.) végrehajtásakor a fő attribútummal rendelkező űrlapon az átalakítás automatikusan megtörténik.

Mutassunk példát arra, hogyan használhatunk adatátalakítást saját algoritmusainkban.

&A szerveren
Eljárás a CreationOnServeren (hiba, szabványos feldolgozás)
ObjectProduct = Goods.FindByName("Kávékanna").GetObject(); ValueVFormData(ObjectItem, Object);
Vége eljárás
&AtClient
Write() eljárás
WriteOnServer();
Vége eljárás
&A szerveren
WriteOnServer() eljárás
ObjectItem = FormDataToValue(Object,Type("KatalógusObject.Termékek"));
ObjectItem.Write();
Vége eljárás

Ezenkívül a ClientApplicationForm objektum metódusokkal rendelkezik a kiszolgálón:

  • ValueVPropsForm() - egy alkalmazás típusú objektumot a megadott form attribútummá alakít.
  • PropsFormValue() - átalakítja az űrlapadat attribútumot egy alkalmazás típusú objektummá.

Ezeknek a módszereknek a használata általában kényelmesebb, mivel információval rendelkeznek például a form attribútum típusáról. Ezenkívül a FormAttributeToValue() metódus beállítja az űrlapadatok és az objektum közötti megfelelést, amelyet az üzenetek generálásakor használnak.

Nem szabad elfelejteni, hogy a ValueTable vagy ValueTree típusú objektumok űrlapadatokká alakításakor (mind a ValueToFormData() metódussal, mind a ValueToFormAttribute() metódussal) a következő jellemzőt kell figyelembe venni: a konvertált objektumnak tartalmaznia kell az összes az adatűrlapokon létező oszlopok.

FIGYELEM! Az adatokhoz nem társított attribútumoszlopok nem vesznek részt az űrlapadatok és az objektumok közötti értékkonverzióban információs bázisés vissza. Az objektumadatokban nem szereplő oszlopok törlődnek az űrlapadatokká konvertáláskor.

Amikor egy objektumot a keretrendszer átad az űrlapadatokba, vagy amikor metódusokat hívnak meg ValueInDataForms(), ValueVPropsForm(), csak az objektumadatok kerülnek átvitelre. Az objektum belső állapota nem kerül át az űrlapadatokba. Például egy új hivatkozás értéke, amelyet a metódus egy objektumra állít be SetReferenceNew(), elvész az objektum adatformává alakításakor és fordítva.

A módszerek első paramétereként PropsFormValue() És FormDataToValue() csak a következő típusú formattribútumok lehetnek:

  • DataFormStructure,
  • DataForm Gyűjtemény,
  • DataFormStructureWithCollection,
  • FormDataTree.

Nézzünk egy példát ezeknek a módszereknek a használatára.

&A szerveren
Eljárás RecalculateOnServer()
// Az Object attribútumot alkalmazásobjektummá alakítja. Document = FormAttributeToValue("Object");
// Újraszámítást hajt végre a dokumentum modulban meghatározott módszerrel. Document.Recalculate();
// Az alkalmazásobjektumot visszaalakítja kellékekké. ValueVFormAttribute(Document, "Object");
Vége eljárás