Paraméter a dinamikus listában 1s 8.3. Dinamikus listaadatok feldolgozása és formázása

A konfigurációk véglegesítése során minden 1C programozó dinamikus listákkal találkozik.
A dinamikus lista egy interfészobjektum, amelyet adatbázis-objektumok vagy nem objektum adatok - regiszterbejegyzések - különféle listáinak megjelenítésére használnak.
Például egy dinamikus lista az elemek listájának megjelenítésére szolgál:

A dinamikus lista képességeinek bemutatásához hozzunk létre külső feldolgozást, és adjuk hozzá a fő űrlapot. Adjunk hozzá egy új attribútumot az űrlaphoz „Dinamikus lista” típussal. Nézzük meg a tulajdonságait, és nézzük meg, mi van ott.
Érdekel minket az „Egyedi kérés” tulajdonság. Az engedélyezése megmutatja nekünk a dinamikus lista összes képességét. Az 1C: Enterprise rendszerlekérdezési nyelv szinte összes lehetőségét felhasználva tudunk majd kérést írni. Jelölje be a négyzetet, és kattintson a „Megnyitás” linkre:

A listánk alapértelmezés szerint megjeleníti a cikkek listáját az összes raktár teljes egyenlegével. Egy ilyen lista megvalósításához adja hozzá a következő lekérdezést:


Fő táblázatként a „Könyvtár.Nómenklatúra” elemet választjuk, ez lehetővé teszi, hogy dinamikus listával dolgozzunk, akárcsak a nómenklatúrák listájával - könyvtárelemek hozzáadása, módosítása, törlésre való megjelölése. Ezenkívül a főtábla telepítése lehetővé teszi az adatok dinamikus olvasását - ez azt jelenti, hogy a kiválasztás szükség szerint részenként történik.
Ezután űrlapelemeket kell létrehoznunk a listánkhoz:

Ha ebben a formában próbáljuk lefuttatni a feldolgozást, hibaüzenetet kapunk:


Ennek megszüntetéséhez be kell állítani egy értéket az „Időszak” paraméterhez. Ehhez használhatja a dinamikus lista „Parameters” gyűjteményének „SetParameterValue” metódusát. A módszer két paramétert igényel:
. "Paraméter" - Típus: Karakterlánc; DataCompositionParameter. Annak a paraméternek vagy adatösszetételi paraméternek a neve, amelynek értékét be kívánja állítani;
. „Érték” – Típus: Önkényes. A beállítandó érték.
Meghívható az űrlap „OnCreateOnServer” kezelőjében:

Kérdése van, vagy tanácsadó segítségére van szüksége?


Lehetőséget biztosítunk a felhasználónak az egyenlegek beérkezésének időszakának megváltoztatására. Ehhez adja hozzá az attribútumot és a hozzá tartozó „Dátum” űrlapelemet:


A „Date” űrlapelem „OnChange” kezelőjében a „SetParameterValue” metódust fogjuk meghívni, és a hozzá tartozó attribútum értékét adjuk át értékként. Hasonló módon változtassuk meg az űrlap „Kiállításkor a szerveren” eljárását. Mivel a módszer elérhető a kliensen, nem kell hívni a szervert:


Most, amikor a dátum megváltozik, az egyenlegek automatikusan frissülnek:




Tegyük fel, hogy a felhasználók az aktuális egyenlegeket vagy a tervezett bevételeket szeretnék látni. Tekintsük az egyik megvalósítási lehetőséget. Adjunk hozzá egy logikai típusú form attribútumot és egy kapcsolódó kapcsolót:


A kapcsoló értékének megváltoztatásakor megváltoztatjuk a kérés szövegét. Ehhez a „Módosításkor” eseménykezelőt fogjuk használni a „Mennyiség megjelenítése az átvételkor” űrlapelemhez. A dinamikus lista „QueryText” tulajdonságát az attribútum értékétől függően módosítanunk kell. Mivel ez a tulajdonság nem érhető el a kliensen, egy szervereljárást kell meghívni:


A változtatások eredménye:



Nyomtatás (Ctrl+P)

Dinamikus lista

1. Általános információk

A dinamikus lista egy speciális adattípus, amely lehetővé teszi az adatbázistáblák tetszőleges információinak megjelenítését egy űrlapon. Ehhez meg kell adni azt a táblát, amelyből adatokat kívánunk megjeleníteni, vagy le kell írni az eredményül kapott kijelölést egy lekérdezési nyelven.
A mechanizmus egy adatösszeállítási rendszeren alapul, és lehetőséget biztosít a fogadott adatok rendezésére, kiválasztására, keresésére, csoportosítására és feltételes formázására. Ebben az esetben az adatforrás egy kérés, amelyet vagy automatikusan generál a rendszer (a megadott adatok alapján), vagy a fejlesztő kézzel ír.

Rizs. 1. Dinamikus lista létrehozásának lehetőségei

A típusú űrlapattribútumok létrehozásakor DynamicList a fejlesztő kétféleképpen választhat adatlekérdezést:
● A főtábla megadásával - ebben az esetben csak meg kell adnia a táblát (Main table property), amelyből adatokat szeretne fogadni, és a rendszer automatikusan lekérdezést generál az adatokról (lásd a jobb oldali részt a 2. ábrán). 1).
● Kérés manuális generálása – ehhez be kell állítani az Egyéni kérés tulajdonságot (lásd az 1. ábra bal oldalát). Ezt követően elérhetővé válik a kérés manuális generálása az információs bázisból való adatok beszerzésére.
Egy lekérdezés több táblából is lekérhet adatokat, így megadhat egy elsődleges táblát. Ez azért van így, hogy a dinamikus lista meg tudja határozni, melyik adat az elsődleges és melyik a másodlagos, és megfelelően tudja kiválasztani és megjeleníteni az információkat, valamint szabványos parancsokat adjon. Ha azonban nem lehet meghatározni a főtáblát a lekérdezésben, akkor azt nem lehet megadni, hanem akkor
a dinamikus lista nem ad a főtáblához kapcsolódó parancsokat. Ezenkívül ebben az esetben (a fő táblázat megadása nélkül) jelentősen csökken a dinamikus listával történő adatgyűjtés hatékonysága.
A teljesítmény javítása érdekében javasoljuk, hogy az egyéni lekérdezésekben csak további adatok beszerzése céljából használt összekapcsolásokat tegye kötelezővé az adatösszetétel rendszerlekérdezési nyelvi bővítmény használatával.
Egy dinamikus listához, amely a fő űrlapattribútum, lehetőség van kiválasztási értékek megadására egy űrlapparaméter segítségével Kiválasztás. Ehhez szükséges, hogy a paraméterben található szerkezet tulajdonság neve Kiválasztás,
egybeesett a dinamikus lista kiválasztási mező nevével. Ebben az esetben a struktúra tulajdonság értéke lesz beállítva a kiválasztási elem megfelelő értékeként. Ha egy tömböt, egy rögzített tömböt vagy egy értéklistát adunk át egy dinamikus lista űrlap Selection paraméterének elemének értékeként, akkor a megfelelő értékben hozzáadódik egy feltétel a listában opcióval. amelyből egy értéklista kerül elhelyezésre (amelyre a tömb és a rögzített tömb konvertálódik).
Egy tetszőleges lekérdezés egy dinamikus listában lehet olyan lekérdezés, amelyben egy paramétert használnak egy mező értékének generálására, például:

VÁLASZT
VÁLASZTÁS
WHEN Delivery.Együttható = 1 THEN &Presentation
EGYÉBEN Szállítás. Együttható
VÉGE AS Arány
TÓL TŐL

Továbbá, ha a paraméter értékének típusa eltér az objektum attribútum típusától (pl. Kellékek1 típusa van Szám, és a paraméter értéke típus Vonal), majd a mező helyes megjelenítéséhez a paraméterértéket kifejezetten a kívánt típusra kell önteni:

VÁLASZT
VÁLASZTÁS
WHEN Delivery.Együttható = 1 THEN EXPRESS(&Representation AS String(100)) ELSE Delivery. Együttható
VÉGE AS Arány
TÓL TŐL
Dokumentum.Termékek kiszállítása HOGYAN Szállítás

Ha a kijelölést beállító mező le van tiltva a funkcionális beállításokkal, akkor az ilyen mező alapján történő kiválasztás nem kerül telepítésre, még akkor sem, ha a kiválasztási értéket űrlapparaméterként vagy kiválasztási paraméter hivatkozásként adják át.
A Dinamikus adatolvasás tulajdonság használatával jelezheti egy dinamikus listának, hogy az adatokat kis részletekben kell olvasni
(Az adatok dinamikus lista és adatgyorsítótár használatával történő megszerzésének módjaival kapcsolatos további részletekért lásd alább). Ettől az attribútumtól függetlenül a következő feltételek érvényesek:

● Ha a nézet mód hierarchikus listára van állítva, akkor csak az aktuális csoport adatai és az összes szülőelem (gyermekek nélkül) adatai lesznek beolvasva.
● Ha a fanézet mód be van állítva, akkor csak a nyitott fa csomópontjaiból származó adatok kerülnek beolvasásra.
● A dinamikus listaadatok egyszeri betöltése nem támogatott, ha a hierarchikus böngészés be van állítva (a Megjelenítési tulajdonság Fa értékre van állítva), és a kezdeti famegjelenítés az Összes szint kibontása értékre van állítva. Az adatok beszerzéséhez annyi kérés érkezik a szerverhez, ahány csomópont van a megjelenített listában.
Egyetlen adatlehíváson belül a dinamikus lista újra felhasználja a korábban létrehozott ideiglenes táblákat, ha a következő feltételek teljesülnek:
● A listás köteglekérdezésnek nincsenek lekérdezései a fő köteglekérdezés után.
● Az ideiglenes táblák és a bennük lévő mezők összetétele nem változott a kötegelt kérés korábbi végrehajtásához képest.

Munkájában a dinamikus lista a metaadatobjektum-részletek következő tulajdonságainak értékeit használja:
● formátum,
● szerkesztési formátum,
● tipp,
● jel a negatív értékek kiemelésére,
● maszk,
● többsoros mód jel,
● haladó szerkesztés jele,
● jelszó mód.
Az adatösszeállítási rendszer kijelölésének és paramétereinek megjelenítése és szerkesztése során a megfelelő mező szerkesztési formátuma kerül felhasználásra.

2. Korlátozások és jellemzők

Ha dinamikus listában kiválasztja a kijelölést, ne feledje, hogy a kijelölés nincs hatással a csoportokra, ha a dinamikus lista megjelenítési módja Hierarchikus lista vagy Fa. A „csoportok” alatt egy olyan jellemző típusú könyvtár vagy terv elemét értjük, amelynek ThisGroup tulajdonsága True értékre van állítva.
A dinamikus lista által automatikusan alkalmazott minősítések a Tulajdonos, Szülő, Dátum, Időszak és ThisGroup szabványos adatokra vonatkoznak.
szabványos adatalkotó rendszereszközök használatával. A kijelölés, amelyet egy dinamikus lista automatikusan alkalmaz a kulcsmezőkre, alkalmazható mind az adatösszeállítási rendszer szabványos eszközeivel, mind a feltételek közvetlen hozzáadásával a kérés szövegéhez. BAN BEN a főtábla mezőire. Az elrendezési eszközökkel végzett kijelölések alkalmazása eredményeként mind beágyazott lekérdezésekben, mind virtuális táblák paramétereiben alkalmazhatók.

Dinamikus listák fejlesztésekor ajánlatos az összes dinamikus listát egyéni lekérdezésekkel tesztelni. Az ellenőrzési folyamat során győződjön meg arról, hogy ha egy listalekérdezés beágyazott lekérdezéseket vagy virtuális táblákat tartalmaz, és ezekben a szabványos Tulajdonos, Szülő, Dátum, Időszak, ThisGroup vagy kulcsmezők álneveivel megegyező álnevekkel rendelkező mezők állnak rendelkezésre kiválasztást, akkor ezek a mezők érvényesek megfelelnek azoknak a szabványos adatoknak, amelyekkel a becenevük egyezik. Ha ez nem így van, akkor módosítani kell a kérést, hogy megfeleljenek ill
a becenév más volt.
Ha úgy dönt, hogy manuálisan generál egy kérelmet, akkor a kérelemre bizonyos korlátozások vonatkoznak:
● A FIRST utasítás használata dinamikus listalekérdezésben nem támogatott. Ha egy dinamikus listában a rekordok száma által korlátozott kijelölést kell használnia, akkor a dinamikus lista létrehozására irányuló kérést úgy kell átdolgoznia, hogy a kérelem tényleges tartalma egy részlekérdezésbe kerüljön, és korlátozza a rekordok számát. kapott ebben az allekérdezésben. Allekérdezés helyett ideiglenes táblát is használhat.
● A kijelölés, rendezés és csoportosítás nem támogatott:

  • A táblázatos részek részletezése szerint.
  • Mezők megtekintése.
  • DataVersion mező.
  • PredefinedDataName mező.
  • Számlaterv táblázat típusú mező.
  • A felhalmozási regisztertábla mozgásának típusa.
  • Mezőtípus A jellemző típusú tervtáblázat értékei.
  • Típus mező Típus;
  • String típusú mező (korlátlan hosszúságú).
  • BinaryData típusú mező.

● A Subconto mezők szerinti rendezés és csoportosítás nem támogatott<НомерСубконто>és ViewSubconto<НомерСубконто>Táblázatok MovementsSubconto a számviteli nyilvántartás.
● Az összesítő függvényeket tartalmazó lekérdezési nyelvi kifejezések mezők szerinti csoportosítása nem támogatott.
● Ha a fő tábla ki van választva, a dinamikus listalekérdezés a következő korlátozásokkal rendelkezik:

  • A csatlakozások nem támogatottak.
  • A ORDER BY szakasz nem támogatott. Használjon főtábla nélküli lekérdezést, vagy állítsa be a szükséges sorrendet a dinamikus lista beállításain keresztül.

● Ha egy dinamikus lista hierarchikus listaként vagy faként jelenik meg, akkor a bejegyzés csak akkor jelenik meg dinamikus listaként, ha legalább az egyik szülője megjelenik. Más szavakkal, egy hierarchikus lista elemének megjelenítéséhez a dinamikus listának meg kell jelenítenie az adott elem összes szülőjét a lista tetejéig. Ebben az esetben a lista tetején bármelyiket értjük
a dinamikus lista által megjelenített hierarchikus objektum gyökéreleme, vagy egy dinamikus lista űrlaptábla-kiterjesztésének ParentTopLevel tulajdonságaként beállított elem.

A következő táblázatok használata dinamikus lista fő táblázataként nem támogatott:

● Olyan tábla, amely nem rendelkezik olyan kulccsal, amely egyedileg azonosítja az egyes táblarekordokat (hivatkozás az objektumtáblákhoz és rekordkulcs a regisztertáblákhoz). A következő táblázatok azonban beállíthatók a dinamikus lista fő táblázataként (annak ellenére, hogy nincs kulcsuk):

● A számviteli nyilvántartás alkontó táblázata;
● a számviteli nyilvántartás összes virtuális táblája, kivéve a MovementsSubconto táblát;
● konstans értékek táblázatai (beleértve az Állandók táblát);
● külső adatforrások táblázatai kulcsmezők nélkül;
● külső adatforrások kockatáblázatai;
● felhalmozási regiszter táblák:

  • forradalmi asztal;
  • mérleg asztal;
  • forgalom és egyenlegek táblázata.

● számítási regiszter táblázatok:

  • táblázat a tényleges érvényességi időről;
  • ütemezési adatok;
  • alapadatok.

● Tárgyak táblázatos részeinek táblázatai;
● Regisztrációs táblák módosítása (adatcsere-mechanizmusokban használatos);
● Sorozattáblázatok;
● Konverziós táblák (időszakos elszámolási mechanizmusokban használatos).
● Egy tábla, amelyet a lekérdezésben csak külső összekapcsolásban használnak.

Más szóval, egy dinamikus lista a megadott főtáblával akkor fog megfelelően működni, ha a lekérdezés végrehajtása eredményeként
adatforrásként megadva a főtáblából nyert sorok száma nem növekszik (figyelembe véve a kiszabott kijelölést). Ha egy lekérdezés végrehajtása következtében megnő a főtáblából a lekérdezéssel kapott sorok száma, az a lista által megjelenített tábla rekordjainak kulcsának egyediségének megsértéséhez vezet. Ebben az esetben le kell tiltania a fő dinamikus listatábla használatát.
Amikor dinamikus listával dolgozik, figyelembe kell vennie a lista által megjelenített adatokhoz való hozzáférési jogokat:
● A Mindig használ tulajdonsággal megjelölt dinamikus listaoszlopokból származó adatok, amelyekhez az aktuális felhasználónak nincs megtekintési joga, nem kerülnek továbbításra a kliens oldalra. Hozzáférés az ilyen oszlopok adataihoz (a CurrentData tulajdonság és a RowData() metódus használatával)
ügyféloldalon nem lehetséges.
● Ha az aktuális felhasználó nem rendelkezik Nézet joggal egy dinamikus lista kulcsmezőjében, az adatok lekérése a dinamikus listáról hozzáférési megsértési hibát eredményez.
A felsorolási listát megjelenítő dinamikus listák esetében nincs lehetőség a lista interaktív testreszabására.
A dinamikus lista oszlopainak összetétele és beállításai a lekérdezési mezőkhöz vannak társítva a kiválasztási mezők álneveivel. Ha egy álnév nincs kifejezetten megadva egy kijelölő mező lekérdezésében, és a mező rendszerszintű, akkor a beépített nyelv angol verziójának mezőneve álnévként kerül felhasználásra.
A megadott kapcsolat azt jelenti, hogy amikor módosítja (vagy kifejezetten megad egy álnevet egy olyan mezőhöz, amelyhez automatikus álnevet használtak)
a dinamikus lista adatokat generáló lekérdezési mező álneve, a dinamikus lista attribútum beállításai elvesznek, az űrlapelemek „elvesztik” a megjelenített részleteket, a dinamikus lista beállításai hibásak lesznek stb.
Ha egy dinamikus lista adatforrása egy táblázat (normál vagy virtuális), amely lehetővé teszi időszakonkénti kijelölés beállítását, akkor ha a felhasználó egy ilyen dinamikus listában állítja be a megjelenítési időszakot (Dátumintervallum beállítása... parancs),
a megadott időszakhatárok kiválasztási értékként vagy virtuális tábla paraméterként lesznek beállítva. Ha nyelvbővítés útján
lekérdezések az adatösszeállítási rendszerhez, a virtuális tábla paramétereinek nevei kifejezetten meg voltak adva - a megadott paraméterekkel
neveket. Táblázatok, amelyeknél szabályozható az adatok megjelenítésének vagy feldolgozásának időtartama:
● regiszter táblák (fő vagy virtuális), amelyekhez időszakonként lehet kiválasztani (számítási regiszternél - regisztrációs időszak szerint);
● dokumentumok, üzleti folyamatok és feladatok főbb táblái;
● dokumentumnaplók főtáblái;
● fő sorozattáblák, szekvenciahatártáblák.
A dinamikus lista lekérdezési paramétere lehet tömb vagy értéklista. Ha azonban a paraméter értéklista, akkor csak a lista első értéke lesz kiválasztási érték. Ha egy dinamikus lista paraméterekkel rendelkező lekérdezést használ, akkor a paraméterértékek kezdeti beállítását az OnCreateOnServer kezelőben kell elvégezni.
A dinamikus listaadatok megjelenítésekor tartsa szem előtt a következőket:
● Ha programozottan módosítja egy dinamikus lista tulajdonságait, a listához tartozó parancspanelek nem töltődnek fel automatikusan újra.
ezzel a dinamikus listával.
● Ha egy cellában több mező csoportosítási móddal van csoportosítva, és a csoportosított mezőkben van egy mező, amely jelölőnégyzetként jelenik meg, akkor mindig ez a jelölőnégyzet jelenik meg először a kapott cellában (a szöveg).
A dinamikus listákban az olyan mezők adattípusának meghatározásakor, amelyek kifejezései paramétereket, mezőket vagy literálokat tartalmaznak, az eredményül kapott típust a mezők és a literálok típusa határozza meg. Ha a paraméter értéktípusa nem szerepel a kapott adattípusban, akkor annak értéke csonkolva lesz.
Például a következő példában a mező Szám típusú lesz.

VÁLASZTÁS
AMIKOR HAZUGSÁG
AKKOR 5
MÁSKÉPP
&Paraméter
VÉGE

Ha a Paraméter paramétert egy másik típusú értékre állítja be, akkor az adott mező dinamikus listája 0 értéket kap (a Szám típus alapértelmezett értéke).
Ha ilyen helyzetben más típusú paramétert kell kiválasztani, akkor javasolt a lekérdező nyelvi konstrukció használata EXPRESSZ. Például,
ha a fenti példában 100 karakternél nem hosszabb karakterláncot kell átadnia a paraméternek, akkor a paraméter egyszerű jelzését cserélje ki egy kifejezett típusú cast kifejezésre:

VÁLASZTÁS
AMIKOR HAZUGSÁG
AKKOR 5
MÁSKÉPP
EXPRESS(¶méter AS String(100))
VÉGE

Ha egy dinamikus listakérelem tetszőleges szövege paramétereket használ a kiválasztási mezők kifejezéseiben, akkor a konstrukcióval kifejezetten meg kell adni a paraméterek típusát. EXPRESSZ. Például ahelyett &Nómenklatúra AS Nómenklatúra használat
EXPRESS(&Nomenclature AS Directory.Nomenclature) AS Nómenklatúra. Ellenkező esetben a keresősávon keresztül történő keresés működhet
hibás vagy hibát okoz.

3. Adatok lekérésének és gyorsítótárba helyezésének módszerei dinamikus listával

A megjelenítendő adatok beszerzésekor a dinamikus lista a három módszer egyikét használja:
1. Az adatbázisból való kiolvasás darabokban történik, az adatelemek száma valamivel nagyobb, mint a lista által egyidejűleg megjelenített sorok száma (de legalább 20). Az adatok nem tárolódnak a szerveren.
2. Az adatbázisból való kiolvasás 1000 adatelem oldalain történik. Az adatok gyorsítótárban vannak a szerveren. A hierarchikus adatok gyorsítótárazásra kerülnek: minden szülőhöz legfeljebb 2 oldalnyi elem tárolható. Egy dinamikus lista legfeljebb 20 oldalnyi elemet tárol a gyorsítótárban. A gyorsítótárazást a következő táblázatok dinamikus listája engedélyezi:
● Kiválasztási kritériumok;
● A számviteli nyilvántartás összes táblája, kivéve a főtáblát és a MovementsSubconto táblát;
● Minden felhalmozási regiszter tábla, kivéve a főtáblát;
● Az információs nyilvántartás összes táblája, kivéve a főtáblát;
● A számítási regiszter összes táblája, kivéve a főtáblát;
● Feladatok virtuális táblázata végrehajtó szerint;
● Külső források táblázatai kulcsok nélkül;
● Kockák külső forrásból.

3. Az adatbázisból való kiolvasás 1000 elemből álló oldalakon történik. Az első rész 1 oldal. Minden további rész 1 oldallal növekszik (amikor az előző minta végét érjük). Minél közelebb kerül a „nézőpont” a megjelenített adatok végéhez, annál nagyobb mintát olvasunk ki az adatbázisból, amely végül egyenlővé válik az összes megjelenített adattal. Az adatok gyorsítótárban vannak a szerveren. A gyorsítótárban és a dinamikus listában a bejegyzések maximális száma 1 000 000.
Attól függően, hogy mit választ ki a dinamikus lista főtáblája, és milyen értéket vesz fel a Dinamikus olvasási tulajdonság, az adatok beolvasásának egyik vagy másik módszere használatos:

● A Fő tábla tulajdonság értékeként a következő táblák egyike van megadva: csereterv, címtár, bizonylatok listája, bizonylatnapló, jellemzőtípusok terve, számlatükör, számítási típusok terve, üzleti folyamat, feladat, számlák táblázata. üzleti folyamat pontjai:



● A Fő tábla tulajdonság értékeként a következő táblák egyike van megadva: az információs regiszter főtáblája, a felhalmozási regiszter, a számviteli regiszter, a számítási regiszter, a MovementsSubconto számviteli regiszter virtuális táblája:

● Dinamikus olvasási tulajdonság:
● Telepítve: az 1. módszer használatos (a módszerek leírása fent található).
● Reset: A 2. módszert használja (a módszerek leírása fent található).

● A Main table tulajdonság a kiválasztási feltételtáblázatot vagy a feladattáblázatot tartalmazza végrehajtónként (Tasks By Performer):
● Táblázatsort azonosító kulcs: Link.

● A Main table tulajdonság a SliceFirst vagy SliceLast információs regiszter virtuális tábláját adja meg:
● A táblázatsort azonosító kulcs: RecordKey.
● A Dinamikus olvasás tulajdonság nem alkalmazható.
● A 2. módszert alkalmazzuk (a módszerek leírása fent található).

● A Main table tulajdonság a virtuális regisztertáblák egyikére van állítva, a fent felsoroltak kivételével:

● A Dinamikus olvasás tulajdonság nem alkalmazható.

● A Main table tulajdonság nincs megadva, tetszőleges lekérdezést használ:
● A táblázat sorát azonosító kulcs: Szám.
● A Dinamikus olvasás tulajdonság nem alkalmazható.
● A 3. módszert alkalmazzuk (a módszerek leírása fent található).

A megjelenítéshez az adatokat részletekben továbbítják a klienshez, amelyek mérete megegyezik az adatolvasás 1. módszerében (a fejezet elején ismertetett) használt adag méretével.
Amikor dinamikus listát tartalmazó űrlapot hoz létre, minden látható dinamikus listához 45 adatelem kerül először az ügyfélnek (ha a lista 45-nél több elemet tartalmaz). Ha a dinamikus lista 45-nél több sort jelenít meg, akkor az űrlap megnyitásakor további szerverhívás történik a hiányzó adatelemek lekérésére.

4. Dinamikus lista beállításai

Tulajdonságlista beállításai - a Megnyitás hivatkozásra kattintva megnyílik egy űrlap a dinamikus lista megjelenítésének beállításához. A lista felállítása ugyanúgy történik, mint az adatösszeállítási rendszer hasonló műveletei.


Rizs. 2. Dinamikus lista feltételes stílusa

Amikor dinamikus listát állít be a konfigurációban, az alkalmazásfejlesztőnek lehetősége van a következőkre:
● állítsa be azokat a mezőket, amelyek szerint rendezni kíván;
● írja le a listában szereplő adatok kiválasztását;
● feltételes megjelenési beállítások megadása;
● állítsa be azokat a mezőket, amelyek szerint csoportosítani kívánja az adatokat.
Érdemes a rendezést a fejlesztőre állítani, ha nem elégedett a rendszer által beállított alapértelmezett rendezéssel.

TANÁCS. Emlékeztetni kell arra, hogy a rendezési mezők rossz kiválasztása (valamint az adatok kiválasztása és csoportosítása) negatívan befolyásolja a dinamikus mintavétel hatékonyságát.
Az alkalmazásfejlesztő szemszögéből a dinamikus listabeállítások több, egymással összefüggő részből állnak. A fő tulajdonság, amelyen keresztül a dinamikus lista beállításait kezelheti LinkerSettings. Ez az objektum három beállításkészletet tartalmaz, amelyek a rendszer futásakor meghatározzák a dinamikus listára alkalmazott végső beállításokat:
● Beállítások – a Konfigurátor módban létrehozott beállítások. A dinamikus lista Order tulajdonsága gyors hozzáférést biztosít a dinamikus lista beállításkészítőjének Settings.Order tulajdonságához, így a következő konstrukciók egyenértékűek:
List.Order és List.SettingsLinker.Settings.Order;
● UserSettings – ezek a beállítások, amelyeket a felhasználó módosít az 1C:Enterprise módban;
● Rögzített beállítások – ezek a beállítások a beépített nyelvből származnak. Ez a tulajdonság kiválasztási értékeket is tartalmaz, amelyek a paraméterei segítségével kerülnek át az űrlapra. A dinamikus listatulajdonságok Kijelölés, Beállítások, Feltételes megjelenés gyors hozzáférést biztosítanak a dinamikus listabeállítás-készítő rögzített beállításaihoz. Más szóval, ezek a hívások egyenértékűek:
List.Settings Composer.FixedSettings.Selection és List.Selection.
A dinamikus lista végső beállításainak létrehozásakor a különböző beállításokat a következőképpen kombináljuk:
● 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 magukban foglalják az egyéni beállításokat is
(List.ComposerSettings.UserSettings). Ezen túlmenően, ha valamelyik beállítási elem nem elérhetőként van megjelölve, akkor ezek a beállítások a List.Settings Composer tulajdonságból származó beállítások közé kerülnek. Beállítások.
● 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 List.SettingsComposer.CustomSettings tulajdonság eredő beállításaiba.
● A nem elérhetőként megjelölt elemek bekerülnek a List.SettingsComposer.Settings tulajdonság eredő beállításaiba.
● A rögzített beállítások (List.SettingsComposer.FixedSettings) „ahogy vannak” hozzáadódnak a kapott beállításokhoz. Ugyanakkor elfogadhatatlan, hogy a fix és a felhasználói beállítások azonos nevű beállításokat tartalmaznak, például a feltételben azonos bal értékű kijelölést.

Ha a dinamikus lista beállításai olyan beállításokat tartalmaznak, amelyeket a funkcionális beállításokkal letiltottak, a dinamikus lista adatok lekérésekor ezek a beállítások törlődnek az elérhető beállítások listájáról.
A dinamikus lista beállítási ablakában szabályozható, hogy mely beállítások lesznek elérhetők a felhasználó számára, és melyek nem.


Rizs. 3. Szabályozza a felvételt a felhasználói beállításokban

Az ablak alján található jelölőnégyzet (lásd 3. ábra) felelős a beállítások teljes típusának (normál vagy gyors) elhelyezéséért. Ez a funkció kiválasztásra, rendezésre, csoportosításra és feltételezésre áll rendelkezésre. Ha a beállításokat a Gyorskiválasztás szerkesztési móddal adjuk meg, akkor a dinamikus listát megjelenítő űrlap tábla Felhasználói beállítások csoport tulajdonságában meg kell adni az űrlapnak egy üres csoportját, amelyben a gyorsfelhasználói beállításokhoz tartozó elemeket kell megadni. megjelenik a dinamikus lista. Ha a csoport nincs megadva, a gyors felhasználói beállítások nem jelennek meg az űrlapon. Lehetőség van arra is, hogy a dinamikus listabővítmény CreateCustomSettingsFormItems() metódusával kifejezetten meghívja az egyéni beállítások létrehozását a beépített nyelv használatával.
Azt is kiválaszthatja, hogy elhelyezzen-e bizonyos beállításokat a felhasználói beállításokban. Ez a funkció a kiválasztáshoz és a feltételes tervezési elemekhez érhető el (lásd 3. ábra).

Ha egy dinamikus lista megnyitásakor különleges beállításokat kell betölteni, ezt kétféleképpen teheti meg:
● A dinamikus lista űrlap UserSettings paraméterének használata. Az ebben a paraméterben szereplő adatok a felhasználó dinamikus lista beállításaiba kerülnek.
● A paraméterUserSettingsKey dinamikus lista űrlap használatával. Ha egy űrlap megnyitásakor megadja ezt a paramétert, akkor a beállítások tárolójában található felhasználói beállítások a megadott kulccsal betöltődnek a dinamikus listába, amely az űrlap fő attribútuma.

5. Keresés egy dinamikus listában

Az űrlapon található dinamikus lista lehetővé teszi a megjelenített adatok interaktív keresését. A keresés a következő eszközökkel végezhető el: keresősáv, kereső párbeszédablak, aktuális érték keresése, keresési előzmények felhasználása és időszak beállítása (dokumentumokat megjelenítő dinamikus listák esetén). A keresés eredménye korlátozott számú rekord
dinamikus lista (azok közül, amelyek egy adott felhasználó számára elérhetők), amelyek megfelelnek a keresési feltételeknek.
A dinamikus lista keresési funkcióinak szabályozásához három táblázattulajdonság van a dinamikus listát megjelenítő felügyelt űrlapon:
● Keresési karakterlánc pozíciója – meghatározza a keresett karakterlánc pozícióját. A következő értékeket veheti fel: Auto, Command Bar, None, Top, Bottom.


Rizs. 4. Keresési karakterlánc dinamikus listában

Ha ennek a tulajdonságnak az értéke Parancspult, akkor a keresési karakterlánc megjelenik az űrlapparancspanelen (ha a dinamikus lista a fő űrlapattribútum) vagy a dinamikus listához társított parancspanelen. A parancssorba helyezett keresősáv mindig a parancssor jobb széléhez van nyomva (a keresősáv jobb oldalán található gombokkal együtt).
Ha a tulajdonság értéke Nem, akkor a keresési karakterlánc nem lesz az űrlapon, és amikor elkezdi beírni a keresési karakterláncot, megnyílik egy párbeszédablak.
Ha a tulajdonság Top értékre van állítva, a keresősáv a lista parancssora és a dinamikus listát megjelenítő táblázat között található. Ha a tulajdonság alsó értékre van állítva, a keresési karakterlánc közvetlenül a dinamikus listát megjelenítő táblázat mögé kerül.


● Ha a Kompatibilitási mód tulajdonság beállítása Ne használjon, vagy a 8.3.4-es verziónál régebbi – az érték a Parancspult.
Lépjen a keresősorra az alábbiak szerint:
● A Ctrl+F billentyűkombináció megnyomásával;
● Egér;
● Amikor elkezd beírni egy dinamikus listát (figyelembe véve a dinamikus lista SearchOnTyping tulajdonságának értékét).
● Nézet állapot pozíciója – leírja, hogy hol jelenik meg a nézet állapota: milyen mezőkben keresett és milyen értékeket
minden területen keresett. A következő értékeket veheti fel: Auto, None, Top, Bottom


Rizs. 5. Keresés állapota a dinamikus listában

Ha a tulajdonság értéke Nem, akkor a nézet állapota nem lesz jelen az űrlapon. Ennek eredményeként csak a Keresés törlése gomb elérhetősége alapján lehet majd megállapítani, hogy a keresés befejeződött-e vagy sem.
Ha a tulajdonság Top értékre van állítva, a nézet állapota a lista parancssora és a dinamikus listát megjelenítő táblázat között lesz. Ha a tulajdonság alsó értékre van állítva, a nézet állapota közvetlenül a dinamikus listát megjelenítő táblázat után kerül.
Ha az űrlapot az 1C:Enterprise 8.3.4-es vagy korábbi verziójában hozták létre, akkor a tulajdonság értéke No. Ha az űrlapot az 1C:Enterprise 8.3.5-ös vagy régebbi verziójában hozták létre, a tulajdonság Auto értékre van állítva. Az ingatlan valós értéke ebben az esetben a következőképpen kerül meghatározásra:
● Ha a Kompatibilitási mód tulajdonság 8.3.4-es (és régebbi) verzióra van állítva – No érték;
● Ha a Kompatibilitási mód tulajdonság beállítása Ne használjon, vagy régebbi, mint a 8.3.4-es verzió – érték Top;
● Search Control Position – Meghatározza, hogy hol jelenjen meg a keresésvezérlő gomb. A gomb megnyit egy menüt, amely a következő információkat tartalmazza: parancsok Keresés aktuális érték szerint, Speciális keresés, Keresés megszakítása, Időszak beállítása (dokumentum- és naplólistákhoz) és keresési lekérdezések előzményei (utolsó 5 lekérdezés). A tulajdonság a következő értékeket veheti fel: Auto, None, Command panel.


Rizs. 6. Keresés kezelése dinamikus listában

Ha a tulajdonság értéke Nem, akkor a keresésvezérlő gomb nem lesz az űrlapon (de a parancsok elérhetők lesznek a További menüben). A Command Bar tulajdonság értéke egy gombot helyez el a dinamikus listát megjelenítő táblázathoz társított parancssoron.
Ha az űrlapot az 1C:Enterprise 8.3.4-es vagy korábbi verziójában hozták létre, akkor a tulajdonság értéke No. Ha az űrlapot az 1C:Enterprise 8.3.5-ös vagy régebbi verziójában hozták létre, a tulajdonság Auto értékre van állítva. Az ingatlan valós értéke ebben az esetben a következőképpen kerül meghatározásra:
● Ha a Kompatibilitási mód tulajdonság 8.3.4-es (és régebbi) verzióra van állítva – No érték;
● Ha a Kompatibilitási mód tulajdonság beállítása Ne használjon, vagy a 8.3.4-es verziónál régebbi – az érték a Parancspult;
Ha egy űrlapon több parancspanel is található, amelyekhez a parancsok forrása a kezelt űrlap egyik táblája (amely dinamikus listaadatokat jelenít meg), akkor a keresősor és a keresésvezérlő gomb csak egy parancspanelben található:
● Vagy magának a dinamikus lista parancssorában (ha engedélyezve van az automatikus kiegészítés)
● Vagy a többi parancspanelen.

Nézzük meg a dinamikus listában történő keresés használatának jellemzőit:
● Ahhoz, hogy a keresés kényelmes legyen (a teljesítmény szempontjából is), engedélyeznie kell a teljes szöveges keresést minden konfigurációs objektumra, amely a dinamikus lista fő táblázataként használható. Ezenkívül a teljes szöveges keresésnek tartalmaznia kell a konfigurációs objektumok minden részletét, amelyek megjelenhetnek egy dinamikus listában, és amelyekhez keresésre lehet szükség.
Ha egy objektumot kizárunk a teljes szöveges keresésből, akkor a szóban forgó keresési mechanizmus működik, de egy ilyen keresés teljesítménye rendkívül alacsony lesz. Nem ajánlott a keresést olyan objektumokon használni, amelyeket nem indexel a teljes szöveges keresés.
● Az alkalmazásmegoldásnak rendelkeznie kell egy rutinfeladattal, amely rendszeresen frissíti a teljes szöveges keresési indexet.

● A keresés nem a dinamikus lista (és a konfigurációs objektum) összes oszlopában történik, hanem csak a táblázatban megjelenő oszlopokban.
● A dinamikus listában a referenciatípusok tetszőleges ábrázolású mezői alapján történő keresést a használt mezők végzik
reprezentáció kialakítása (lásd itt). A nézetben szereplő mezőket a megfelelő objektum ViewFieldGettingProcessing() kezelőjének figyelembevételével kapjuk meg.
● Meghatározott főtáblázattal rendelkező dinamikus listák esetén teljes szöveges keresést használunk a főtáblán. A fő táblázat összes nem indexelt hivatkozása hozzáadódik a teljes szövegű keresési eredményekhez. A főtábla teljes szöveges keresésének eredménye kulcsmezők alapján kerül kiválasztásra. A teljes szöveges keresést a listában más táblákból megjelenített mezőkben is végrehajtja (ha a mező és a konfigurációs objektum teljes szöveges keresést használ). A teljes szöveges keresés engedélyezése nélkül előfordulhat, hogy az adatok
talált, de maga a keresés nagyon lassú lesz.
Ha hiba történik a teljes szöveges keresés végrehajtása során, a keresés a teljes szöveges keresés alkalmazása nélkül történik.
Ez például akkor fordulhat elő, ha egy betűt és nagy számú sort keres az információs bázisban ezzel a betűvel kezdődően.
● Ha egy dinamikus lista főtáblájának mezőjéhez Egyenlő összehasonlítási típusú kijelölést használunk, akkor teljes szöveges keresés végrehajtásakor a rendszer egy kiválasztási értéket ad a tábla keresési lekérdezéséhez.
● A keresési karakterlánc szavakra van felosztva. Ez a partíció a következő szabályok szerint történik:
● A sor megszakad, szóköz és tabulátor karakterek használatával határolóként.
● Ezután minden eredményül kapott fragmentum feldolgozásra kerül:
● Ha a töredék dátumábrázolás (idővel vagy anélkül), az aktuális munkamenet területi beállításai alapján, akkor a szó a töredék.
● Ellenkező esetben a töredéket a „,.-/\” karakterek határolóként használva tovább osztják. Ebben az esetben a karakterlánc minden egyes eredő töredéke szónak minősül.

● Minden szóhoz saját feltételrendszer jön létre, amelyeket „VAGY”-val kombinál. Ez a feltételkészlet akkor jön létre, ha a teljes szöveges keresés egy adott szóra abban a táblázatban, amelyből ezt a mezőt kapta, legalább egy objektumot adott vissza, vagy nem használt teljes szöveges keresést ehhez a mezőhöz. A feltételek a következőképpen alakulnak:
● A String típusú mezőnél a feltétel a FieldName LIKE %Word%.
● Szám típusú mező esetén a feltétel FieldName=Érték formátumú, ahol az Érték egy szám típussá konvertált szó. Ha a dobás nem hajtható végre, a mezőkeresés nem történik meg.
● A szót a program részkarakterláncként keresi az aktuális munkamenethez definiált alapértelmezett logikai reprezentációban. Ha a keresett szó megtalálható egy nézetben, akkor megkeresi a szót megtaláló nézetnek megfelelő értéket. Ebben az esetben a keresés nem használja a Format form elem tulajdonsággal megadott nézeteket.
● Dátum típusú mező esetén a feltétel így néz ki: FieldName>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
egy vagy két számjeggyel jelölve az év az aktuális századra csökken, és ez az érték hozzáadódik a keresési feltételhez.
● A referenciamezők esetében a keresés a referencianézet létrehozásához használt mezőkön történik. Mindegyik mezőben keressen
a fent leírt szabályok szerint végezzük. A keresés nem használ egyéni adatábrázolás létrehozására használt mezőket.
Az egyes szavakhoz tartozó feltételeket „ÉS”-vel kombinálják.
● A kezdő nullákkal rendelkező értékek esetén kereshet vagy a kezdő nullákkal rendelkező karakterláncban, vagy a kezdő nullák nélkül megadott karakterláncban.
● Ha egy dinamikus lista dokumentumok listáját vagy dokumentumelőzményeket jelenít meg, akkor a megadott listamegtekintési intervallum is megjelenik az űrlap azon területén, amely a kívánt dinamikus lista nézeti állapotának megjelenítésére van fenntartva.
● A keresés aktuális érték alapján parancs nem érhető el, ha a dinamikus lista főtáblája a kiválasztási feltétel.
● A talált karakterlánc-töredékek kiemelve jelennek meg a táblázatban.
● Egy oszlophoz csak egy keresési karakterlánc támogatott. Ha új keresési lekérdezést ad hozzá egy már keresett oszlophoz, a keresési kifejezés lecserélődik, nem pedig a két keresési lekérdezés összeadása.
● Ha az űrlaphoz nincs hozzáadva az űrlap Keresési karakterlánc megjelenítése (űrlapelem-kiegészítés Forrás tulajdonság), amely dinamikus listát jelenít meg, akkor a Ctrl+F billentyűkombináció megnyomásával megnyílik a keresési párbeszédpanel.


Rizs. 7. Keresés párbeszédpanel

Ha az űrlap egy dinamikus listát megjelenítő táblázathoz (űrlapelem-kiegészítés Forrás tulajdonság) társított űrlapelem-kiegészítést tartalmaz Keresési karakterlánc megjelenítése, akkor a keresési párbeszédpanel megnyitásához használja a Speciális keresés parancsot.
● A keresési párbeszédpanel használatakor tartsa szem előtt a következőket:
● Ha a keresési párbeszédpanelt billentyűparancs segítségével nyitja meg, az aktuális cella értéke megjelenik a Keresendő sorban, a Hogyan keressünk kapcsoló értéke pedig Pontos egyezés szerint.

● A keresési párbeszédablak megnyitása egy keresési karakterlánc beírásával a dinamikus listába azt eredményezi, hogy a Hogyan keressünk kapcsoló értéke A karakterlánc része szerint értékre van állítva, és a beírt szöveg a Mit a keresőmezőhöz.

6. Az adatok megjelenítése dinamikus listával

Dinamikus listák használatakor előfordulhat, hogy különféle műveleteket kell végrehajtania a dinamikus lista által jelenleg megjelenített adatokon, figyelembe véve az alkalmazott kijelöléseket és kereséseket. Ilyen műveletek a következők: a megjelenített információk feldolgozása, például a kiválasztott dokumentumok újraküldése vagy a kiválasztott objektumok egyes részleteinek beállítása, az elérhető objektumok listájának létrehozása (tervvel stb.), például nyomtatáshoz vagy táblázatos dokumentumba mentéshez.
A dinamikus lista által megjelenített adatok megszerzéséhez használja a GetExecutableDataCompositionSchema() és
GetExecutableDataCompositionSettings().
Példa az adatok fogadására:

Schema = Elements.List.GetExecutableDataCompositionSchema();
Beállítások = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Séma, Beállítások);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Az adatok értékgyűjteménybe (táblázatba vagy értéklistába) történő bejuttatása ugyanígy történik.
A dinamikus listaadatok ilyen módon történő beszerzése számos olyan tulajdonsággal rendelkezik, amelyeket figyelembe kell venni az alkalmazásmegoldások kidolgozásakor:
● A következő táblázatkialakítás nem támogatott:
● Változó vonalszínek;
● Fejléc kép;
● Kép az alagsorról;
● Lábléc háttérszíne;
● A lábléc szövegének színe;
● Footer betűtípus;
● Vízszintes helyzet az alagsorban;
● Jelszó mód.
● A kezelt űrlaphoz megadott feltételes megjelenés nem támogatott;
● Ha egy Hierarchikus táblát növekvő sorrendbe rendez egy Link típusú mező alapján, akkor mindig az üres hivatkozást tartalmazó rekordok kerülnek először.

8.3.10.2168 verzióban implementálva.

Mint tudják, a dinamikus lista kényelmes és hasznos nagy listák gyors megjelenítéséhez. Meglehetősen rugalmas, lehetővé téve a szabványos lekérdezés módosítását, és akár saját összetett lekérdezés létrehozását is. Ennek köszönhetően lehetősége van a lista főbb adataihoz kapcsolódóan különböző kiegészítő adatok megjelenítésére.

Az ilyen sokoldalúságnak azonban árnyoldala is van. Az a vágy, hogy „mindent egyszerre mutass meg”, arra késztetheti, hogy jelentősen megnehezítse a kérést. Ennek eredményeként a végrehajtási tervek nem hatékonyak, és ennek eredményeként csökken a teljesítmény a lista megjelenítése és görgetése során.

Ezen kívül számos olyan probléma merül fel, amelyekben a listaadatok kiválasztásának és formázásának algoritmusa meglehetősen bonyolult. Ezekben az esetekben az egyéni lekérdezés és a feltételes stílusozási lehetőségek egyszerűen nem elegendőek. Szeretnék egy „szabadabb” és „pontosabb” eszközt, amely lehetővé teszi számomra, hogy „bármit” és „csak ott, ahol szükséges”.

Esemény adatok fogadásakor a szerveren

Kifejezetten ezekre a célokra vezettünk be egy új kezelőt. Hozzáadjuk a dinamikus listát megjelenítő táblázatkiterjesztéshez.

Ezt a kezelőt a szerver hívja meg, miután a dinamikus lista megkapta és formázta a következő adatot megjelenítésre.

Fontos jellemzője, hogy az űrlapkontextus nem érhető el ebben a kezelőben. Csak azon listasorok gyűjteményével dolgozhat, amelyek az adatbázisból érkeznek, már kiválasztották és megtervezték a dinamikus lista beállításainak megfelelően.

Módosíthatja ezekben a sorokban az adatokat, vagy saját tervezést alkalmazhat a cellákra. A következő tervezési lehetőségek állnak rendelkezésre: Háttérszín, Szöveg szín, Betűtípus, Vízszintes helyzetben, Láthatóság, Elérhetőség, Kijelző, SzövegÉs Formátum.

Ezenkívül, ha szükséges, megtekintheti és elemezheti a teljes dinamikus lista beállításainak másolatát. De a beállításokat nem tudja módosítani.

A legegyszerűbb használati eset

Ennek a kezelőnek a célját a legkönnyebben egy példa segítségével érthetjük meg. Példa erre, hogy egyenlegeiket a felhalmozási nyilvántartásból árujegyzékben jelenítsék meg. Egy bizonyos értéknél kisebb mennyiség piros színnel van kiemelve.

Eddig ezt a problémát egy bal oldali csatlakozással oldották meg a dinamikus listakérésben, és egy feltételes listatervet állítottak be a konfigurátorban.

Most így dönt. A szabványos listalekérdezés nem bonyolult, csak egy álmezőt ad hozzá Maradék.

És a felvezetőben WhenReceivingDataOnServer() Csak a kapott sorokra számítja ki a maradékokat. És akkor a kis maradékok pirossal kiemelve.

Itt, módszer szerint GetKeys(), a dinamikus listasorok gyűjteményéből megkapja a kulcsaikat (hivatkozásokat), és átadja ezeket a kulcsokat a többi lekérdezésnek.

Ezután a lekérdezés eredményeinek bejárása során kulcsonként megkapja a szükséges sorokat az oszlopban Maradék helyezze el az értéket, és állítsa be a mező kialakítását, ha szükséges.

Ennek eredményeként a felhasználó a következő listát látja:

Mi az előnye ennek a lehetőségnek?

Először is, a listalekérdezés egyszerű marad. Vagy nem marad egyszerű, hanem csökken benne a kapcsolatok száma. Ez azt jelenti, hogy nagy valószínűséggel egy jó terv készül neki.

Másodszor, a kezelőben lévő maradékok lekérése csak egyszer, míg a listakérés többször is végrehajtható (a listabeállításoktól és a lapozó szkripttől függően).

Harmadszor pedig az új kezelő azután kerül végrehajtásra, hogy a fő adatok beérkeztek az adatbázisból, és átment a jogosultsági ellenőrzésen. Ez azt jelenti, hogy bizonyos forgatókönyvekben a kapcsolódó adatok lekérése egy kezelőben privilegizált módban, az engedélyek ellenőrzése nélkül is elvégezhető. Ez felgyorsítja a listát.

A szerkeszthető és hozzáadott mezőkre vonatkozó korlátozások

Az a tény, hogy a kezelőben módosíthatja a listamezők értékeit, van egy olyan tulajdonsága, amelyet mindig figyelembe kell venni.

Ha nem tesz további intézkedéseket, a felhasználót nagyon meglepheti a módosított mezők szerinti csoportosítás, rendezés vagy kijelölés (beleértve a keresést is) eredménye. Végül is ezeket a műveleteket a kérelem által kapott eredeti adatok alapján hajtják végre, nem pedig a felhasználó által látott adatok alapján.

Ezért azokban az esetekben, amikor módosítja a mezőértékeket, ne felejtse el kizárni azokat a csoportosításból, rendezésből és kijelölésből. Három új módszert vezettünk be kifejezetten erre a célra.

Ezenkívül egyes forgatókönyvekben érdemes lehet vizuálisan kiemelni az ilyen oszlopokat a táblázatban, hogy a felhasználók láthassák, hogy ezek az oszlopok „különlegesek”, nem úgy, mint mindenki más.

Végre minden hétéves álma valóra vált. Milyen gyakran kérték a 7.7-es program felhasználói a tételek normál kiválasztását? Így láthatja az egyenlegeket, árakat és beállíthatja a szűrőket. Különféle trükköket kellett kitalálnunk, beleértve a külső komponensek írását is. Az 1C 8.2-ben dinamikus listák jelentek meg. Azt javaslom, hogy fontoljuk meg, mi ez, és mit adhatnak nekünk az 1C 8.3-ban.

Vegyünk alapul az 1C egy bizonyos tesztkonfigurációját: „Enterprise Accounting 3.0”. Most nem fogunk kiválasztani, csak hozzáadunk egy másik kiválasztási űrlapot a „Nómenklatúra” könyvtárba, és ideiglenesen azt tesszük főként:

Létrehozásakor a rendszer alapértelmezés szerint hozzáad egy „Dinamikus lista” típusú táblázatmezőt az űrlaphoz.

Nézzük meg a tulajdonságait, és nézzük meg, mi van ott.

Először is érdekel minket az „Egyéni kérés” jelölőnégyzet. Ez felfedi számunkra a dinamikus lista minden előnyét. Lehetőségünk lesz saját kérésünk megírására, paraméterekkel. Jelölje be a négyzetet, és kattintson a „Megnyitás” linkre:

Megnyílik egy ablak a kész kóddal. Egyelőre a „Nómenklatúra” könyvtár összes mezője egyszerűen felsorolva van.

Szerezzen ingyen 267 videóleckét 1C-n:

Amint látja, van egy „ ” hívógomb és egy jelölőnégyzet, amely lehetővé teszi a lista tartalmának dinamikus megváltoztatását. Vagyis ha egy másik felhasználó módosít valamit a könyvtárban, az a mi listánkban is megváltozik. Ezen kívül van egy „Beállítások” fül, de ezt később érintjük.

Egyéni lekérdezés dinamikus listában

Először hozzuk létre a szükséges kérelmet egyenlegekkel és árakkal. Mint az:

„Beállítások” fülre

És most a legjobb rész! Lépjen a „Beállítások” fülre. És azonnal látjuk, hogy az első lapon tetszőleges kiválasztást végezhetünk a kérés bármely mezőjéhez:

Lekérdezési paraméterek programozott beállítása dinamikus listában 1C 8.3

Ne felejtse el, hogy két paraméterünk van a kérésben: „Időszak” és „Ártípus”. Ezeket át kell adnunk a kérésnek, különben hiba történik.

Írjuk be ezeket a paramétereket az űrlapparaméterekbe, és adjuk hozzá a következő sorokat az űrlapmodulban:

&OnServerProcedureWhenCreatingOnServer(hiba, StandardProcessing) lista. Lehetőségek. SetParameterValue("Időszak" , Paraméterek. Dátum) ; Lista. Lehetőségek. SetParameterValue("PriceType", Parameters.PriceType) ; EndProcedures Otthoni jegyzetek az üvegen keresztül

2014.04.21. Dinamikus lista adatok fogadása

Megvalósítva a 8.3.6.1977 verzióban.

Bevezettük a dinamikus lista segítségével megjelenített adatok egyszerű és kényelmes megszerzésének lehetőségét.

Dinamikus listaadatokra lehet szüksége, hogy azokat nem szabványos, „specifikus” formában nyomtathassa ki. Vagy azért, hogy bizonyos műveleteket hajtsanak végre velük. Például küldjön levelet minden olyan vállalkozónak, akit bizonyos szempontok alapján kiválasztott a listából.

Ezen kívül számos olyan feladat van, amelyben a felhasználó az elemlistán kívül az ehhez a listához tartozó összesítő adatokat is szeretné látni. Például egy bizonyos termékcsoport és egy beszállító termékeinek kiválasztása után azonnal látni szeretné az ilyen termékek teljes számát az adatbázisban.

A dinamikus lista önmagában nem tudja megadni ezt az információt. A dinamikus lista célja, hogy nagy mennyiségű adatot gyorsan megtekinthessen. Ezért az adatokat darabokban olvassa be, amelyek egy vagy két képernyőn történő megjelenítéséhez szükségesek. És „semmit sem tud”, például arról, hogy mennyi adatot kell számolnia.

Általánosságban elmondható, hogy a felhasználó által kívánt további információk megszerzéséhez adatbázis-lekérdezést kell futtatnia. Pontosan ugyanaz, mint a dinamikus listában.

Régen képes voltál erre. De nem volt mindig könnyű. Hiszen az eredeti kérés szövegén kívül, amelyen a dinamikus lista működik, ismernie kellett az összes kijelölést, rendezést és egyéb paramétereket, amelyeket a felhasználó interaktívan beállított az adatokat megjelenítő táblázatban.

Most ez a probléma egyszerűen megoldható. A dinamikus listatábla két új módszerrel rendelkezik:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Így megkapja magát az adatelrendezési sémát, és ami a legfontosabb, annak összes beállítását, aminek köszönhetően a felhasználó pontosan így látja a listát. Csak annyit kell tennie, hogy programozottan összeállítja az elrendezést, és megjeleníti azt értékgyűjteményben (programfeldolgozáshoz) vagy táblázatos dokumentumban (megjelenítéshez):

Ennek eredményeként egy dinamikus listatáblázatban megjelenített oszlopokat és sorokat tartalmazó struktúrát (vagy jelentést) kap.

A lényeg az, hogy a dinamikus listatáblázatból kapott elrendezés és beállítások figyelembe veszik többek között az oszlopok láthatóságát és az alkalmazott keresést. Mivel a beállításokat külön szerezzük be, saját céljaira módosíthatja a mezők összetételét, és például megkaphatja a lista összes oszlopát, nem csak azokat, amelyeket a felhasználó láthat.

Táblázat-dokumentumban történő kiadáskor van még egy kellemes pillanat. Általában a jelentés megjelenése megfelel a dinamikus listatábla megjelenésének a séma és a beállítások fogadásakor. Beleértve a táblázat feltételes kialakítását. Csak akkor lesz szükség további műveletekre, ha az űrlap feltételes kialakítását át szeretné vinni a jelentésbe.