1s 8.3 ta bort val i dynamisk lista

Skriv ut (Ctrl+P)

Dynamisk lista

1. Allmän information

En dynamisk lista är en speciell datatyp som låter dig visa godtycklig information från databastabeller på ett formulär. För att göra detta måste du ange från vilken tabell du vill visa data, eller beskriva det resulterande urvalet i ett frågespråk.
Mekanismen är baserad på ett datasammansättningssystem och ger möjligheter att sortera, välja, söka, gruppera och villkorligt formatera mottagna data. I det här fallet är datakällan en begäran, som antingen genereras av systemet automatiskt (baserat på angivna data) eller skrivs manuellt av utvecklaren.

Ris. 1. Alternativ för att skapa en dynamisk lista

När du skapar formulärattribut av typen DynamicList en utvecklare kan välja två sätt att skapa en datafråga:
● Genom att specificera huvudtabellen - i det här fallet behöver du bara ange tabellen (Main table-egenskap) från vilken du vill ta emot data, och systemet kommer automatiskt att generera en fråga för data (se den högra delen i Fig. 1).
● Generera en begäran manuellt - för detta måste du ställa in egenskapen Custom request (se den vänstra sidan av fig. 1). Efter detta kommer manuell generering av en begäran att hämta data från infobasen att vara tillgänglig.
En fråga kan hämta data från flera tabeller, så du kan ange en primär tabell. Detta för att den dynamiska listan ska kunna avgöra vilken data som är primär och vilken som är sekundär, och kan korrekt välja och visa information, samt tillhandahålla standardkommandon. Men om det är omöjligt att bestämma huvudtabellen i frågan, kan den inte specificeras, men då
den dynamiska listan kommer inte att tillhandahålla kommandon relaterade till huvudtabellen. Dessutom, i det här fallet (utan att specificera huvudtabellen) kommer effektiviteten att erhålla data med en dynamisk lista att reduceras avsevärt.
För att förbättra prestandan rekommenderas att alla kopplingar som används i en anpassad fråga endast för att hämta ytterligare data görs valfria genom att använda ett frågespråktillägg för datasammansättningssystem.
För en dynamisk lista, som är formulärets huvudattribut, är det möjligt att ställa in urvalsvärden med hjälp av en formulärparameter Urval. För att göra detta är det nödvändigt att namnet på strukturegenskapen som finns i parametern Urval,
sammanföll med namnet på det dynamiska listvalsfältet. I det här fallet kommer värdet på strukturegenskapen att ställas in som rätt värde för urvalselementet. Om en array, en fast array eller en värdelista skickas som värdet av ett element i urvalsparametern i en dynamisk listform, så läggs ett villkor med alternativet In List till i urvalet, i rätt värde varav en lista med värden placeras (till vilken arrayen och den fasta arrayen konverteras).
En godtycklig fråga i en dynamisk lista kan vara en fråga där en parameter används för att generera värdet på ett fält, till exempel:

VÄLJA
VAL
NÄR Leverans.koefficient = 1 DÅ &Presentation
ANNAT Leverans. Koefficient
SLUT SOM Förhållande
FRÅN

Dessutom, om typen av parametervärde skiljer sig från typen av objektattribut (t.ex. Rekvisita 1 har typ siffra, och parametervärdet är typ Linje), för att visa fältet korrekt måste du uttryckligen casta parametervärdet till önskad typ:

VÄLJA
VAL
NÄR Delivery.Coefficient = 1 DÅ EXPRESS(&Representation AS String(100)) ANNARS Leverans. Koefficient
SLUT SOM Förhållande
FRÅN
Document.Delivery of Products HUR man levererar

Om fältet som valet ställs in är inaktiverat med hjälp av funktionella alternativ, installeras inte val av ett sådant fält, även om urvalsvärdet skickas som formulärparametrar eller urvalsparameterlänkar.
Genom att använda egenskapen Dynamisk dataläsning indikerar du för en dynamisk lista behovet av att läsa data i små portioner
(för mer information om sätt att få data med hjälp av en dynamisk lista och datacache, se nedan). Oavsett detta attribut gäller följande villkor:

● Om visningsläget är inställt på hierarkisk lista kommer endast data för den aktuella gruppen och data för alla överordnade element (utan underordnade) att läsas.
● Om trädvyläget är inställt, kommer endast data från öppna trädnoder att läsas.
● Engångsladdning av dynamisk listdata stöds inte om hierarkisk surfning är inställd (Visningsegenskapen är inställd på Träd) och den initiala trädvisningen är inställd på Expandera alla nivåer. För att få data kommer lika många förfrågningar till servern att göras som det finns noder i den visade listan.
Inom en enda datahämtning återanvänder en dynamisk lista tidigare skapade temporära tabeller om följande villkor är uppfyllda:
● Listbatchfrågan har inga frågor efter huvudbatchfrågan.
● Sammansättningen av temporära tabeller och fälten i dem är oförändrad från föregående körning av batchbegäran.

I sitt arbete använder den dynamiska listan värdena för följande egenskaper för metadataobjektdetaljer:
● format,
● redigeringsformat,
● tips,
● tecken för att markera negativa värden,
● mask,
● tecken för flerradsläge,
● tecken på avancerad redigering,
● lösenordsläge.
Vid visning och redigering av urvalet och parametrarna för datasammansättningssystemet används redigeringsformatet för motsvarande fält.

2. Begränsningar och funktioner

När du ställer in val i en dynamisk lista, kom ihåg att val inte påverkar grupper om visningsläget för den dynamiska listan är Hierarkisk lista eller Träd. Med "grupper" menar vi ett element i en katalog eller plan av karaktäristiska typer vars ThisGroup-egenskap är satt till True.
Kvalifikationer som automatiskt tillämpas av en dynamisk lista på standarddetaljerna Ägare, Förälder, Datum, Period och ThisGroup tillämpas
med hjälp av standardverktyg för datakompositionssystem. Urval, som automatiskt tillämpas av en dynamisk lista på nyckelfält, kan tillämpas både med standardhjälp av datasammansättningssystemet och genom att direkt lägga till villkor i förfrågningstexten I till fälten i huvudtabellen. Som ett resultat av tillämpningen av val med hjälp av layoutverktyg kan de tillämpas både i kapslade frågor och i parametrar för virtuella tabeller.

När du utvecklar dynamiska listor rekommenderas det att testa alla dynamiska listor med anpassade frågor. Under verifieringsprocessen bör du se till att om en listfråga innehåller kapslade frågor eller virtuella tabeller och i dessa fält med alias som matchar aliasen för standardinformationen Ägare, Förälder, Datum, Period, Denna grupp eller nyckelfält är tillgängliga för val, då är dessa fält giltiga och motsvarar standarddetaljerna som deras smeknamn matchar. Om så inte är fallet bör du ändra begäran så att de matchar eller
smeknamnet var annorlunda.
Om du väljer att manuellt generera en begäran, införs vissa begränsningar för begäran:
● Användning av FIRST-satsen i en dynamisk listfråga stöds inte. Om du behöver använda ett urval begränsat av antalet poster i en dynamisk lista, bör du omarbeta begäran för att generera en dynamisk lista på ett sådant sätt att det faktiska innehållet i begäran placeras i en underfråga och begränsa antalet poster mottogs i denna underfråga. Du kan också använda en tillfällig tabell istället för en underfråga.
● Val, sortering och gruppering stöds inte:

  • Enligt detaljerna i tabelldelarna.
  • Visa fält.
  • DataVersion-fältet.
  • Fördefinierat DataName-fält.
  • Fält för typ av kontoplanstabell.
  • Fält Typ av rörelse för ackumuleringsregistertabellen.
  • Fält TypeValues ​​för den karakteristiska typplanstabellen.
  • Typfält Typ;
  • Typfält String (obegränsad längd).
  • Fält av typen BinaryData.

● Sortering och gruppering efter Subconto-fält stöds inte<НомерСубконто>och ViewSubconto<НомерСубконто>Tabeller Rörelser Underkonto till redovisningsregistret.
● Gruppering efter fält som är frågespråksuttryck som innehåller aggregerade funktioner stöds inte.
● När huvudtabellen är vald har den dynamiska listfrågan följande begränsningar:

  • Anslutningar stöds inte.
  • Sektionen ORDER BY stöds inte. Du bör använda en fråga utan huvudtabell eller ställa in nödvändig ordning genom de dynamiska listinställningarna.

● Om en dynamisk lista visas som en hierarkisk lista eller träd, kommer en post inte att visas som en dynamisk lista om inte minst en förälder till den posten visas. Med andra ord, för att visa ett element i en hierarkisk lista, måste en dynamisk lista också visa alla föräldrar till det elementet upp till toppen av listan. I det här fallet menar vi med toppen av listan antingen
rotelementet för det hierarkiska objektet som visas av en dynamisk lista, eller elementet som är inställt som egenskapen ParentTopLevel för ett formulärtabelltillägg för en dynamisk lista.

Att använda följande tabeller som huvudtabell i en dynamisk lista stöds inte:

● En tabell som inte har en nyckel som unikt identifierar varje tabellpost (en referens för objekttabeller och en postnyckel för registertabeller). Följande tabeller kan dock ställas in som huvudtabell i en dynamisk lista (trots att de inte har någon nyckel):

● Underkontotabell för redovisningsregistret;
● alla virtuella tabeller i redovisningsregistret, förutom tabellen MovementsSubconto;
● tabeller med konstanta värden (inklusive tabellen Konstanter);
● tabeller över externa datakällor utan nyckelfält;
● kubtabeller över externa datakällor;
● ackumuleringsregistertabeller:

  • rotationsbord;
  • balansbord;
  • tabell över omsättning och saldon.

● beräkningsregistertabeller:

  • tabell över faktisk giltighetstid;
  • schemadata;
  • grundläggande information.

● Tabeller över tabellformade delar av föremål;
● Ändringsregistreringstabeller (används i datautbytesmekanismer);
● Sekvenstabeller;
● Konverteringstabeller (används i periodiska avräkningsmekanismer).
● En tabell som endast används i en fråga i en yttre koppling.

Med andra ord kommer en dynamisk lista med den angivna huvudtabellen att fungera korrekt om, som ett resultat av exekvering av frågan,
specificeras som en datakälla ökar inte antalet rader som erhålls från huvudtabellen (med hänsyn till det pålagda urvalet). Om, som ett resultat av att köra en fråga, antalet rader som erhålls av frågan från huvudtabellen ökar, kommer detta att leda till en kränkning av unikheten hos nyckeln i tabellens poster som visas i listan. I det här fallet måste du inaktivera användningen av den dynamiska listtabellen.
När du arbetar med en dynamisk lista måste du ta hänsyn till åtkomsträttigheterna till detaljerna som visas av listan:
● Data från dynamiska listkolumner som är markerade med egenskapen Använd alltid, men för vilka den aktuella användaren inte har vyrättigheten, överförs inte till klientsidan. Tillgång till data för sådana kolumner (med CurrentData-egenskapen och RowData()-metoden)
inte möjligt på kundsidan.
● Om den aktuella användaren inte har rättigheten Visa på ett nyckelfält i en dynamisk lista, resulterar hämtning av data från den dynamiska listan i ett åtkomstfel.
För en dynamisk lista som visar en uppräkningslista finns det inget alternativ att interaktivt anpassa listan.
Sammansättningen av kolumnerna och inställningarna för den dynamiska listan är associerade med frågefälten med hjälp av alias för urvalsfälten. Om ett alias inte uttryckligen anges i en fråga för ett urvalsfält och fältet är ett system, används fältnamnet för den engelska versionen av det inbyggda språket som ett alias.
Den angivna relationen innebär att när man ändrar (eller uttryckligen specificerar ett alias för ett fält för vilket ett automatiskt alias användes)
alias för frågefältet som genererar den dynamiska listdatan, inställningarna för dynamisk listattribut kommer att gå förlorade, formulärelementen "förlorar" de visade detaljerna, de dynamiska listinställningarna blir felaktiga, etc.
Om datakällan för en dynamisk lista är en tabell (vanlig eller virtuell), som låter dig ställa in ett urval per period, då om användaren ställer in visningsperioden i en sådan dynamisk lista (kommando Ställ in datumintervall...),
de angivna periodgränserna kommer att ställas in som urvalsvärden eller virtuella tabellparametrar. Om med hjälp av språkförlängning
frågor för datasammansättningssystemet, namnen på de virtuella tabellparametrarna specificerades uttryckligen - parametrarna med den angivna
namn. Tabeller för vilka det är möjligt att styra perioden för visning eller bearbetning av data:
● registertabeller (huvud- eller virtuella), för vilka det är möjligt att välja efter period (för beräkningsregistret - efter registreringsperiod);
● huvudtabeller över dokument, affärsprocesser och uppgifter;
● huvudtabeller över dokumentjournaler;
● huvudsekvenstabeller, sekvensgränstabeller.
Den dynamiska listfrågeparametern kan vara en matris eller en lista med värden. Men om parametern är en lista med värden kommer endast det första värdet i listan att användas som urvalsvärde. Om en dynamisk lista använder en fråga med parametrar, måste den initiala inställningen av parametervärden utföras i OnCreateOnServer-hanteraren.
Tänk på följande när du visar dynamisk listdata:
● När du programmatiskt ändrar egenskaperna för en dynamisk lista fylls inte kommandopanelerna som är kopplade till listan automatiskt i igen.
med denna dynamiska lista.
● Om flera fält är grupperade i en grupp med grupperingsläget i en cell och i de grupperade fälten finns ett fält som visas som en kryssruta, kommer denna kryssruta alltid att visas först i den resulterande cellen (till vänster om text).
I en dynamisk lista, när man bestämmer datatypen för fält vars uttryck inkluderar parametrar, fält eller literaler, bestäms den resulterande typen av typen av fält och literaler. Om parametervärdetypen inte ingår i den resulterande datatypen kommer dess värde att trunkeras.
Till exempel, i följande exempel kommer fältet att vara av typen Number.

VAL
NÄR DET ÄR LÖGN
DÅ 5
ANNAT
&Parameter
SLUTET

Om du ställer in parametern Parameter till ett värde av en annan typ, kommer den dynamiska listan för det fältet att få värdet 0 (standardvärdet för nummertypen).
Om du i en sådan situation behöver välja en parameter av en annan typ, rekommenderas att du använder frågespråkskonstruktionen UTTRYCKA. Till exempel,
om du i exemplet ovan behöver skicka en sträng som inte är längre än 100 tecken i parametern, bör du ersätta den enkla indikationen av parametern med ett uttryck med en explicit typ cast:

VAL
NÄR DET ÄR LÖGN
DÅ 5
ANNAT
EXPRESS(&Parameter AS String(100))
SLUTET

Om den godtyckliga texten i en dynamisk listförfrågan använder parametrar i uttrycken för urvalsfälten, bör du uttryckligen ange vilken typ av parametrar som använder konstruktionen UTTRYCKA. Till exempel istället för &Nomenclature AS Nomenklatur använda sig av
EXPRESS(&Nomenclature AS Directory.Nomenclature) AS Nomenclature. Annars kan det fungera att söka i sökfältet
felaktiga eller orsaka fel.

3. Metoder för att hämta och cachelagra data med en dynamisk lista

När du hämtar data att visa använder en dynamisk lista en av tre metoder:
1. Läsning från databasen utförs i bitar med ett antal dataelement något större än antalet rader som visas samtidigt av listan (men inte mindre än 20). Data cachelagras inte på servern.
2. Läsning från databasen görs på sidor med 1 000 dataobjekt. Data cachelagras på servern. Hierarkisk data cachelagras: inte mer än 2 sidor med element cachelagras för varje förälder. Högst 20 sidor med objekt cachelagras per dynamisk lista. Cachning kommer att aktiveras av en dynamisk lista för följande tabeller:
● Urvalskriterier;
● Alla tabeller i redovisningsregistret, förutom huvudtabellen och tabellen MovementsSubconto;
● Alla ackumuleringsregistertabeller, utom huvudtabellen;
● Alla tabeller i informationsregistret, utom huvudtabellen;
● Alla tabeller i beräkningsregistret, utom huvudtabellen;
● Virtuell tabell med uppgifter per artist;
● Tabeller över externa källor utan nycklar;
● Kuber från externa källor.

3. Läsning från databasen utförs i sidor om 1 000 element. Den första delen är lika med 1 sida. Varje efterföljande del ökar med 1 sida (när slutet av föregående prov nås). Ju närmare "synpunkten" rör sig mot slutet av den visade informationen, desto större läses provet från databasen och blir så småningom lika med alla visade data. Data cachelagras på servern. Det maximala antalet poster i cachen och den dynamiska listan är 1 000 000.
Beroende på vad som väljs av huvudtabellen i den dynamiska listan och vilket värde egenskapen Dynamic Reading tar, används en eller annan metod för att läsa data:

● En av följande tabeller anges som värdet på egenskapen Main table: utbytesplan, katalog, dokumentförteckning, dokumentjournal, plan för karaktäristiktyper, kontoplan, plan för beräkningstyper, affärsprocess, uppgift, tabell över affärsprocesspunkter:



● En av följande tabeller anges som värdet på egenskapen Main table: informationsregistrets huvudtabell, ackumuleringsregistret, redovisningsregistret, beräkningsregistret, den virtuella tabellen i redovisningsregistret MovementsSubconto:

● Dynamisk läsegenskap:
● Installerad: metod 1 används (beskrivning av metoderna ges ovan).
● Återställ: Metod 2 används (beskrivning av metoder ges ovan).

● Egenskapen Main table innehåller urvalskriteriumtabellen eller uppgiftstabellen efter executor (Tasks By Performer):
● Nyckel som identifierar en tabellrad: Länk.

● Egenskapen Main table anger den virtuella tabellen för informationsregistret SliceFirst eller SliceLast:
● Nyckel som identifierar en tabellrad: RecordKey.
● Egenskapen Dynamisk läsning är inte tillämplig.
● Metod 2 används (beskrivning av metoder ges ovan).

● Egenskapen Main table är inställd på en av de virtuella registertabellerna, förutom de som anges ovan:

● Egenskapen Dynamisk läsning är inte tillämplig.

● Egenskapen Main table är inte specificerad, en godtycklig fråga används:
● Nyckel som identifierar en tabellrad: Nummer.
● Egenskapen Dynamisk läsning är inte tillämplig.
● Metod 3 används (beskrivning av metoder ges ovan).

För visning överförs data till klienten i portioner, vars storlek liknar portionsstorleken i den första metoden för att läsa data (beskrivs i början av detta avsnitt).
När du skapar ett formulär som innehåller en dynamisk lista skickas 45 dataobjekt för varje synlig dynamisk lista initialt till klienten (om listan har fler än 45 objekt). Om den dynamiska listan visar fler än 45 rader kommer ett extra serveranrop att göras när formuläret öppnas för att hämta de saknade dataposterna.

4. Dynamiska listinställningar

Inställningar för egenskapslista - genom att klicka på hyperlänken Öppna öppnas ett formulär för att ställa in visningen av en dynamisk lista. Att sätta upp en lista görs på samma sätt som liknande operationer i ett datasammansättningssystem.


Ris. 2. Villkorlig styling av en dynamisk lista

När du skapar en dynamisk lista i konfigurationen har applikationsutvecklaren möjlighet att göra följande:
● ställ in de fält som du vill sortera efter;
● beskriv valet av data i listan;
● ange villkorliga utseendeinställningar;
● ställ in de fält som du vill gruppera data efter.
Det är vettigt att ställa in sorteringen till utvecklaren om du inte är nöjd med standardsortering installerad av systemet.

RÅD. Man bör komma ihåg att dåligt urval av sorteringsfält (liksom urval och gruppering av data) negativt påverkar effektiviteten av dynamisk sampling.
Ur en applikationsutvecklares synvinkel består dynamiska listinställningar av flera delar som är sammankopplade. Huvudegenskapen genom vilken du kan hantera inställningarna för en dynamisk lista är LinkerSettings. Det här objektet innehåller tre uppsättningar inställningar som, när systemet körs, bestämmer de slutliga inställningarna som tillämpas på den dynamiska listan:
● Inställningar – inställningar skapade i konfiguratorläget. Den dynamiska listans Order-egenskap ger snabb åtkomst till Settings.Order-egenskapen för den dynamiska listans inställningsbyggare, så följande konstruktioner är likvärdiga:
List.Order och List.SettingsLinker.Settings.Order;
● UserSettings – dessa är inställningar som ändras av användaren i 1C:Enterprise-läge;
● Fasta inställningar – dessa inställningar ställs in från det inbyggda språket. Den här egenskapen innehåller också urvalsvärden som överförs till formuläret med hjälp av dess parametrar. De dynamiska listegenskaperna Selection, Options, Conditional Appearance ger snabb åtkomst till de fasta inställningarna för den dynamiska listinställningsbyggaren. Med andra ord är dessa samtal likvärdiga:
List.Settings Composer.FixedSettings.Selection och List.Selection.
När du skapar de slutliga inställningarna för en dynamisk lista kombineras olika inställningsalternativ enligt följande:
● Om någon typ av inställningar är helt markerade som anpassade, inkluderar de resulterande inställningarna de anpassade inställningarna
(List.ComposerSettings.UserSettings). Dessutom, om några inställningselement är markerade som otillgängliga, kommer dessa inställningar att placeras i de resulterande inställningarna från egenskapen List.Settings Composer. Inställningar.
● Om någon typ av inställningar är markerade som anpassade inte helt, utan element för element, då:
● Objekt markerade som anpassade kommer att inkluderas i de resulterande inställningarna från egenskapen List.SettingsComposer.CustomSettings.
● Objekt markerade som otillgängliga kommer att inkluderas i de resulterande inställningarna från egenskapen List.SettingsComposer.Settings.
● Fasta inställningar (List.SettingsComposer.FixedSettings) läggs till de resulterande inställningarna "i befintligt skick". Samtidigt är det oacceptabelt att de fasta och användarinställningarna innehåller inställningar med samma namn, till exempel val med samma vänstervärde i villkoret.

Om de dynamiska listinställningarna innehåller inställningar som är inaktiverade med funktionsalternativ, kommer dessa inställningar att tas bort från listan över tillgängliga inställningar när den dynamiska listdata hämtas.
Styrning av vilka inställningar som kommer att vara tillgängliga för användaren och vilka som inte kommer att göras i fönstret för dynamiska listinställningar.


Ris. 3. Kontrollera inkludering i användarinställningar

Kryssrutan längst ner i fönstret (se fig. 3) är ansvarig för att placera hela typen av inställningar i inställningarna (normal eller snabb). Den här funktionen är tillgänglig för urval, ordning, gruppering och villkorsanpassning. Om inställningarna anges med redigeringsläget Snabbval, måste du i egenskapen Användarinställningar grupp i tabellen för formuläret som visar den dynamiska listan ange en tom grupp av formuläret där de element som är kopplade till snabbanvändarinställningarna för den dynamiska listan kommer att hittas. Om gruppen inte är specificerad kommer inte snabba användarinställningar att visas i formuläret. Det är också möjligt att uttryckligen anropa skapandet av anpassade inställningar med hjälp av det inbyggda språket med metoden CreateCustomSettingsFormItems() för det dynamiska listtillägget.
Det är också möjligt att välja om specifika inställningsobjekt ska placeras i användarinställningarna. Denna funktion är tillgänglig för urval och villkorade designelement (se figur 3).

Om du behöver några speciella inställningar som ska laddas när du öppnar en dynamisk lista kan detta göras på två sätt:
● Använda den dynamiska listformparametern UserSettings. Datan i denna parameter kommer att placeras i användarens dynamiska listinställningar.
● Använda den dynamiska listformen parameterUserSettingsKey. Om du anger denna parameter när du öppnar ett formulär, kommer användarinställningarna som finns i inställningslagringen med den angivna nyckeln att laddas in i den dynamiska listan, som är formulärets huvudattribut.

5. Sök i en dynamisk lista

En dynamisk lista som finns på formuläret ger möjlighet att interaktivt söka i den visade informationen. Sökningen kan utföras med hjälp av följande verktyg: sökfältet, sökdialogrutan, sök efter aktuellt värde, använda sökhistoriken och ställa in perioden (för dynamiska listor som visar dokument). Sökresultatet är en begränsad uppsättning poster
en dynamisk lista (över de som är tillgängliga för en given användare) som matchar sökkriterierna.
För att styra sökmöjligheterna för en dynamisk lista finns det tre tabellegenskaper i det hanterade formuläret som visar den dynamiska listan:
● Söksträngens position – bestämmer positionen för söksträngen. Kan ta följande värden: Auto, Kommandofält, Ingen, Topp, Botten.


Ris. 4. Söksträng i en dynamisk lista

Om värdet för den här egenskapen är inställt på kommandopanelen kommer söksträngen att visas i formulärets kommandopanel (om den dynamiska listan är formulärets huvudattribut) eller i kommandopanelen som är associerad med den dynamiska listan. Sökfältet placerat i kommandofältet trycks alltid till höger kant av kommandofältet (tillsammans med knapparna till höger om sökfältet).
Om egenskapen är inställd på Nej kommer söksträngen inte att finnas i formuläret, och när du börjar skriva söksträngen öppnas en dialogruta.
Om egenskapen är inställd på Top, kommer sökfältet att placeras mellan listans kommandofält och tabellen som visar den dynamiska listan. Om egenskapen är inställd på Botten, kommer söksträngen att placeras omedelbart efter tabellen som visar den dynamiska listan.


● Om egenskapen Kompatibilitetsläge är inställd på Använd inte eller äldre än version 8.3.4 – är värdet Kommandopanelen.
Gå till sökraden enligt följande:
● Genom att trycka på tangentkombinationen Ctrl+F;
● Mus;
● När du börjar skriva i en dynamisk lista (med hänsyn till värdet på egenskapen SearchOnTyping för den dynamiska listan).
● Visa tillståndsposition – beskriver var vytillståndet kommer att visas: vilka fält som söktes och vilka värden
sökte i varje fält. Kan ta följande värden: Auto, None, Top, Bottom


Ris. 5. Sök tillstånd i dynamisk lista

Om egenskapen är inställd på Nej, kommer vytillståndet inte att finnas på formuläret. Som ett resultat kommer det att vara möjligt att avgöra om sökningen har slutförts eller inte endast genom tillgängligheten av knappen Avbryt sökning.
Om egenskapen är inställd på Top, kommer vytillståndet att placeras mellan listans kommandofält och tabellen som visar den dynamiska listan. Om egenskapen är inställd på Botten kommer vytillståndet att placeras omedelbart efter tabellen som visar den dynamiska listan.
Om formuläret skapades i 1C:Enterprise version 8.3.4 och tidigare, är egenskapen inställd på No. Om formuläret skapades i 1C:Enterprise version 8.3.5 och äldre är egenskapen inställd på Auto. Det verkliga värdet av fastigheten i detta fall kommer att bestämmas enligt följande:
● Om egenskapen Kompatibilitetsläge är inställd på version 8.3.4 (och lägre) – värde Nej;
● Om egenskapen Kompatibilitetsläge är inställd på Använd inte eller äldre än version 8.3.4 – värde Topp;
● Sökkontrollposition – Bestämmer var sökkontrollknappen ska visas. Knappen öppnar en meny som innehåller följande information: kommandon Sök efter aktuellt värde, Avancerad sökning, Avbryt sökning, Ställ in period (för dokument- och journallistor) och sökfrågehistorik (senaste 5 frågorna). Egenskapen kan ha följande värden: Auto, Ingen, Kommandopanel.


Ris. 6. Hantera sökning i en dynamisk lista

Om egenskapen är inställd på Nej, kommer inte sökkontrollknappen att finnas i formuläret (men kommandona kommer att vara tillgängliga via menyn Mer). Kommandofältsegenskapsvärdet placerar en knapp på kommandofältet som är kopplat till en tabell som visar en dynamisk lista.
Om formuläret skapades i 1C:Enterprise version 8.3.4 och tidigare, är egenskapen inställd på No. Om formuläret skapades i 1C:Enterprise version 8.3.5 och äldre är egenskapen inställd på Auto. Det verkliga värdet av fastigheten i detta fall kommer att bestämmas enligt följande:
● Om egenskapen Kompatibilitetsläge är inställd på version 8.3.4 (och lägre) – värde Nej;
● Om egenskapen Kompatibilitetsläge är inställd på Använd inte eller äldre än version 8.3.4 – värdet är Kommandopanelen;
Om det finns flera kommandopaneler på ett formulär, vars kommandokälla är en tabell i det hanterade formuläret (visar dynamisk listdata), kommer sökraden och sökkontrollknappen att finnas i endast en kommandopanel:
● Eller i kommandofältet i själva den dynamiska listan (om den har aktiverat automatisk komplettering)
● Eller i någon av de återstående kommandopanelerna.

Låt oss titta på funktionerna i att använda sökning i en dynamisk lista:
● För att göra sökningen bekväm att använda (inklusive när det gäller prestanda) måste du aktivera fulltextsökning för alla konfigurationsobjekt som kan användas som huvudtabellen i den dynamiska listan. Fulltextsökningen bör också inkludera alla detaljer om konfigurationsobjekt som kan visas i en dynamisk lista och för vilka en sökning kan krävas.
Om ett objekt utesluts från fulltextsökning, kommer sökmekanismen i fråga att fungera, men prestandan för en sådan sökning kommer att vara extremt låg. Det rekommenderas inte att använda sökning på objekt som inte indexeras av fulltextsökning.
● Applikationslösningen måste ha en rutinuppgift som regelbundet uppdaterar fulltextsökindexet.

● Sökningen utförs inte över alla kolumner i den dynamiska listan (och konfigurationsobjektet), utan endast genom de kolumner som visas i tabellen.
● Sökning i en dynamisk lista efter fält av referenstyper med godtycklig representation utförs av fält som används för
representationsbildning (se här). Fälten som ingår i vyn erhålls med hänsyn till ViewFieldGettingProcessing()-hanteraren för motsvarande objekt.
● För dynamiska listor med en specificerad huvudtabell används fulltextsökning i huvudtabellen. Alla oindexerade länkar från huvudtabellen kommer att läggas till i fulltextsökresultaten. Resultatet av en fulltextsökning efter huvudtabellen används som ett urval baserat på nyckelfält. En fulltextsökning utförs också på fält som visas i listan från andra tabeller (om fältet och konfigurationsobjektet använder fulltextsökning). Utan fulltextsökning aktiverad kan data vara
hittas, men själva sökningen kommer att gå mycket långsamt.
Om ett fel uppstår när du försöker utföra en fulltextsökning, kommer sökningen att utföras utan att tillämpa fulltextsökningen.
Detta kan till exempel hända när man söker efter en bokstav och ett stort antal rader i informationsbasen som börjar med denna bokstav.
● Om ett urval med jämförelsetypen Equals används för ett fält i huvudtabellen i en dynamisk lista, kommer ett urvalsvärde att läggas till i sökfrågan för denna tabell när du utför en fulltextsökning.
● Söksträngen är uppdelad i ord. Denna partition utförs enligt följande regler:
● Linjen bryts med mellanslag och tabulatortecken som avgränsare.
● Sedan bearbetas varje resulterande fragment:
● Om fragmentet är en datumrepresentation (med eller utan tid) baserat på den aktuella sessionslokalen, är ordet fragmentet.
● Annars delas fragmentet ytterligare med tecknen ",.-/\" som avgränsare. I det här fallet tas varje resulterande fragment av strängen som ett ord.

● För varje ord bildas en egen uppsättning villkor, som kombineras "av ELLER". Denna uppsättning villkor genereras om en fulltextsökning efter ett givet ord i tabellen som detta fält hämtades från returnerade minst ett objekt, eller om en fulltextsökning inte användes för detta fält. Villkoren är utformade enligt följande:
● För ett fält av typen String är villkoret FieldName LIKE %Word%.
● För ett fält av typen Number, har villkoret formen Fältnamn=Värde, där Värde är ett ord som konverterats till Nummertypen. Om casten inte kan utföras kommer fältsökningen inte att utföras.
● Ordet letas upp som en delsträng i den booleska standardrepresentationen som definieras för den aktuella sessionen. Om sökordet hittas i en vy, söker det sedan efter det värde som motsvarar vyn där ordet hittades. I det här fallet använder sökningen inte vyer som anges med egenskapen Format form element.
● För ett fält av typen Datum ser villkoret ut som Fältnamn>=StartofDay(Word) ANDFieldName<=КонецДня(Слово). Если Слово подобно дате, в которой год
indikeras med en eller två siffror, kommer året att reduceras till det aktuella århundradet och detta värde kommer att läggas till sökvillkoret.
● För referensfält görs en sökning på de fält som används för att bilda referensvyn. Sök i vart och ett av dessa fält
utförs enligt reglerna som beskrivs ovan. Sökningen använder inte fält som används för att bilda en anpassad datarepresentation.
Uppsättningen av villkor för varje ord kombineras "OCH".
● För värden med inledande nollor kan du söka antingen strängen med inledande nollor eller strängen som anges utan inledande nollor.
● Om en dynamisk lista visar en lista med dokument eller en dokumenthistorik, visas listvisningsintervallet som du anger också i området för formuläret som är reserverat för att visa vystatus för den önskade dynamiska listan.
● Kommandot Sök efter aktuellt värde är inte tillgängligt om huvudtabellen i den dynamiska listan är urvalskriteriet.
● Hittade strängfragment markeras när de visas i tabellen.
● Endast en söksträng stöds för en kolumn. När du lägger till en ny sökfråga för en kolumn som redan genomsöks, kommer sökuttrycket att ersättas i stället för att de två sökfrågorna läggs ihop.
● Om formuläret inte har ett tillägg av formulärelement av formuläret Söksträngsvisning som är kopplat till tabellen (källegenskap för formulärelement) som visar en dynamisk lista, öppnar du sökdialogrutan genom att trycka på tangentkombinationen Ctrl+F.


Ris. 7. Sök dialog

Om formuläret innehåller ett formulärelement som tilläggs av formuläret Söksträngsvisning som är associerat med en tabell (källegenskap för formulärelement) som visar en dynamisk lista, bör du använda kommandot Avancerad sökning för att öppna sökdialogrutan.
● Tänk på följande när du använder sökdialogrutan:
● Om du öppnar sökdialogrutan med ett kortkommando visas värdet för den aktuella cellen på raden Vad ska du söka och värdet för reglaget Hur söker du ställs in på Efter exakt matchning.

● Att öppna sökdialogrutan genom att direkt börja skriva en söksträng i den dynamiska listan leder till att värdet på knappen Hur söker man ställs in på värdet By del av strängen, och den inskrivna texten hamnar i fältet Vad till sökfältet.

6. Få data att visas av en dynamisk lista

När du använder dynamiska listor kan du behöva utföra olika åtgärder på den data som för närvarande visas av den dynamiska listan, med hänsyn till de val och sökningar som tillämpas. Sådana åtgärder inkluderar: bearbeta den visade informationen, till exempel, skicka om valda dokument eller ställa in vissa detaljer för valda objekt, generera en lista över tillgängliga objekt (med design, etc.), till exempel för att skriva ut eller spara till ett kalkylarksdokument.
För att få data som visas av en dynamisk lista bör du använda GetExecutableDataCompositionSchema() och
GetExecutableDataCompositionSettings().
Exempel på att ta emot data:

Schema = Elements.List.GetExecutableDataCompositionSchema();
Settings = Items.List.GetExecutableDataCompositionSettings();
LayoutLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Scheme, Settings);
CompositionProcessor = newDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

Att få in data i en värdesamling (tabell eller värdelista) görs på samma sätt.
Att erhålla dynamiska listdata på detta sätt har ett antal funktioner som måste beaktas när man utvecklar applikationslösningar:
● Följande tabelldesign stöds inte:
● Omväxlande linjefärger;
● Huvudbild;
● Bild på källaren;
● Sidfots bakgrundsfärg;
● Färg på sidfoten;
● Teckensnitt för sidfot;
● Horisontellt läge i källaren;
● Lösenordsläge.
● Det villkorliga utseendet som anges för ett hanterat formulär stöds inte.
● När du beställer en hierarkisk tabell i stigande ordning efter ett fält av typen Länk, placeras alltid poster som innehåller en tom länk först.

Att ställa in 1C-val i en dynamisk lista är inte så svårt som många användare tror från början. Sådana konfiguratorer används också för värdetabeller. I 1C-programvara är det ofta nödvändigt att sortera data i grafer och celler enligt vissa kriterier.

Hur ställer man in urval till en lista?

Du kan skapa ett urval på två sätt: i form av själva listan eller registrera det programmatiskt. I det första fallet måste du lägga till en 1C 8 dynamisk lista till formuläret, definiera en huvudtabell för den och sedan gå till dess egenskaper. Det hanterade formuläret låter dig arbeta med en mängd olika värden. Där måste du hitta alternativet "Listinställningar" och gå till den här menyn. I fönstret som öppnas efter övergången kan du manuellt ställa in valfri sorterare för listan du använder och sedan hantera det genererade urvalet programmatiskt.

För att installera en dynamisk sorterare programmatiskt bör du veta att val i 1C anses vara en egenskap hos en dynamisk lista. För att lägga till ett urval med den här kvaliteten måste du lägga till ett nytt element i urvalsegenskapen. För att allt ska fungera måste du ställa in parametern i höger och vänster värdevalsfält, och även i fältet "Jämförelsetyp". Det är viktigt att ange värdet "true" i användningsfältet. På så sätt kan du skapa det enklaste urvalet. Genom att lägga till villkor i andra områden kan du göra det mer komplext och anpassa det efter dina behov.

Val i 1C-värdestabellen

För att göra ett urval i tabellen kan du använda ett av flera alternativ. Du kan göra ett manuellt val - gå igenom tabellen och dölj alla rader som du inte behöver. Men det här är en mycket arbetskrävande process som inte alla vill göra. Denna metod är endast lämplig för dem som precis har börjat arbeta med 1C och ännu inte kan bemästra mer komplexa men produktiva tekniker.

Det andra tabellvalsalternativet fungerar genom en tabellmetod som kallas "hitta rader." En betydande nackdel med denna metod är att den enda typen för jämförelse kommer att vara "lika", vilket avsevärt minskar möjligheten att använda urval.

Den mest rationella metoden för att välja en tabell kan göras genom frågebyggaren.

Andra funktioner i en dynamisk lista i 1C

Dynamiska listor ger stora möjligheter att arbeta med data, som inte var tillgängliga i 1C 7. En av de mest bekväma av dem är att skapa urvalsformulär. Till exempel, i 1C: Redovisning måste du gå till menyn "Nomenklatur" och lägga till ett nytt urvalsformulär och ange det som det huvudsakliga.

Så här ställer du in parametrar i en dynamisk lista:

  • Du kan använda urvalsformulär;
  • När du skapar detta formulär kommer en dynamisk urvalslista automatiskt att visas i fältet;
  • Genom att gå till dess egenskaper kan du se objektet "Anpassad begäran". Det är denna fråga som låter dig dra fördel av alla fördelar med en dynamisk lista;
  • Du kan ange dina parametrar i denna begäran;
  • Genom att markera rutan och öppna det här fönstret kan du se en ny förfrågan, med alla fält från artikelreferensboken;
  • Genom att klicka på frågebyggaren kan du ändra innehållet i den här listan.

För att lägga till din egen begäran i rullgardinsmenyn måste du gå till fliken Inställningar. På den första fliken ser du möjligheten att göra valfritt val efter dina behov.

Programmatisk installation av begäran

Du kan också ställa in begäran programmatiskt. För att göra detta behöver du bara ange några rader i formulärmodulen. Efter detta behöver du bara dubbelklicka på den aktuella raden för att överföra raderna med de valda värdena till dokumentet.

I 1C är en lista med värden på ett formulär ett utmärkt sätt att göra arbetet med 1C-programvara mer rationellt och produktivt. Detta gör att du kan optimera allt arbete i företaget.

Urval på hanterade formulär i 1C 8.3

Artikeln kommer att diskutera alternativ för att installera urval i hanterade former 1C 8.3. Valet för en dynamisk lista kan ställas in statiskt eller dynamiskt, i användargränssnittet eller konfiguratorn. Vi kommer att överväga alla urvalsalternativ nedan.

  • Inställningsval i konfiguratorn

Inställningsval i användarläge

En dynamisk lista, i motsats till en tabell eller värdeträd, är en mer lämplig lösning för att implementera formulär som innehåller listor, eftersom Den dynamiska listan ger det bredaste utbudet av verktyg för att arbeta med urval, fältgruppering och sortering. Detta val kan ställas in när du arbetar i användarläge eller konfiguratorn, principen är densamma.

För att ställa in urval i företagsläge måste du anropa kommandot "Anpassa lista".

Ett fönster öppnas.


Fliken "val" visar en lista över fält som finns i den aktuella listan. Välj de listfält som vi ska filtrera efter. Detta kan göras genom att dubbelklicka eller genom att dra och släppa.


Vi ställer in jämförelsetyp och värde, klicka på "Slutför redigering", valet är inställt.


När du ställer in urval i företagsläge skapas automatiskt så kallade snabbvalsfält på listformuläret.


För att 1C-plattformen automatiskt ska skapa snabbvalsfält, när du utvecklar ett formulär i konfiguratorn, måste du ange en grupp användarinställningar.


Detta val kommer endast att sparas för den aktuella användaren, vilket möjliggör flexibel anpassning av den dynamiska listan. Men om uppgiften är att göra ett fast urval för en specifik lista för alla användare av systemet kan vi lösa det endast genom konfiguratorn.

Inställningsval i konfiguratorn

Genom att arbeta i konfiguratorn kan vi ställa in två typer av dynamiskt listval – fast och dynamisk. Fast val kan konfigureras en gång, dynamiskt eller programmatiskt kan ställas in beroende på vilken data som helst i systemet.

Principen för att ställa in ett fast val i konfiguratorn skiljer sig inte från att ställa in det i användarläget som beskrivs ovan. För att ställa in valet måste vi öppna de dynamiska listinställningarna.


Ett fönster öppnas.


Val ställs in på samma sätt som i användarläge.

Alternativet "Inkludera i användarinställningar" bestämmer om valet i konfiguratorn kommer att vara tillgängligt i användarläge via menyalternativet "Anpassa lista".


Dynamiskt (mjukvaru)val

Ofta finns det behov av att ställa in urval programmatiskt, till exempel när vi öppnar ett urvalsformulär, när vi behöver öppna ett kontrollerat formulär med urval. En parameter skickas till formuläret och urvalet ställs in baserat på denna parameter. Ett vanligt exempel på detta är att välja katalogobjekt efter ägare.

Metoder

Om konfigurationen som utvecklas innehåller delsystemet BSP "Basic Functionality", kan val av programvara i den dynamiska listan installeras med standardmetoden:

GeneralPurposeClientServer.SetDynamicListSelectionElement()

Signatur för denna metod:

DynamicList Typ: DynamicList – Listan där du vill ställa in valet.

Fält namn Typ: String – Fältet som du vill ställa in valet med.

RightValue Typ: Godtycklig – Urvalsvärde (Valfritt. Standardvärde: Odefinierat. Obs: Om du klarar Undefined kommer värdet inte att ändras).

Visajämförelse Typ: DataComposition Comparison Type – Urvalsvillkor.

Prestanda Typ: String – Representation av ett datakompositionselement (Valfritt. Standardvärde: Odefinierat. Om det anges skrivs endast användningsflaggan med den angivna representationen ut (inget värde skrivs ut). En tom sträng måste skickas för att rensa så att värdet skrivs ut igen.)

Användande Typ: Boolean – Flagga för att använda detta val (Valfritt. Standard: Odefinierat).

Visningsläge Typ: ItemDisplayModeDataCompositionSettings – Hur detta val visas för användaren. Möjliga värden:

  • Element Display Mode Data Layout Settings.Quick Access – I snabbinställningsgruppen ovanför listan.
  • Element Display Mode Inställningar för datalayout Normal – I listinställningar (i undermenyn Mer).
  • ElementDisplayModeDataCompositionSettings.Inaccessible – Förhindra användaren från att ändra detta val.

IdentifierUserSettings Typ: String – Unik identifierare för detta val (Används för att kommunicera med användarinställningar).

För att ta bort ett urvalsvärde måste du använda standardmetoden:

General PurposeClientServer. RemoveGroupElementsSelectionDynamicList()

Signatur för denna metod:

DynamicList Typ: DynamicList – formulärattribut som du vill ställa in urval för.

Fält namn Typ: String – namn på layoutfältet (används inte för grupper).

Prestanda Typ: String – Representation av ett layoutfält.

Om det inte finns någon BSP i systemet kan valet ställas in oberoende med hjälp av DataComposition Field-objektet.

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element")); Selection Element.LeftValue = NewDataCompositionField("Namn"); Selection Element.Comparison Type = DataComposition Comparison Type.Equal; Selection Element.DisplayMode = ElementDisplayModeDataCompositionSettings.QuickAccess; // Valfritt urvalselement RightValue = "Ivanov";

Detta val kommer att välja rader där värdet "Fullständigt namn" = "Ivanov".

För att använda logiska "AND", "ELLER", "NOT" är datatypen DataCompositionSelectionElementGroup avsedd

Selection Group = List.Selection.Elements.Add(Type("Group of DataComposition Selection Elements")); SelectionGroup.GroupType = DataCompositionSelectionElementGroupType.GroupOR; Selection Element = Selection Group Elements Add(Type("Data Composition Selection Element")); Selection Element.LeftValue = NewDataCompositionField("Namn"); Selection Element.Comparison Type = DataComposition Comparison Type.Equal; Selection Element.RightValue = "Ivanov"; Selection Element = Selection Group Elements Add(Type("Data Composition Selection Element")); Selection Element.LeftValue = NewDataCompositionField("Namn"); Selection Element.Comparison Type = DataComposition Comparison Type.Equal; SelectionElement.RightValue = "Petrov";

Detta val kommer att välja rader där värdet "Fullständigt namn" = "Ivanov" eller "Petrov".

Val i en dynamisk lista kan också göras genom att ändra texten i den dynamiska listbegäran. Detta alternativ fungerar när den dynamiska listan görs via en "anpassad begäran".


För att göra detta, lägg till villkoret "WHERE IS THE TRUE" i frågetexten...


Som du kan se är detta tillvägagångssätt mer kompakt när det gäller att skriva kod. Ju mer komplexa urvalsvillkoren är i tabelldelen vi vill ställa in, desto besvärligare kommer alternativet att använda valet genom urvalselementet för datasammansättning att vara. Exemplet med att ändra texten i begäran har dock sina nackdelar - denna implementering är inte resistent mot kodändringar. Till exempel gjorde du en sådan implementering och glömde, men om du i framtiden vill ändra förfrågningstexten genom att lägga till någon operatör efter WHERE (ORDER, GROUP), måste du komma ihåg att programkoden innehåller:

List.QueryText = List.QueryText + " And DirectoryUsers.Full Name V(""Ivanov"",""Petrov"")";

Om detta inte beaktas kommer det att uppstå ett fel, men för att undvika detta kan du ändra det till en annan implementering. Vi lägger till följande villkor i förfrågningstexten:

VAR (INTE &SelectionInstalled ELLER DirectoryUsers.Name IN (&PermittedName))

List.Parameters.SetParameterValue("SelectionSet", Fullständigt namn.Quantity() > 0); List.Parameters.SetParameterValue("Tillåtet fullständigt namn", fullständigt namn);

Här är det fullständiga namnet en array.

Som du kan se, 2 rader kod kontra 10. Vilken metod du ska välja beror på den specifika applikationsuppgiften.