1c a kiválasztási paraméterekben állítsa be a csoport nevét. Kijelölési paraméterek és kiválasztási paraméter-társítások beállítása metaadat-objektumokhoz. DescriptionofTypesInventory = NewDescriptionofTypes(tömb)

Azért, hogy nyissa meg a kiválasztási űrlapot a kiválasztással 1s-ben 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 kódpélda:

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

A fenti példában megnéztük hogyan állítsuk be a kijelölést a kiválasztási űrlapon meghatározott érték szerint. Most nézzünk meg egy olyan helyzetet, amikor több értéket kell helyettesítenie, ez lehet például egy tömb, vagy egy lekérdezés eredménye lehet. Ez egy kijelölés az 1c 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 a listában az összehasonlítás típusának beállításakor egy objektum csak a típussal lehet jelen ListValues. Elemeket adunk a tömbhöz, majd betöltjük ezt a tömböt az Értéklistába, amit utólag beállítunk a kijelölésben. Ezenkívül ne felejtse el engedélyezni a zászlót ennek a kijelölésnek a használatához, és állítsa be az összehasonlítás típusát.

Kiválasztás beállítása az űrlap beviteli mezőjében az 1C 8.3, Kijelölés kezdete eseményben

Most fontoljuk meg kiválasztás a beviteli mezőben be kezelhető formában az 1C 8.3. Keressük meg az űrlapon a minket érdeklő elemet, amiben beállítjuk a kijelölést, esetünkben ez a „Szervezet” mező. Megtaláljuk a „Kiválasztás kezdete” eseményt, rákattintunk a nagyítóra, és az eljárásban találjuk magunkat. Látjuk a Selection Data paramétert; 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 &OnServer fordítási direktívával hozunk létre egy eljárást. Ebben az eljárásban töltse ki a Kijelölési adatokat.

/
Fejlesztők /
Kódolási egyezmények

Kijelölési opciók és kiválasztási opció-társítások beállítása metaadat-objektumokhoz

1. Általános szabály, hogy az üzleti logikai korlátozásoknak, például a kiválasztási korlátozásoknak azonosaknak kell lenniük minden olyan űrlapon, amelyben egy adott 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 közötti kapcsolatokat.

2. Előfordulhatnak azonban olyan esetek, amikor a kiválasztási korlátozások az adott működési forgató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 Alkalmazott típusa(felsorolás értékekkel Alapvető/Részmunkaidős);
  • dokumentum Fogadási rend, amely kellékeket tartalmaz SzervezetÉs Munkavállaló; míg a kellékekért Munkavállaló dokumentum Fogadási rend kiválasztási paraméter kapcsolat van megadva Kiválasztás. Szervezet 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 kulcsfontosságú alkalmazottakat válasszunk ki SelectOnlyFromEmployeesBasics. Ehhez szükséges

  • dokumentum formájában Fogadási rend további űrlapattribútumok megvalósítása Alkalmazottak típusai,
  • majd az űrlapmezőhöz Munkavállaló kiválasztási paraméter linket lehet létrehozni Kiválasztás. Alkalmazott típusaűrlap részleteivel Alkalmazottak típusai,
  • ebben az esetben az űrlap részleteit Alkalmazottak típusai funkcionális lehetőség elemzése alapján töltjük ki.

(Ugyanakkor állítsa be a kellékeket Munkavállaló dokumentum Fogadási rend link a kiválasztási paraméterhez Kiválasztás. Alkalmazott típusa nincs lehetőség, mert kellékek Alkalmazott típusa a dokumentumban Fogadási rend nem létezik.)

Ezután állítsa be a kapcsolatot a paraméterhez Kiválasztás. Szervezet kellék tulajdonságaiban Munkavállaló dokumentum Fogadási rendés a paraméterhez tartozó kapcsolatokat Kiválasztás. Alkalmazott típusa a dokumentum űrlap mezőben Fogadási rend ahhoz a tényhez vezet, hogy a módban 1C: Vállalkozások Mindkét kiválasztási paraméter hivatkozás működni fog. Így a munkaerő-felvételi megbízási űrlapon szereplő munkavállaló kiválasztásakor a munkavállalók listáján 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 a kiválasztási űrlapokat az új felügyelt felületen.

Korábban a " rendszeres alkalmazása"Így írtunk:

form = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

Ezen operátorok között módosíthatjuk az űrlap tulajdonságait, például beállíthatjuk a kijelölést. Megadhatnánk egy konkrét formát név szerint. Lehetne változtatni kinézet, az űrlapelem tulajdonságait a nevük alapján egy ponton keresztül éri el (form.Button1.Visibility = False;)

Most van egy kezelt felületünk, és itt minden más. A probléma a kód szerver és kliens részekre osztása. 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 megnyitott kiválasztási űrlapnak).

Mivel az űrlapok csak az ügyfélen nyithatók meg, ez egy kliensoldali kódrészlet lesz. A függvényt fogjuk használni EnterValue(<Значение>, <Подсказка>, <Тип>) . Valójában minden világos a leírásából. Visszaadja a jelzőt, hogy a felhasználó választott-e; az első paraméterben átadjuk azt a tárolót, amelybe a kiválasztási érték visszakerül, a második szövegben, amely a kiválasztási ablak címében, a harmadik tömbben jelenik meg. típusok.

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

Változó SelectTMC;

ArrayTypes = Új tömb;

Típusok leírásaTMC = NewDescriptionofTypes(Array);

Ha EnterValue (készlet kiválasztása, "Cikk kiválasztása", készlettípusok leírása) akkor

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

endIf;

Hozzáteszem, hogy ha bármilyen értéket rendelünk a konténerváltozónkhoz, mielőtt kiválasztanánk, akkor az lesz az alapértelmezett érték. Ebben az esetben nem kell típustömböt képeznie, a típust a rendszer a tárolóban lévő értékből veszi.

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

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

Esetünkben a kiválasztott értéket egy bizonyos változóba kell bevinnünk, és a feldolgozást a kiválasztott érték figyelembevételével kell folytatnunk, anélkül, hogy a vezérlést más eljárásokra ruháznánk át. Ezért megfelelni fog nekünk 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 előre elmagyarázza a felhasználónak, 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 megjelölünk egy sort a "Címtár. Vállalkozók szerződései. Kiválasztási űrlap" űrlap teljes elérési útjával. A másodikban a kiválasztási paramétereket jelezzük, róluk lentebb. A harmadikban - a tulajdonos - ez egy űrlap vagy 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 következő sor megfelelő:

&OnClient

Eljárási parancs1 (parancs)

res = OpenFormModal("Könyvtár. Vállalkozók szerződései. Kiválasztási űrlap");

Az eljárás vége

De ez az 1. módszer teljes analógja, és látni fogunk egy űrlapot az összes szerződés kiválasztásához, anélkül, hogy a tulajdonos kiválasztaná. Azok. Ez csak akkor tehető 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 adhat meg. Feldolgozásukat az eljárásban le kell írni Amikor CreatedOnServer a kiválasztási űrlap modulban. Ez nem jó nekünk, mert... Módosítanom kell a konfigurációt. A kijelölési struktúrát a paraméterstruktúrában található „selection” gombbal is átadhatja. Ekkor a kiválasztási struktúra összes mezője az elemlista kiválasztásához kerül felhasználásra, és nem lesz elérhető a felhasználó számára sem megtekintésre, sem módosításra.

Példámban a feldolgozásban egy kiválasztási mezőt rajzoltam, amely a feldolgozási űrlap attribútumra hivatkozik "partner" adattípussal " DirectoryLink.Counterparties". és a következő kódrészletet írta:

&OnClient

Eljárási parancs1 (parancs)

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

SelectionParameters = New Structure("Kiválasztás", Kijelölés);

res = OpenFormModal("Könyvtár. Vállalkozók szerződései. Kiválasztási űrlap", Kiválasztási paraméterek);

Az eljárás vége

Ez általában elegendő a legtöbb probléma megoldásához, és nem igényel konfigurációs beavatkozást. A „When CreatedOnServer” eljárás kiválasztási űrlapján azonban a kijelölés elveszhet. 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, hogy a kijelölés átment-e a nyitó paraméterekben.

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




Top