1c a kiválasztási paraméterekben adja meg a csoport nevét. Állítsa be a metaadat-objektumok kijelölési beállításait és kijelölési lehetőség hivatkozásait. ItemTypeDescription = Új típusleírás (tömb)

Azért, hogy nyisson meg egy kiválasztási űrlapot az 1s-ben történő kiválasztással 8.2(normál formák), végre kell hajtanunk néhány műveletet. Előbb megszerezzük. Ezután beállítjuk a kijelölést és programozottan megnyitjuk, itt van egy példakód:

Kiválasztás az űrlapon az 1C 8.2 beviteli mezőben több értékkel

A fenti példában figyelembe vettük hogyan kell kiválasztani a kiválasztási űrlapon meghatározott érték szerint. Most nézzük meg azt a helyzetet, amikor több értéket kell helyettesítenie, például lehet egy tömb és egy lekérdezés eredményéből való kirakodás is. Ez egy kijelölés az 1s beviteli mezőben többféle jelentéssel.

Először megkapjuk a kiválasztási űrlapot, átadjuk az "Elemet" (tulajdonos) a paraméterekben, beállítjuk a kiválasztási mód jelzőjét. Ezután létrehozunk egy értéklistát és egy tömböt, megjegyezzük, hogy kijelölésként, amikor a listában az összehasonlítás típusa be van állítva, csak olyan objektum lehet, amelynek típusa Értékek listája. A tömbhöz elemeket adunk, majd ezt a tömböt betöltjük az Értéklistába, amit ennek eredményeként beállítunk a kijelölésben. Ezenkívül ne felejtse el engedélyezni a jelzőt a kijelölés használatához, és állítsa be az összehasonlítás típusát.

A kijelölés beállítása a beviteli mezőben az 1C 8.3 űrlapon, a StartChoice esemény

Most fontolja meg kiválasztás a beviteli mezőben kezelt formában az 1C 8.3. Keressük meg az űrlapon a minket érdeklő elemet, amiben beállítjuk a kiválasztást, esetünkben ez a "Szervezet" mező. Megtaláljuk a „StartChoice” eseményt, kattintsunk a nagyítóra, és az eljárásban találjuk magunkat. A ChoiceData paramétert látjuk, ez a paraméter ValueList típusú. Ahhoz, hogy a kiválasztást a szükséges elemekre korlátozzuk, ki kell töltenünk az Értéklistát. Csak a szerveren tudunk elemeket kiválasztani, ezért az &AtServer fordítási direktívával készítünk egy eljárást. Ebben az eljárásban kitöltjük a Választási adatokat.

/
Fejlesztők /
Kódkonvenciók

Kijelölési paraméterek és kiválasztási paraméter-kapcsolatok beállítása metaadat-objektumokhoz

1. Általános szabály, hogy az ilyen üzleti logikai korlátozásoknak, mint a kiválasztási korlátozásoknak azonosaknak kell lenniük minden olyan űrlapon, amelyben ez vagy az objektum szerkesztve van. Ezért javasolt a metaadat objektumok tulajdonságaiban - a könyvtárak, dokumentumok stb. részleteiben - beállítani a kiválasztási paramétereket és a kiválasztási paraméterek összekapcsolását.

2. Előfordulhatnak azonban olyan esetek, amikor a választás korlátai az adott munkaforgatókönyvtől függhetnek. Ilyen esetekben a kiválasztási paraméterek helyben, meghatározott formában adhatók meg.

Például a konfiguráció tartalmazza

  • Könyvtár Alkalmazottak, amely részleteket tartalmaz SzervezetÉs TípusAlkalmazott(felsorolás értékekkel Alapvető/részmunkaidős munkavállaló);
  • dokumentum Rendelés a Felvételről, amelynek kellékei vannak SzervezetÉs Munkavállaló; míg a kellékeknek Munkavállaló dokumentum Rendelés a Felvételről kiválasztási paraméter kapcsolatkészlet Kiválasztás, szervezés kellékekkel Szervezet.

Meg kell valósítani azt a képességet, hogy a funkcionális opció értékétől függően csak a fő alkalmazottakat válasszuk ki Válassza a Csak az alapvető alkalmazottaktól lehetőséget. Ehhez szükséges

  • dokumentum formájában Rendelés a Felvételről további formai kellékeket valósítson meg KindsEmployees,
  • majd az űrlapmezőhöz Munkavállaló kiválasztási paraméter kapcsolat létrehozható Selection.TypeEmployee forma kellékekkel KindsEmployees,
  • míg a forma kellékek KindsEmployees a funkcionális lehetőség elemzése alapján kerül kitöltésre.

(Míg kellékekre van állítva Munkavállaló dokumentum Rendelés a Felvételről link a kiválasztási paraméterhez Selection.TypeEmployee nincs lehetőség, mert kellékek TípusAlkalmazott dokumentumban Rendelés a Felvételről nem létezik.)

Ezután állítsa be a kapcsolatot a paraméterhez Kiválasztás, szervezés kellékek tulajdonságaiban Munkavállaló dokumentum Rendelés a Felvételrőlés hivatkozások a paraméterhez Selection.TypeEmployee a dokumentum űrlap mezőben Rendelés a Felvételről oda vezet, hogy be 1C: Vállalati mindkét kiválasztási paraméter hivatkozás működni fog. Így a munkavállaló átvételi megbízás formájában történő kiválasztásakor az alkalmazottak listájában a kiválasztást mind a dokumentumban kitöltött szervezet, mind a munkavállaló típusa határozza meg, amelyet a funkcionális lehetőség alapján határoznak meg.

Jó napot.

Ma arról fogunk beszélni, hogyan lehet programozottan megnyitni kiválasztott űrlapokat az új felügyelt felületen.

Korábban a "rendes alkalmazásban" így írtuk:

form = Directory.nomenclature.GetSelectionForm();

Választás eredménye = form.openModal();

Ezen utasítások között módosíthatjuk az űrlap tulajdonságait, például beállíthatunk egy kijelölést. Megadhatnánk egy konkrét formát név szerint. Lehetne változtatni kinézet, az űrlap elem tulajdonságaira utalva ponttal elválasztott nevükkel (form.Button1.Visibility = False;)

Most van egy kezelt felületünk, és itt minden más. A csapda a kód szerver részre és kliens részre való felosztásában van. Az objektumokhoz és azok metaadataihoz csak a szerveren tudunk hozzáférni, az űrlapokat a kliensen kell megnyitnunk.

Tehát kezdjük.

1. A legegyszerűbb eset az, amikor nem kell a kijelölést kezelnünk (kijelöléseket beállítani, paramétereket átadni a megnyíló kiválasztási űrlapnak).

Mivel az űrlapok csak az ügyfélen nyithatók meg, ez lesz az ügyfél kódrészlete. A függvényt fogjuk használni EnterValue(<Значение>, <Подсказка>, <Тип>) . Valójában minden világos a leírásából. Egy jelzőt ad vissza, hogy a kijelölést a felhasználó végezte-e el, az első paraméterben átadjuk azt a konténert, amelyben a kiválasztási érték visszakerül, a második szövegben, ami a kiválasztási ablak címében jelenik meg, a típusok harmadik tömbje.

Íme egy példa a felhasználásra:

Változó Select TMC;

ArrayTypes = Új tömb;

ItemTypeDescription = Új típusleírás(tömb);

Ha EnterValue(Kiválasztott áruk és anyagok, "Cikk kiválasztása", Áru- és anyagtípusok leírása) Akkor

//A kiválasztott érték feldolgozása

EndIf;

Hozzáteszem, ha a választás előtt értéket rendelünk a konténerváltozónkhoz, akkor ez lesz az alapértelmezett érték. Ebben az esetben nem lehet típustömböt képezni, a típus a tárolóban lévő értékből lesz véve.

2. Néha egy érték kiválasztása előtt be kell állítanunk néhány szűrőt és kiválasztási paramétert. Például ki kell választanunk egy partnerszerződést. Az első mód megnyitja számunkra az összes szerződést, de tulajdonos szerint kell kiválasztanunk.

Az űrlapok megnyitásának két módja van: OpenFormÉs OpenFormModal. Az első módszernél megnyitjuk az űrlapot, és az a kódrészlet, amelyből az űrlapot megnyitottuk, tovább fut, anélkül, hogy megkapná a kijelölés eredményét. A kiválasztás eredménye a hívás módjától függően vagy a beviteli mezőbe kerül, vagy az előre meghatározott „Választás feldolgozása” eljárásban érkezik.

Esetünkben a kiválasztott értéket valamilyen változóba kell bevinnünk, és a feldolgozást a kiválasztott érték figyelembevételével folytatnunk kell anélkül, hogy a vezérlést más eljárásokra ruháznánk át. Ezért nekünk megfelel OpenFormModal.

Azonnal lefoglalom, hogy ez rossz módszer egy webes felületre, mert A modális ablakok egy új böngészőablakban nyílnak meg, amely általában le van tiltva. De ha a felhasználónak előre elmagyarázzák, hogy mi az, akkor azt hiszem, megbirkózik ezzel a problémával))

Tehát nézzük az eljárás leírását, 4 paramétere van. Az elsőben egy karakterláncot adunk meg a "Címtár. Partnerek szerződései. Választási űrlap" űrlap teljes elérési útjával. A másodikban megadjuk a kiválasztási paramétereket, ezekről alább. A harmadikban - a tulajdonos - ez egy űrlap vagy egy kiválasztási mező, amely megkapja a kiválasztás eredményét, nem töltjük ki. A negyedik paramétert szintén nem használjuk esetünkben.

Tehát egy egyszerű kiválasztáshoz a vonal megfelel nekünk:

&AtClient

Eljárási parancs1 (parancs)

cut = OpenFormModally("Könyvtár. Partnerek szerződései. Választási űrlap");

Vége eljárás

De ez az 1. módszer teljes analógja, és látni fogjuk az összes szerződés kiválasztására szolgáló űrlapot, anélkül, hogy a tulajdonos kiválasztaná. Azok. ezt csak akkor tehetjük meg, ha meg akarjuk adni a kiválasztási űrlap nevét.

A kiválasztás beállításához a második paraméter lesz segítségünkre.

A második paraméter "Struktúra" típusú. Struktúraelemként a kiválasztási űrlap "paraméterek" fülén hozzáadott űrlapparamétereket adhatja meg. Kezelésüket az eljárásban le kell írni OnCreateOnServer az űrlap kiválasztása modulban. Ez nem jó nekünk, mert. módosítania kell a konfigurációt. Kiválasztási struktúrát is átadhat a paraméterstruktúrában található "selection" gombbal. Ekkor a kijelölési struktúra összes mezője az elemlista kiválasztásához kerül felhasználásra, és nem érhető el a felhasználó számára sem megtekintésre, sem szerkesztésre.

Példámban a feldolgozásban kijelölő mezőt rajzoltam, utalva a feldolgozási űrlap propra "vállalkozó" adattípussal " DirectoryLink.Contractors". és a következő kódrészletet írta:

&AtClient

Eljárási parancs1 (parancs)

Kijelölések = New Structure("Tulajdonos", Ügyfél);

SelectionParameters = New Structure("Kijelölés", Kijelölések);

cut = OpenFormModally("Könyvtár. Partnerek megállapodásai. Választási űrlap",ChoiceParameters);

Vége eljárás

Ez általában elegendő a legtöbb probléma megoldásához, és nem igényel konfigurációs beavatkozást. Az "OnCreateOnServer" eljárásban a kiválasztási űrlapon azonban a kiválasztás elrontható. Ezért a módszer használata előtt tekintse át ezt az eljárást a megnyitott kiválasztási űrlapon. A görbe fejlesztők ott könnyen beállíthatják "alapértelmezetten" a kiválasztásukat, elfelejtve ellenőrizni a kiválasztás átadását a nyitó paraméterekben.

Mára ennyi, köszönöm a figyelmet.




Top