A beállítások linkerének árnyalatai. Válogatás a jelentésekben. A beállítások linker munkájának árnyalatai Állítsa be a kezelt űrlap standard beállításait 1c

25.01.2021 Vélemények

Feltételezem, hogy nem kell megmondani, mi az ACS, a beállítások linkerje és általában az ACS-sel való együttműködésre tervezett objektumok teljes halmaza. A fő felhasználási területek a kódban végrehajtott trükkös műveleteken kívül a dinamikus listák és jelentések, és mindkét esetben igen jelentős funkcionalitás marad a színfalak mögött. Gyakran nem is gondolunk a viselkedés logikájára és a folyamat összes résztvevőjének kapcsolatára, mert általában meglehetősen egyszerű feladatokat oldunk meg, vagy a platform alapértelmezéseire hagyatkozunk. De ahol alapértelmezések vannak, ott van egy belső logika is, egyfajta „rosszszolgálat” az 1C-nek, aminek a gyümölcse néha nehéz és nem nyilvánvaló a kívánt hatás eléréséhez, ugyanakkor elég csak a szerszámokat megfelelően.

Az érdeklődők kihagyhatják az 1-4.

Megpróbálok kicsit bővebben foglalkozni az ACS-szelekciók munkájával a jelentésekben való felhasználásuk esetére. Úgy gondolom, hogy a dinamikus listák viselkedése, számos fenntartással, szoros lesz. Szóval, a válogatások a beszámolókban, egy kis elmélet, majd konkrét példák.

Az SP 8.3.6 és újabb verzióit, az ITS szakaszait (10.3.7.5. szakasz stb.), a „Szakmai fejlesztés az 1C-Enterprise 8 rendszerben” (Kazan, 2012, második kötet) című könyvet használják. E. Khrustaleva könyvében ebben a témában semmi érthetőt nem találtak.

1. rész

A beállításkészítő, mint tudja, a "Beállítások", "Rögzített beállítások" (a továbbiakban "FN") és "Egyéni beállítások" (a továbbiakban "PN") gyűjteményével rendelkezik. Egy jelentésnek több lehetősége is lehet, míg az opció, az N, PN és FN közötti kapcsolatok nagyon sajátosak. Illetve ne feledkezzünk meg az elérhető beállítások forrásáról, és annak „elődjéről”, ami általában maga a séma, amelynek szintén megvannak a maga alapértelmezett beállításai.

* Beállítások - a Konfigurátor módban létrehozott és a jelentés verziójának szerkesztési módjában módosított beállítások;

* UserSettings - beállítások, amelyeket a felhasználó megváltoztat az "1C:Enterprise" módban, pusztán interfész;

* FixedSettings - azok a beállítások, amelyek a beépített nyelvből vannak beállítva, beleértve a a rendszer implicit módon beállítja. Ez a tulajdonság kiválasztási értékeket tartalmaz, amelyeket a paraméterei segítségével továbbít az űrlapnak ("Kiválasztás" szerkezet).

A beállítások és az FN felépítése hasonló, és van egy „Adatösszetétel kiválasztása” típusú „Kiválasztás” gyűjtemény, amely a jelentés fennállása alatt bármikor módosítható. Ugyanakkor a Beállítások a variáns szerkesztésével módosíthatók a felületen, de az FN egyáltalán nem érhető el. A PN pedig egy „kása”, ahol egyenrangú elemek lehetnek maga a „Kijelölés” és az „Adatösszetétel kijelölési elem” típusú különálló objektumok (az úgynevezett beágyazott objektum). A megfelelő módszerek rendelkezésre állása ellenére lehetetlen programozottan megváltoztatni a PN-elemek gyűjteményének összetételét, ha ez maga a jelentés PN-je, és nem a konstruktőr készítette a semmiből - az 1C azt jelenti, hogy „Gyűjtemény felhasználói beállítások nem módosíthatja az összetételét, mivel az adatösszetételi beállításokhoz kapcsolódik. Az ITS azt mondja, hogy "A tulajdonság nem írható a beépített nyelvvel.", de mint később látni fogjuk, lehetséges a PN befolyásolása. Az objektumok "kása" belső kapcsolatokkal rendelkezik - jelentéskészítéskor és az összetétel megváltoztatásakor ellenőrzi a feltételek konzisztenciáját. Az ITS-en ezt olvashatjuk: „Azok az elemek, amelyek önmagukban egyediként vannak megjelölve, nem kerülnek hozzáadásra. Például egy egyéni kijelölés nem tartalmaz olyan kiválasztási elemet, amely egyéniként van megjelölve. Tartalmazó elemek egyedi elemek. Például egy feltételcsoport nem kerül hozzáadásra, ha ez a csoport egyéniként megjelölt elemeket tartalmaz. A beágyazott elemek esetében a DisplayMode tulajdonság nem kerül elemzésre. A szülő elemekkel együtt hozzáadódnak vagy nem. Így a tárgyak „időssége” a színfalak mögött működik. Ebben az esetben akkor érheti el a hatást, ha az interfész lehetővé teszi, hogy ütköző kijelöléseket adjon meg a változathoz és annak ST-jéhez, valamint az ST-n belül.

Úgy tűnik, hogy az „idősebb” egy lehetőség. De a "További" / "Módosítási opció" gombra kattintva és a megnyitott űrlapon végrehajtott módosítások megerősítésével meghívja az űrlap eseménykezelőjét , míg a kijelölés megjelenik az "Alap" panelen a "Beállítások..."-ból meghívott űrlapon, és megjelenik a jelentés űrlapon, de NEM jelenik meg a "Kiválasztás" lapon; sőt, vagy azonnal megjelenik mind a jelentés főlapján, mind a "Beállítások..." űrlapon (ha van "Felvétel a felhasználói beállításokban" jelző), vagy se ott, se ott. De mindenesetre NEM lesz a "Beállítások..." űrlap "Kiválasztás" fülén. A "Beállítások..." űrlap "Alap" füle és a fő jelentési űrlap közötti különbséget a "Szerkesztési mód" mező határozza meg (normál - csak a "Beállítások", gyors - magán a jelentés űrlapon is) , de ezt szerintem mindenki tudja. Egyébként a „Kiválasztás” és a „Gyors” értékei semmilyen módon nincsenek szinkronizálva, és ellentmondhatnak egymásnak, de a „Gyors” a jelentés űrlapon és a beállítási űrlapon szigorúan szinkronban van. Tehát egy változat szerkesztésekor maga megváltozik (de az azonosítója és a neve nem változik), de a PN-ek NEM maradnak módosulva (vagyis még akkor sem, ha róluk beszélünk, azaz a zászlóról, amely egy vagy másik elemet tartalmazhat a PN ).

A "Válasszon opciót..." gombra kattintva és a megnyílt űrlapon a változtatások megerősítésével az események a következő sorrendben indulnak el:

WhenLoadingVariantOnServer

Amikor frissíti a felhasználói beállítások összetételét a szerveren

Ebben az esetben sem az opció, sem a PN nem változik semmilyen módon. Ebből jól látható, hogy az opció és a beállítások, ha össze vannak kötve, semmiképpen sem kapcsolódnak közvetlenül.

A "Beállítások..." gombra kattintva és a megnyílt űrlapon a változtatások megerősítésével csak esemény indul Amikor frissíti a felhasználói beállítások összetételét a szerveren(ugyanakkor a PN-ek módosulnak, de a reprezentációk és a kulcs (ha nem voltak ott) nem érkeznek meg; ha a „Kiválasztás” PN objektum elemeinél engedélyezve van a „Gyors”, akkor a „Kiválasztás” mellett ”, elemei maguk is mezőként jelennek meg, azaz .a beágyazott elemekhez hasonlóan viselkedik. Az elvégzett beállítások a bezáráskor mentésre kerülnek, és az űrlap következő belépéskor visszaállnak. Nem érinti és nem módosítja a lehetőséget.

Kattintson a "Továbbiak" / "Telepítés" gombra szabványos beállítások" a beállítások űrlapon (valamint a "Normál beállítások" elem egy változat szerkesztésében) csak az eseményt okozza Amikor frissíti a felhasználói beállítások összetételét a szerveren. Ebben az esetben az opció módosul, de a PN-ek megváltoznak. Ha a változatot korábban megváltoztatták, az változott marad (sem a megváltozott jelző visszaállítása, sem a ténylegesen elvégzett beállítások visszaállítása).

A változatszerkesztési űrlap szerkezetfájában a "Felhasználói beállítások elem tulajdonságai" gombra kattintva hozzáadja a "Kiválasztás" objektumot, és az üresnek bizonyul, és nem szinkronizálódik a már meglévő változatkijelöléssel és a meglévő beágyazott kijelölési elemekkel. A változat semmilyen módon nem változik.

Ezért a javaslat: ha a „Konfigurátor” módban be kell állítani néhány kijelölést, hogy ne vacakoljon a kóddal, és ne legyenek az opcióban, hanem a jelentés felületén legyenek, akkor ne módosítsa a kijelölést. az opció elemei, megváltoztatva azok tulajdonságait, de maga a kijelölés , az "Elem tulajdonságai..." és a "Felhasználói beállítások" gombok.

Ha a Beállításokban megjelent valamit hozzá kell adni a PN-hez, akkor a kódban vagy a felületen kell műveleteket végezni, de a beállítások törlése és törlése azonnal és minden frissítés nélkül érinti a PN-t, például:

Report.SettingsComposer.Settings.Selection.Elements.Clear();

A jelentési űrlap bezárása előtt a rendszer csak azt kérdezi meg, hogy történt-e változás a változatban. Ha módosítások történtek a PN-ben, akkor a rendszer minden kérdés nélkül automatikusan elmenti azokat, és automatikusan megpróbálja alkalmazni a jelentéssel való munka következő munkamenetében.

Megjegyzések:

Számos hiba, nevezetesen a beállítások alkalmazása esetén először megjelenik egy üzenet a problémáról, majd a linkelés mégis megtörténik, az esemény ún. és jelentést készíteni. Ugyanakkor az FN-t, ha igen, továbbra is figyelmen kívül hagyja, és csak a Beállítások játszanak szerepet.

A "Változat módosítása" űrlapon történő kijelölés hozzáadásakor az azonnal megtörténik az "Include in ST" jelzőbeállítással, de ismétlem, a beépített nyelv szempontjából az ST-k változatlanok maradnak.

Egy változat variációjának beállítása és a PN variáció beállítása nem függ össze közvetlenül, ez a változás két különböző iránya.

A PN többek között "További beállításokkal" rendelkezik. Nem tudtam rájönni, hogy mit és milyen pillanatban töltenek be. A jelentésben ugyan vannak olyan beállítások, amelyek "kijelölésben és feltételes tervezésben meg vannak jelölve" felhasználó által meghatározottként (az SP szerint), de további beállítások minden esetben üresek voltak. Az ITS-en erről nincs szó.

A vegyes vállalat nyilatkozata ellenére a PN-ek tökéletesen szerializálva vannak xml-ben.

Ha a független kiválasztási elemek és maga a kijelölés is engedélyezve van, akkor a jelentés megfelelően épül fel, de megjelenítésekor megduplázza a kiválasztott kijelölésre vonatkozó információkat a végső elrendezésben.

Az alapból generált riportváltozat szerkesztésére szolgáló űrlap sok érdekességet tartalmaz, de FN-nel és PN-nel sehol nem működik, a fő beállításokkal pedig inkább az olvasásra (kivéve, hogy törli a kijelölést, sorrendet, konvencionális tervezést).

2. rész

A beállításokkal és az FN-nel való munka a gyűjteményükön keresztül szinte mindig elfogadható, de nem szabad elfelejteni, hogy a „harmadik szint” lényege változik. Az első szinten mindig magának az ACS-nek az alapértelmezett beállításai vannak, ezek implicit módon megjelennek az elérhető beállítások forrásában is; a második szinten - a használt változat beállításai. De itt a logika lehetővé teszi a mögöttes utasítások „felülírását”, vagy figyelmen kívül hagyását. A PN-nel való munka azonban már nem biztosít szabadságokat, és a finom manipulációkat speciális módszerekkel, és néha ideiglenes kiegészítő közvetítő objektumokkal kell elvégezni, például:

Comp=New LinkerDataCompositionSettings; // továbbra is elindíthatja // comp.Initialize(SomeSettingsComposer.GetAvailableSettingsSource()); comp.LoadSettings(SomeSettingsComposer.Settings); SomeSettingsComposer.LoadUserSettings(comp.UserSettings);

A beállítások készítőjének van egy módszere (), amely betölti a metódusparaméterként átadott felhasználói beállítások értékeit. Módszer GetSettings() lehetővé teszi, hogy másolatot kapjon az aktuális beállításokról (beleértve a felhasználói beállításokat is). Módszer Letöltés beállításai() betölti az átadott beállításokat a beállításkészítőbe (a felhasználói beállítások is újratelepülnek az átadott adatok alapján, figyelembe véve a kulcsok jelenlétét, lásd az alábbi példát).

A felhasználói beállítások alkalmazása a fő beállításokra a metódusban történik GetSettings() beállítások linker. Ennek során a következő műveleteket hajtják végre:

* A DataLayoutSelectionElement típusok esetében az elemek tartalma a megfelelő egyéni beállítási elemekbe másolódik.

* A DataLayoutFilter típusok esetében a fő beállításokban lévő és nem elérhetőként megjelölt elemek változatlanok maradnak. A PN elemei átkerülnek a fő elemekbe. A gyűjtemény végére kerülnek a Kiválasztáshoz.

* A DataCompositionSelection ElementsGroup típusoknál a Használat tulajdonság a fő beállítások megfelelő elemében van beállítva (a PN elem használatának jellemzője alapján).

3. rész

A végső beállítás kialakításakor, az ITS-t idézve, a különböző beállításokat az alábbiak szerint kombinálják:

* Ha bármely típusú beállítás teljesen egyéniként van megjelölve, akkor az eredményül kapott beállítások tartalmazzák a PN-eket. Ebben az esetben, ha bármely beállítási elem nem elérhetőként van megjelölve, akkor ezek a beállítások a SettingsComposer.Settings tulajdonság eredményül kapott beállításaiba kerülnek.

* Ha bármely típusú beállítás nem teljes egészében, hanem elemenként van megjelölve egyéniként, akkor az egyéniként megjelölt elemek bekerülnek a SettingsComposer.CustomSettings tulajdonságból a kapott beállítások közé, a nem elérhetőként megjelölt elemek pedig az eredményül. beállításokat a SettingsComposer.Settings tulajdonságból .

* A rögzített beállítások hozzáadódnak a kapott beállításokhoz „ahogy vannak”. Ugyanakkor elfogadhatatlan az a helyzet, amikor az FN és a PN ugyanazokkal a beállításokkal rendelkezik, például a feltételben ugyanaz a bal érték van kiválasztva. Megjegyzem, tilos még ezen feltételek összes tulajdonságának teljes egybeesése is. Hogy őszinte legyek, kissé logikátlan.

Megjegyzem, ha a beállítások bármely töredéke a funkcionális opció hatálya alá tartozik, és korlátozni kell, a rendszer „csendben” működik - mindenhonnan eltávolítja ezt a töredéket, nem jelent semmit, és az ilyen töredékhez kapcsolódó programmanipulációk során működik. „tétlen” – a hibák nem jelennek meg, de a kódnak nincs hatása. Előfordulhat azonban, hogy a különböző kiadások eltérően viselkednek.

4. rész

A jelentésűrlap-bővítmény biztosítja számunkra az „FN” és „PN” paramétereket, de sehol nem ajánlott közvetlenül kitölteni az űrlapnak történő átadással. Amint azt a kísérletek kimutatták, a tamburával végzett további táncok nélkül ezeknek a paramétereknek a tartalma figyelmen kívül marad - felülíródik, amikor a linkert inicializálják a nyitási folyamat során, és amikor a korábban elmentett PN-ek érkeznek. Javasoljuk, hogy PN-kulcsokkal dolgozzunk, amelyek segítségével a beállítások tárolójából lekérjük, majd megnyitjuk és használjuk, és ez nem a hívólap, hanem a jelentéslap oldalán automatikusan megtörténik.

Az "AvailableSettings Source" paraméter automatikusan lefordítja linker információit, amikor az űrlap létrejön a kiszolgálón, és nem bírálható felül. Illetve lehet, de csak a kapcsolódó objektumok teljes láncolatának teljes újradefiniálása után lesz hatása. Ahol GetAvailableSettingsSource() végéig az összes űrlapnyitó esemény Undefined értéket ad vissza.

Megjegyzem, hogy a form paraméterek, amelyek valójában nem kulcsfontosságúak, több eseményre „nyújtják” működésüket, ha a formáció zászlaja a nyitáskor be van állítva. Igen, az eseményen ProcessingFill ChecksOnServer, a megnyitás és formálás során meghívott, elérhető lesz a "Kiválasztás" paraméter, és ezzel együtt, de egyszerűen a felhasználó "Létrehozás" gombra kattintva hívható meg, már nem lesz elérhető. Ennek az az oka, hogy mindezen események egy „látogatás” során feldolgozódnak a szerveren, ha a nyitáskori formáció engedélyezve van, és csak a legvégén kerül át a vezérlés a kliensre és ún. A Megnyitón. Ebben az esetben a nem kulcsfontosságú paraméterek természetesen elvesznek.

Az események általános végrehajtási sorrendje egy űrlap megnyitásakor zászlóval a megnyitásról szóló jelentés létrehozásához (kicsit több, mint a "Szakmai fejlesztés" részben leírtak):

OnCreateOnServer

Mielőtt betölti a változatot a kiszolgálóra

WhenLoadingVariantOnServer

MielőttLoadingUserSettingsOnServer

Amikor LoadingUserSettingsOnServer

Amikor frissíti a felhasználói beállítások összetételét a szerveren

ProcessingFill ChecksOnServer

A Megnyitón

Ugyanakkor sem az opció, sem az MO nem módosul, hacsak nem teszünk különösebb erőfeszítést.

5. rész

Most nézzük meg részletesebben a jelentési űrlap megnyitásának feladatát annak felépítésével és előre megadott kiválasztásával. Erről az ITS-en és a módszertani ajánlásokban található rövid információ, de ott csak az elv szerepel, a finomságokat nem hozzuk nyilvánosságra. Tehát a jelentés kontextus szerinti meghívásához át kell adni a „GenerateOnOpening” paramétert, amely megegyezik a True értékkel a formájával; és a szerkezetet tartalmazó "Kiválasztás" paraméter. A struktúrakulcsok az ACS-mezők vagy ACS-paraméterek nevei, az értékek pedig ezek értékei. Az SP-t idézve, ha van olyan SKD paraméter, amelynek neve megegyezik a struktúrakulcs nevével, akkor az érték erre lesz beállítva. Ha nincs paraméter, de van mező, akkor ehhez a mezőhöz egy kijelölés kerül hozzáadásra. Ugyanakkor, ha van egy paraméter és egy azonos nevű mező, akkor a rendszer egyszerűen figyelmen kívül hagyja, és nem állít be semmit.

A "Szakmai fejlesztés" részben egy példa látható a PN "menet közben" megváltoztatására (azaz elfogásra és újrakonfigurálására) az eseményben MielőttLoadingUserSettingsOnServer, ahol az aktuális MO-t tartalmazó argumentum átadásra kerül. Valójában ez nem mindig van így – például előfordulhatnak olyan esetek, amikor a PN előző munkamenetben történő mentése során hiba történt, vagy a beállítások, az FN és a PN közötti inkonzisztenciák a „Beállítások” argumentum ürességét eredményezik. És ami a legérdekesebb, ebben az eseményben nem lesz lehetséges teljesen újrakonfigurálni, ez csak az eseménysorozat „végén” tehető meg, nevezetesen abban az esetben ProcessingFill ChecksOnServer.

Nézzük meg, mi van a PN szerverre való betöltése előtt.

Egy egyszerű esetben, amikor semmi nincs előre definiálva az ACS-ben, és nincs elem az MO-ban, a helyzet a következő: Beállítások - üres; FN - tartalmazza a helyes kijelölést; Az MO-k üres kijelölést tartalmaznak. A formázás korrektül működik, de a felhasználó szemszögéből nézve a felület inkonzisztens és elkedvetlenítő - a kijelölés működik, de nem látható. Hasonlóképpen, ha a változatstruktúra beállításainál engedélyezi a Kijelölést PV-ben, akkor a jelentés is a kijelölés figyelembevételével készül, de a felhasználó nem lát kijelöléseket.

A Configurator ACS beállításainál állítsa be az előválasztásokat (egyenlő: üres értékek), és szerepeltesse őket a PN-ben. Elméletileg az FN-nek ki kell töltenie a Beállításokat, és azokat - PN, de valójában van: a Beállításokban - Kijelölés a kívánt elemmel, de üres jobb érték, az FN - a helyes kijelölést tartalmazza, és a PN - továbbra sem tartalmaz semmit. . Ráadásul ebben az esetben a jelentés nem épül fel, mert a megfelelő szűrőérték üres, a Szűrő paraméterben átadott érték ellenére.

A PN elemeivel való munka kísérlete sem ad eredményt. A PN elemnél csak a „Használat” jelzőt és a „Gyors”-ban való részvételt módosíthatja. A felületen a kiválasztási érték üres lesz, a rendszer nem generál hibát. Hasonlóképpen, a Selection of PN funkcióval való munka is működni fog, a hibakeresőben a megfelelő érték jelenik meg megfelelően kitöltöttnek, de nem fog látni semmit a felületen. És emlékeztetlek arra, hogy lehetetlen megváltoztatni a PN összetételét. Ezért további trükkökre van szükség. Például:

&OnServer Procedure SetPredefinedFilter(UserSettings) Ha nem Parameters.Property("Szűrő") Akkor térjen vissza EndIf; If Parameters.Selection.Quantity()=0 then Return EndIf; pEOType=Típus("DataCompositionSelectionItem"); Minden kiz-hez From Parameters.Filter Loop pField=New DataCompositionField(kiz.Key); // If (VnType(kis.Value)=Type("Array") vagy ValvType(kis.Value)=Type("ValueList")) és kiz.Value.Quantity()>1 Akkor pComparisonType=DataCompositionComparisonType.INList; Egyébként pComparisonType=DataCompositionComparisonType.Equal; EndIf; // pHRequiredSelection=Nincs meghatározva; // nézd meg, hogy van-e Kijelölés a felhasználói beállításokban pHrequiredEO=Undefined; // nézd meg, hogy van-e külön DataCompositionFilter a felhasználói beállításokban Minden egyes elnastr-hez From UserSettings.Items Loop If ValueType(elnastr)=Type("DataCompositionFilter") and pHRequiredFilter=Undefined Akkor // ez csak egy lehet pHRequiredFilter=elnastr; // ezt a cikluson kívül is meg lehetne tenni, de az elemek kedvéért a felhasználói beállítások között is kell válogatni... ElseIf TypeZnch(elnastr)=rTypeEO Ekkor // ez egy kijelölési elem, sokféle lehet őket, de minket érdekelnek az inicializálatlan vagy a szükséges mezővel. If elset.LeftValue=pField or elset.LeftValue=Undefined and pHdesiredEO=Undefined Akkor pHdesiredEO=elnastr; EndIf; EndIf; EndCycle; // Ha a pH kívánatos Kiválasztás<>Undefined Ekkor // prioritásként megy pHrequiredEOFromSelection=Undefined; Minden elotb-hoz From pHSelection.Items Loop If elotb.LeftValue=pField Then pHDesiredEOFromSelection=elotb; EndIf megszakítása; EndCycle; Ha pHRequiredEOFromSelection=Nincs definiálva, akkor pHRequiredEOFromFilter=pRequiredFilter.Items.Add(pEOType); pHrequiredEOFromSelection.LeftValue=pField; EndIf; pH-required EOfromSelection.ComparisonType=pComparisonType; pHdesiredEOFromSelection.RightValue=kiz.Value; pHrequiredEO fromSelection.Use=true; // pHrequiredEO.Use=False; ElseIf pHDesiredSelection=Nem definiált és pHDesiredEO<>Undefined Ezután // tedd fel a pHnecessaryEO.LeftValue=pField elemet; pHrequiredEO.ComparisonType=pComparisonType; pHrequiredEO.RightValue=kis.Value; pHrequiredEO.Use=true; EndIf; pHrequired=undefined; Minden elotb-hoz From Report.SettingsComposer.Settings.Selection.Elements Loop // jó értelemben, itt rekurzív keresésnek kell lennie! Ha TypeVnch(elotb)=pTypeEo és elotb.LeftValue=pField Akkor pHrequired=elotb; EndIf megszakítása; EndCycle; Ha pHrequired=Nem definiált Akkor pHrequired=Report.SettingsComposer.Settings.Filter.Elements.Add(pEOType); pHRequired.LeftValue=pField; EndIf; pH szükséges.ComparisonType=pComparisonType; pHRequired.RightValue=kiz.Value; phrequired.Use=true; // EndCycle; Report.SettingsComposer.FixedSettings.Selection.Items.Clear(); // egyébként mondjuk az elemek metszik egymást/ellentmondanak az EndProcedure-nak

A leghelyesebb módja annak, hogy hívjuk:

&AtServerProcedure ProcessingFillCheckAtServer(hiba, ellenőrzött attribútumok) SetPredefinedFilters(Report.SettingsComposer.UserSettings); Vége eljárás

Ezután a kontextushívás, például a hivatkozási űrlapból, így fog kinézni:

&A kliens eljárásnál OpenReport(Command) If ValueFilled(Object.Reference) Akkor ref=New Structure("ReferenceToDirectory",Object.Reference); // így nevezik el a mezőt az ACS jelentésben Form Parameters=New Structure("Selection,FormAt Opening",select,True); OpenForm("Report.Report1.Form.ReportForm",Űrlapparaméterek,Ez az űrlap); EndIf; Vége eljárás

6. rész

Ha szükséges, módosítsa a jelentés beállításait, miközben dolgozik vele, pl. indításkor és nyitás után is a legkorrektebb az "elejétől" való változtatás, pl. tól től ACS beállítások. Az ACS-séma módosítása csak a Report objektummal (vagy külső jelentéssel) történik, az űrlapadatokkal nem, és önmagában nem változtat semmit - a Beállításokban és a PN-ben ugyanaz marad, mint volt, és az FN általában üres maradhat. Ezért feladatainktól függően:

Miután megtette

Report.Settings Builder.LoadSettings (SKD.DefaultSettings)

csak a változat változik, és semmi más;

A (2) bekezdésben megadott technika végrehajtása után (a „közvetítő” és a módszer segítségével Egyéni beállítások letöltése()

csak akkor működik, ha az interfész segítségével visszaállítja az aktuális PN-t. Önmagukban nem változnak az opció megváltoztatásakor. Ez megváltoztatja a kijelölést, de nem ad hozzá új kijelölési elemet.

Miután megtette

ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.All)

az emelvény csak csendesen esik. Több különböző kiadáson tesztelve. És nincs értelme annak a hívásnak, hogy a beállításokat csak a gyorsak megjelenítési módjával használja - nem befolyásoltuk az összetételüket, így semmi sem fog változni.

És mivel még nem csak a belső kijelöléseket, hanem a jelentés űrlapon és a kapcsolódó űrlapokon való megjelenítést is teljesen meg kell változtatnunk, vagy csak a Kijelölést kell módosítanunk, vagy a következőképpen kell eljárnunk:

&A szerver eljárásnál ChangeSKD() pObject=FormAttributeToValue("Jelentés"); Selection=rObject.Data Composition Scheme.OptionsSettings.Get(0).Settings.Filter; eo=select.Items.Add(Type("DataCompositionSelectionItem")); eo.LeftValue=New DataCompositionField("ReferenceReference.Field1"); eo.ComparisonType=DataCompositionComparisonType.Equal; eo.RightValue=true; eo.Use=true; ValueVFormAttribute(pObject, "Jelentés"); Report.Settings Builder.LoadSettings(pObject.Data CompositionSchema.Default Settings); Report.Settings Builder.Restore(); // kívánatos, bár az FN továbbra sem érintett. // valójában ez az, amit a PN összetételének változásának nevezhetünk Minden egyes e-mailnél From Report.Settings Builder.Settings.Selection.Elements Loop email.DisplayMode=ItemDisplayModeDataCompositionSettings.QuickAccess; Ha EmptyString(e.UserSettingsIdentifier) ​​​​Then // használhatja az e.SetIdentifier metódust a PN elemhez, lásd a súgóját az SP-ben, ott minden teljesen egyértelmű e.UserSettingsIdentifier="ID123"; // fontos - az azonosító BÁRMILYEN lehet, nem UUID és nem GUID! emailViewCustomSettings="Teszt"; EndIf; EndCycle; comp=New DataCompositionSettingsCompositor; comp.LoadSettings(rObject.DataCompositionSchema.DefaultSettings); Report.Settings Builder.LoadUserSettings(Comp.UserSettings); Minden egyes e-mailhez: Report.Settings Builder.UserSettings.Items Ciklikus email.DisplayMode=ItemDisplayModeDataCompositionSettings.QuickAccess; // húzza az EndCycle-t a jelentésűrlapra; // és most érvénybe lép: ThisForm.CreateUserSettingsFormElements(,DisplayModeDataCompositionSettings.QuickAccess); Vége eljárás

Valójában ezt a mechanikát sokáig tanulmányozhatja. Ez a bejegyzés egy adott probléma megoldásának megtanulásából született, ezért meglehetősen egyoldalú; de gyanítom, hogy lehet külön könyvet írni a beállítások belső logikájáról, főleg a felhasználóikéról, nem vékonyabbat, mint Khrustalev-é. Sajnos se időm, se energiám nincs rá. Kinek lesz haszna a konkrét fejlesztésekből – már jó.

Néhány dolgot kísérletileg tisztáztak, ezért vitathatóak. Aki többet tud, kritizálja és kommentálja.

Alrendszer az 1C-ben 8.3- a metaadatfa egy objektuma, amely a konfigurációs parancsfelület felépítéséért felelős.

Az alábbiakban a cikkben a 8.2-es verziótól kezdődő alrendszerekről lesz szó.

A helyzet az, hogy a 8.1-es verzióban (valamint a rendszeres alkalmazása 8.2) is rendelkeztek alrendszerekkel, de ezek teljesen más célokat szolgáltak, inkább a fejlesztőt, mint a felhasználót. Az alrendszerek segítségével a 8.1-ben általában szétválasztották a különböző funkcionalitásokat. Az alrendszerek a különböző 1C konfigurációk kombinálásakor is segítettek - meg lehetett határozni, hogy melyik rendszert kell átvinni.

1C alrendszerek és interfész egy programozó számára

A 8.3-as és 8.2-es verziókban az alrendszerek jelentik a parancs-felhasználói felület felépítésének fő eszközét. Az "Alrendszerek" metaadat-objektumokkal rendelkeznek hierarchikus struktúra az interfész "almenüjének" beállításához hozzá kell adni egy alrendszert:

Tulajdonságok és beállítások

Vegye figyelembe az alrendszerek beállításait és tulajdonságait a konfigurátorban:

Ingyenes 267 1C videóleckéket kaphat:

Tartalmazza a parancsfelületen- ha elfelejtette kitűzni ezt a zászlót, alrendszer nem jelenik meg a felületen.

A gomb megnyitja az interfész beállítások panelt, ahol az aktuális felhasználó szerepkörétől függően konfigurálhatja az interfészt:

Kép- az alrendszerhez rendelt kép vállalati módban jelenik meg. Választhat szabványos képet, vagy hozzáadhat saját képet úgy, hogy először létrehozza konfigurációs objektumként Kép:

A lapon Funkcionális opciók fel van tüntetve azon funkcionális opciók listája, amelyekben ezt az alrendszert használják.

Tab Összetett egy adott alrendszerben részt vevő metaadat objektumok halmazát határozza meg.

A lapon Egyéb leírhatja az alrendszer súgóját és megadhatja a beállítást Tartalmazza a súgó tartalmát- bele kell-e venni ez a szekció Segítség az általános konfigurációs referencia információkhoz.

Ha egy jelentés vagy feldolgozás nem jelenik meg a kezelt felületen

Ez a probléma nagyon gyakran felmerül a kezdő fejlesztők számára - úgy tűnik, hogy jelentést vagy feldolgozást adtak az alrendszerhez, de nem látható.

Ennek első oka az lehet, hogy az objektumnak nincs kezelt űrlapja.

A második ok az, hogy a „Szabványos parancsok használata” jelölőnégyzet be van állítva az objektum Parancsok lapján. Ez annak a ténynek köszönhető, hogy a feldolgozás megnyitásához leírható a saját eljárása és a standard is használható:

A cikk folytatja az „A fejlesztés első lépései az 1C-n” ciklust.

Az 1C:Enterprise platform konfigurációjában az információk megjelenítésekor leggyakrabban olyan táblázatokat használnak, amelyek különféle információs listák. Az ilyen listákkal való munkavégzés történhet mind lista, mind elem formájában (feldolgozás).

Ebben a cikkben áttekintjük ezeket a listák testreszabási lehetőségeit, valamint az űrlapok testreszabásának egyéb szempontjait a felhasználó szemszögéből.

Alkalmazhatóság

A cikk az 1C 8.3.4.482 platformon kifejlesztett "8.2-es verzió" konfigurációban található felügyelt felülettel foglalkozik.

Ha olyan konfigurációkkal dolgozik, amelyek támogatják adott felület, akkor az információ releváns az Ön számára és az Ön számára aktuális verziók platformok.

Ha az új Taxi felületen dolgozik, akkor egyes konfigurációs parancsok neve, valamint a műveletek általános sorrendje kissé eltérhet.

Ezenkívül a platform jelenlegi verziója új keresési lehetőségeket adott a listákban.

Az űrlapok testreszabása és a listákkal való munka képessége

A felügyelt űrlapelemeknél lehetőség van a láthatóság és néhány egyéb tulajdonság módosítására. Erre a célra a menüben kezelt formában Minden művelet elemet szolgál ki alakot váltani.

A parancsra kattintás után megjelenik az Űrlapbeállítások ablak.

A megjelenő ablakban a jelölőnégyzetekkel módosíthatja egyes részletek láthatóságát. Ebben az esetben az űrlap automatikusan méreteződik.

Módosíthatja az attribútumok sorrendjét. Hozzáadás új csoportés tegyen bele néhány attribútumot (elemet), meghatározva azok csoportosításának lehetőségét (vízszintes, függőleges).

A csoportba tartozó részletek ennek megfelelően kerülnek elhelyezésre. Ezenkívül az elemekhez olyan tulajdonságokat is beállíthat, mint a szélesség, magasság, fejléc adatok.

Megadhat egy attribútumot, amely az űrlap megnyitásakor aktiválódik.

Fontos tulajdonság az új mezők hozzáadásának lehetősége az űrlaphoz. Ez a referenciatípus attribútumokon keresztül válik lehetővé.

Például egy hivatkozástípus attribútuma szerepel az űrlapon szerződő fél, hozzá lehet adni A kapcsolattartó személy , ha ez az attribútum megtalálható a "Vállalkozók" könyvtárban.

A további mezők szükség esetén eltávolíthatók. A konfigurátorban létrehozott mezők nem törölhetők. A felhasználó által elvégzett összes beállítás mentésre kerül.

Az alapértelmezett beállításokhoz való visszatéréshez a menü Alakbeállítás ablakában Minden művelet ki kell választania az elemet Állítsa be az alapértelmezett beállításokat.

A kezelt felületen az űrlapok beállítása mellett lehetőség van listák (könyvtárak, dokumentumok elemei) beállítására.

Lista formájában a menüben Minden művelet speciális parancsot tartalmaz Lista testreszabása.

Megnyílik a Lista beállítása ablak. Ebben az ablakban választhat, rendezhet, definiálhat feltételes tervezést és csoportosítást.

Az ábra a kijelölés szerkesztésének űrlapját mutatja.

A kiválasztás több mezőben is elvégezhető. Ebben az esetben alapértelmezés szerint a kijelölés az ÉS feltétel szerint fog működni, használhatjuk a VAGY és NEM feltételeket is.

A VAGY (NEM) feltétel használatához a Csoportfeltételek paranccsal adja hozzá a megfelelő csoportot (Csoport VAGY, Csoport NEM).

Az ábra egy űrlapot mutat be a rendezési mezők meghatározásához.

Csoportosítás lehetséges. Az ábrán a csoportosítás mezője van kiválasztva szerződő fél.

A következő ábra azt mutatja be, hogyan történik a csoportosítás.

A listát tetszőlegesen színezheti, vagy egyéb feltételes tervezési elemeket (kiemelés, bizonyos formázás) alkalmazhat adott feltételnek megfelelően, valamint kiemelheti a formázott mezők listáját.

Az ábra a mező hátterének feltételes tervezésének eredményét mutatja Összeg.
Ha az összeg > 100 000.

Megjegyzendő, hogy a könyvtárakat hierarchikus módban is meg lehet tekinteni.

A könyvtárak hierarchikus megjelenítése az elemen keresztül konfigurálható Nézet mód a menün Minden művelet. Az alábbi lehetőségek közül választhat: Hierarchikus lista, Lista, Faipari.

Lehetőség van a címtárelemek saját csoportosítására is bizonyos részletek szerint.

Például csoportosíthatja a tételeket szállító szerint. A példa hasonló ahhoz, ahol a „Termékek és szolgáltatások értékesítése” dokumentumok szerződő felek szerinti csoportosítását vettük figyelembe.

Kényelmes funkció a listákban történő többszöri kijelölés, majd a csoportos műveletek későbbi végrehajtása (közzététel, feladás megszakítása, törlés megszüntetése).

A listában lévő objektumok kiválasztása a billentyű nyomva tartásával történik Váltás vagy ctrl.

A listában valamilyen érték keresésének megvannak a maga sajátosságai. A keresés a kiválasztási módban működik. Csak azok a sorok maradnak meg, amelyek megfelelnek a keresési feltételnek.

Ha érték szerint szeretne keresni az aktuális oszlopban, csak helyezze a kurzort a kívánt oszlopra, és kattintson a gombra megtalálja a parancspanelen. Megjelenik egy ablak, amelyben szintén rá kell kattintania a gombra megtalálja.

A jelölőnégyzet segítségével finomíthatja a keresést. Keresés megtalálva.

Amikor egy referencia típusú adatsoron keres (például mértékegység), válassza ki a megfelelő keresési lehetőséget ...(soronként).

Ez a listákkal és azok testreszabásának módjaival zárul. A következő cikkben tovább ismerkedünk a felülettel és megnézzük praktikus eszköz hogy tájékoztassuk a felhasználót, amiről még nem beszéltünk. Mi ez az eszköz? :)