1c dynamisk lista hur man får strängvärde. Hämtar dynamisk listdata

1c dynamisk lista hur man får strängvärde. Hämtar dynamisk listdata

I processen att slutföra konfigurationer möter varje 1C-programmerare dynamiska listor.
En dynamisk lista är ett gränssnittsobjekt som används för att visa olika listor med databasobjekt eller icke-objektdata - registerposter.
Till exempel används en dynamisk lista för att visa en lista med objekt:

För att demonstrera möjligheterna med en dynamisk lista, låt oss skapa en extern bearbetning, lägg till huvudformuläret. Låt oss lägga till ett nytt attribut med typen "Dynamisk lista" i formuläret. Låt oss gå till dess fastigheter och se vad som finns där.
Vi är intresserade av egenskapen "Anpassad begäran". Om du aktiverar det visar vi alla möjligheter med en dynamisk lista. Vi kommer att kunna skriva en fråga med nästan alla funktioner i frågespråket i 1C: Enterprise-systemet. Markera rutan och klicka på länken "Öppna":

Som standard kommer vår lista att visa en lista med artiklar med ett totalt saldo för alla lager. För att implementera en sådan lista, lägg till följande fråga:


Som huvudtabell kommer vi att välja "Katalog. Nomenklatur", detta kommer att tillåta oss att arbeta med den dynamiska listan, som med listan över nomenklatur - lägg till, ändra, markera för raderingselement i katalogen. Att ställa in huvudtabellen gör också möjligheten till dynamisk dataläsning tillgänglig - detta betyder att valet kommer att göras i portioner efter behov.
Därefter måste vi skapa formulärelement för vår lista:

Om vi ​​försöker köra vår bearbetning i det här formuläret får vi ett felmeddelande:


För att eliminera det måste du ställa in värdet på parametern "Period". För att göra detta kan du använda metoden "SetParameterValue" i samlingen "Parameters" i den dynamiska listan. Metoden tar två parametrar:
. "Parameter" - Typ: String; DataCompositionParameter. Namnet på parametern eller datasammansättningsparametern vars värde ska ställas in;
. "Värde" - Typ: Godtycklig. Värdet som ska ställas in.
Kan anropas i "OnCreateOnServer"-hanteraren i formuläret:

Har du en fråga, behöver du hjälp av en konsult?


Låt oss ge användaren möjlighet att ändra perioden för att ta emot saldon. För att göra detta, låt oss lägga till attributet och formulärelementet "Datum" som är kopplat till det:


I "OnChange"-hanteraren för formulärelementet "Date" anropar du metoden "SetParameterValue" och skickar värdet för det associerade attributet som värdet. På samma sätt kommer vi att ändra proceduren "På CreationAtServer" i formuläret. Eftersom metoden är tillgänglig på klienten finns det inget behov av att anropa servern:


Nu, när datumet ändras, kommer saldonen att uppdateras automatiskt:




Anta att användare vill se antingen aktuella saldon eller beräknade kvitton. Låt oss överväga ett av implementeringsalternativen. Låt oss lägga till ett booleskt formulärattribut och en tillhörande alternativknapp:


När vi ändrar värdet på omkopplaren kommer vi att ändra texten i begäran. För att göra detta kommer vi att använda händelsehanteraren "OnChange" i formulärelementet "DisplayQuantityToReceipt". Vi måste ändra egenskapen "QueryText" för den dynamiska listan beroende på värdet på attributet. Därför att given egendom inte är tillgängligt på klienten krävs ett serverproceduranrop:


Resultatet av ändringarna:



Hemanteckningar från Looking Glass

2014-04-21 Hämta dynamisk listdata

Implementerad i version 8.3.6.1977.

Vi har implementerat möjligheten att enkelt och bekvämt få data som visas med hjälp av en dynamisk lista.

Du kan behöva den dynamiska listinformationen för att skriva ut den i en icke-standardiserad, "specifik" form. Eller för att utföra vissa handlingar med dem. Skicka till exempel ett brev till alla motparter som du har valt i listan enligt vissa kriterier.

Dessutom finns det ett antal uppgifter där användaren, förutom listan med element, också vill se sammanfattningsdata som är kopplade till denna lista. Till exempel genom att välja varor av vissa varugrupp och någon leverantör vill han omedelbart se det totala antalet sådana varor i databasen.

Den dynamiska listan i sig kan inte ge dig denna information. Syftet med en dynamisk lista är att tillhandahålla snabbtitt stora mängder data. Därför läser den data i bitar som krävs för att visas på en eller två skärmar. Och "vet ingenting", till exempel om den totala mängden data som han måste läsa.

I allmänhet, för att få Ytterligare information som användaren vill, måste du fråga databasen. Exakt samma som den som används i den dynamiska listan.

Du kunde göra det innan. Men det var inte alltid lätt. När allt kommer omkring, förutom texten i den ursprungliga frågan, enligt vilken den dynamiska listan fungerar, behövde du känna till alla val, sorteringar och andra parametrar som användaren interaktivt ställer in i tabellen som visar data.

Nu är denna uppgift lätt löst. Den dynamiska listtabellen har två nya metoder:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Således får du själva datasammansättningsschemat och, viktigast av allt, alla dess inställningar, tack vare vilket användaren ser listan exakt som den är. Allt du behöver göra är att programmera layouten och mata ut den till en samling värden (för programmatisk bearbetning) eller till kalkylarksdokument(att visa):

Som ett resultat kommer du att få en struktur (eller rapport) som innehåller kolumner och rader som visas i en dynamisk listtabell.

Det viktiga är att layouten och inställningarna som du får från den dynamiska listtabellen tar hänsyn till bland annat kolumnernas synlighet och den sökning som tillämpas. Eftersom inställningarna erhålls separat kan du ändra sammansättningen av fälten för dina egna syften och få till exempel alla kolumner i listan, och inte bara de som är synliga för användaren.

När du matar ut till ett kalkylarksdokument finns det ett annat trevligt ögonblick. I allmänhet kommer rapportens utseende att motsvara utseende dynamiska listtabeller vid den tidpunkt då schemat och inställningarna tas emot. Inklusive den villkorade designen av bordet. Du behöver bara några ytterligare åtgärder om du vill överföra formulärets villkorliga design till rapporten också.

1C:Enterprise 8.2-plattformen kan arbeta med flera poster i en databastabell på ett dynamiskt sätt, det vill säga den kan läsa data i bitar. Tidigare i artiklarna har vi övervägt mekanismen för dynamiska listor och metoder för att optimera arbetet med dem.

Idag kommer vi att lösa ett icke-standardproblem för dynamiska listor. Vi kommer att behöva beräkna summan för dokumentattributet "Amount" och visa det i sidfoten på listan. Beräkna på samma sätt medelvärdet för fältet "Betyg" och visa det i sidfoten i den dynamiska listan. Beräkningen av de totala fälten måste ta hänsyn till urvalet, användaruppsättning i dokumentlistans inställningar.

Hela svårigheten ligger i det faktum att den dynamiska listan inte tar emot alla poster på en gång, utan tar emot dem i portioner. Följaktligen kan vi inte omedelbart få summan för alla dokument som motsvarar det aktuella urvalet. Hur beräknar man summan?

Genomförande

Och så, låt oss gå vidare till att lösa problemet. Låt oss börja med att ändra formen, sedan kommer vi att beskriva algoritmen för att erhålla de slutliga värdena.

Form och gränssnitt

Låt oss först förbereda ett dokumentformulär för att visa de sista fälten. För att göra detta, låt oss lägga till två strängattribut av formen "Betyg" och "Belopp".

Dessa uppgifter kommer att innehålla de totala värdena för dokumenten.

För att visa attributvärden i sidfoten på en dynamisk lista måste du aktivera motsvarande alternativ för det associerade listformulärelementet (se följande skärmdump).

Nu måste du bestämma vilken händelse resultaten ska uppdateras i sidfoten på listan. För att underlätta utvecklingen, låt oss lägga till kommandot "Uppdatera" och motsvarande formulärelement till kommandopanelen. När detta kommando utförs kommer totalsummorna att uppdateras.

I testkonfiguration, som du kan ladda ner från länken i slutet av artikeln, har jag även lagt till en totaluppdateringshändelse när jag skrev ett dokument. Detta använder mekanismen för formuläranmälan. Vi kommer inte att uppehålla oss mer i detalj.

Algoritm

Den mest problematiska delen kvarstår - du måste få värdena för summorna. Låt oss fortsätta enligt följande: vi kommer att skapa en databasfråga för att få värdena för de slutliga fälten i enlighet med urvalet i den dynamiska listan. Man bör komma ihåg att i urvalet kan det finnas ett komplext tillstånd från grupperna.

Obs: Inställningar för dynamiska listor (se skärmbilden ovan) är baserade på mekanismerna för datakompositionssystemet (ACS) . Följaktligen kan du arbeta med dem på ett liknande sätt (programmässigt lägga till, ändra, läsa, etc.).

Stegen för att generera en fråga för att få resultaten är följande:

1. Få den första begäran om en dynamisk lista.

Som vi kan se väljer begäran alla detaljer i dokumentet. För en liten komplikation lade jag till mitt eget fält "LevelRating", bildat av "CHOICE"-konstruktionen.

2. Vi bildar texten i förfrågningsvillkoren ("VAR"-avsnittet) och ersätter den i den ursprungliga förfrågan.

Vi måste lägga till villkor till den mottagna källtexten för begäran i enlighet med det konfigurerade urvalet av den dynamiska listan.

Proceduren, beroende på typen av det passerade filterelementet (grupp eller filterelement), genererar lämplig text för villkoret. Alla villkor i gruppen är inramade med parentes, medlemmarna i gruppen är också inramade parentes. Villkoren mellan uttryck beror på den överordnade gruppen ("OCH"-villkoret placeras mellan de översta elementen i hierarkin).

Om elementet har en användningsflagga (egenskapen "Användning") så bearbetas elementet. Den genererade texten beror också på jämförelsevillkoret (Lika, inte lika, i listan, etc.). Beroendet av den genererade texten i villkoret på typen av jämförelse kan ses i följande funktion.

En annan intressant, enligt mig, funktion är "GetFieldTextOnView". Det behövs för att ersätta fält i frågevillkoren som bildas av uttryck för frågespråket. Ovan lade jag till fältet "LevelRating" till den ursprungliga begäran. Om användaren kommer att använda det i urvalet måste hela uttrycket ersättas i frågevillkoret. Denna funktion hämtar texten i fältet från begäran genom dess representation. För sådana komplexa fält kommer det att returnera hela texten i uttrycket.

Se testkonfigurationen som bifogas artikeln för mer information om algoritmen. Nedan finns en skärmdump av urvalsinställningarna och frågevillkoren som genereras för dem.

Den genererade villkorstexten bifogas den ursprungliga dynamiska listbegäran. Frågeresultatet placeras i en tillfällig tabell.

3. Vi placerar den första frågan i en temporär tabell och utför gruppering efter sammanfattningsfält med nödvändiga aggregerade funktioner.

Låt mig påminna dig om att vi måste få medelvärdet för "Betyg"-fältet och det totala beloppet för "Belopp"-fältet. Vi har redan skapat en fråga med hänsyn till valen, det återstår att beräkna de totala värdena. Detta görs med följande fråga:

Efter att ha utfört begäran behandlar vi resultatet, returnerar det till klienten och skriver det till formulärdetaljerna som vi skapade tidigare. I slutändan fick vi visningen av totalerna i sidfoten på den dynamiska listan (se den första skärmdumpen för artikeln).

Optimal lösning

I allmänhet kan detta tillvägagångssätt påverka prestandan negativt. Till exempel, om programmet kommer att beräkna totalsumman utan det etablerade urvalet i den dynamiska listan, kan antalet valda poster vara enormt (till exempel i flera år). Som ett resultat kan varje uppdatering av resultaten ta tio (!!!) sekunder. Därför är det vettigt att beräkna totalsummorna endast om ett urval har upprättats. Jag ställer in detta villkor i testkonfigurationen.

Plus, beräkningen av resultaten, kan vi göra en begäran endast på serversidan. Därför måste du på allvar närma dig förfrågan till servern, eftersom proceduren för att uppdatera summan kan utföras mycket ofta. Föreställ dig ett register över KKM-checkar i en branschorganisation, där upp till 5 checkar kan föras in per minut och upp till 300 checkar per timme. Varje gång efter att dokumentet har skrivits kommer totaluppdateringen att anropas. Därför skulle det vara rimligt att minska den överförda trafiken genom att använda procedurer utanför sammanhanget.

Följande skärmdump visar programkoden för att anropa en serverfunktion utanför sammanhanget som returnerar totaler.

Den första parametern är valet av en dynamisk lista, den andra är strukturen av typen "FilterFieldNameFilterFieldValueType". Observera att den första parametern i funktionen tas emot som ett fristående värde. Jag kan inte säga exakt varför, men om du skickar urvalet som en länk ger plattformen ett felmeddelande om att urvalet inte kan ändras. Felet kunde bara kringgås på detta sätt.->

Obs: användningen av procedurer utanför sammanhanget tillåter dig att minska mängden överförd trafik med flera gånger, eftersom formulärdata inte överförs till servern, till skillnad från kontextserverprocedurer (direktivet "&AtServer").

Slutsats

Avslutningsvis kommer jag att säga att ett sådant tillvägagångssätt för att beräkna totaler i en dynamisk lista är felaktigt ur utvecklingsmetodiksynpunkt. Det skulle vara korrekt att få en summa på register. Till exempel, i checkjournalen, återigen, kan vi få pengarna i det aktuella kassaregistret antingen enligt dokument eller enligt motsvarande ackumuleringsregister.

Dessutom kommer användningen av ackumuleringsregister att låta dig beräkna totalsummorna utan att ta hänsyn till valet, eftersom systemet fungerar optimalt med de redan beräknade totalerna för de senaste månaderna.

Metoden som beskrivs i artikeln sker dock vid problemlösning.

Nedladdningar:

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 tabellen, de data som du vill visa från eller beskriva det resulterande urvalet på frågespråket.
Mekanismen är baserad på ett datasammansättningssystem och ger alternativ för sortering, val, sökning, gruppering och villkorlig behandling av mottagna data. I det här fallet är datakällan en begäran som antingen genereras automatiskt av systemet (baserat på angivna data) eller skrivs av utvecklaren manuellt.

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

När du skapar ett formulärattribut av typ DynamicList Utvecklaren kan välja två sätt att fråga efter data:
● Genom att specificera huvudtabellen – i det här fallet räcker det bara att specificera tabellen (Main table-egenskap) som du vill hämta data från, så genererar systemet automatiskt en fråga till data (se höger sida i fig. 1).
● Manuell generering av en begäran – för att göra detta måste du ställa in egenskapen Custom request (se den vänstra sidan av fig. 1). Därefter kommer manuell generering av en begäran för att hämta data från infobasen att vara tillgänglig.
Med en fråga kan du välja data från flera tabeller, så att du kan ange en primär tabell. Detta är nödvändigt så att den dynamiska listan kan avgöra vilka data som är primära och vilka som är sekundära, 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 utelämnas, men då
den dynamiska listan kommer inte att tillhandahålla kommandon relaterade till den underliggande tabellen. Dessutom, i det här fallet (utan att specificera huvudtabellen), kommer effektiviteten av att erhålla data med en dynamisk lista att minska avsevärt.
För att förbättra prestandan rekommenderas att alla kopplingar som används i en godtycklig fråga endast för att hämta ytterligare data görs valfria genom att använda ett frågespråktillägg för datakompositionssystemet.
För en dynamisk lista, som är formulärets huvudattribut, är det möjligt att ställa in urvalsvärdena med hjälp av formulärparametern Urval. För att göra detta är det nödvändigt att namnet på egenskapen för strukturen, som finns i parametern Urval,
matchade 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 Dynamic list form Selection-parametern, läggs ett villkor med alternativet In List till i urvalet, i det högra värdet för vilket värdelistan 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 Delivery.Factor = 1 DÅ &Inlämning
ANNAT Leverans. Koefficient
SLUT SOM Koefficient
FRÅN

I det här fallet, om parametervärdestypen skiljer sig från objektattributtypen (t.ex. Rekvisita 1 har typ siffra, och parameterns värde är typen Linje), sedan för att visa fältet korrekt måste du uttryckligen casta parametervärdet till önskad typ:

VÄLJA
VAL
NÄR Delivery.Factor = 1 DÅ EXPRESS(&Representation AS String(100)) ANNARS Leverans. Koefficient
SLUT SOM Koefficient
FRÅN
Document.DeliveryProducts AS Leverans

Om fältet som filtret är inställt på är inaktiverat med hjälp av funktionella alternativ, så ställs inte filtret på det här fältet in, även om filtervärdet skickas som formulärparametrar eller länkar för urvalsparameter.
Genom att använda egenskapen Dynamisk dataläsning indikeras en dynamisk lista för att behöva läsa data i små portioner
(för mer information om hur man hämtar data från en dynamisk lista och hur man cachelagrar data, se nedan). Oavsett denna egenskap 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 (inga underordnade element) 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 när en hierarkisk vy är inställd (egenskapen Display är inställd på Träd) och den initiala trädvyn ä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 datainsamling återanvänder en dynamisk lista tidigare skapade temporära tabeller, med förbehåll för följande villkor:
● Det finns inga frågor efter huvudsatsfrågan i listans batchfråga.
● Sammansättningen av temporära tabeller och deras fält har inte ändrats sedan föregående körning av batchfrågan.

I sitt arbete använder den dynamiska listan värdena för följande egenskaper för attributen för metadataobjekt:
● format,
● redigeringsformat,
● tips,
● tecken på att markera negativa värden,
● mask,
● tecken på flerlinjelä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 ett filter i en dynamisk lista, kom ihåg att filtret inte påverkar grupper om visningsläget för den dynamiska listan är Hierarkisk lista eller Träd. Med "grupper" menas ett element i en referensbok eller en plan av typer av egenskaper, där ThisGroup-egenskapen är satt till True.
Filter som automatiskt tillämpas av den dynamiska listan på standardattributen Owner, Parent, Date, Period och ThisGroup tillämpas
standardmedel datasammansättningssystem. Filter som automatiskt tillämpas av en dynamisk lista på nyckelfält kan tillämpas både med standardmedel av datakompositionssystemet och genom att direkt lägga till ett villkor i frågetexten I på huvudtabellens fält. Som ett resultat av användningen av filter av layoutverktygen kan de tillämpas både i kapslade frågor och i virtuella tabellparametrar.

När du utvecklar dynamiska listor är det en bra idé att testa alla dynamiska listor med anpassade frågor. Under verifieringsprocessen bör du se till att om listfrågan innehåller kapslade frågor eller virtuella tabeller och fält med alias som matchar aliasen för standardattributen Ägare, Förälder, Datum, Period, ThisGroup eller nyckelfält är tillgängliga för val, så motsvarar dessa fält verkligen standardattributen som de har samma alias med. Om så inte är fallet bör du ändra begäran så att de matchar eller
alias är annorlunda.
Om manuell frågegenerering väljs, införs vissa begränsningar för frågan:
● Användningen av FIRST-satsen i en dynamisk listfråga stöds inte. Om det är nödvändigt att använda ett urval i en dynamisk lista som begränsas av antalet poster, bör frågan för att generera en dynamisk lista omarbetas på ett sådant sätt att själva innehållet i frågan placeras i en underfråga och begränsa antalet poster som tas emot i denna underfråga. Du kan också använda en tillfällig tabell istället för en underfråga.
● Filtrering, sortering och gruppering stöds inte:

  • Genom detaljer tabellformade delar.
  • Visa fält.
  • DataVersion-fältet.
  • Fältet PredefinedDataName.
  • Fält Kontoplanstabelltyp.
  • Fältet MovementType i ackumuleringsregistertabellen.
  • Fält TypeValues ​​av tabellen över egenskaper typ plan.
  • 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 Typ Subconto<НомерСубконто>Tabeller RörelserSubconto redovisningsregister.
● Gruppering efter fält, som är frågespråksuttryck som innehåller aggregerade funktioner.
● Med huvudtabellen vald har den dynamiska listfrågan följande begränsningar:

  • Anslutningar stöds inte.
  • Användningen av ORDER BY-sektionen 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 denna post visas. Med andra ord, för att visa ett element i en hierarkisk lista, måste den dynamiska listan också visa alla föräldrar till det elementet upp till toppen av listan. I det här fallet betyder toppen av listan antingen
rotelementet för det hierarkiska objektet som återges av den dynamiska listan, eller elementet som anges som ParentTopLevel-egenskapen för den dynamiska listformtabelltillägget.

Användningen av följande tabeller som huvudtabell i en dynamisk lista stöds inte:

● En tabell som inte har en nyckel som unikt identifierar varje tabellpost (referens för objekttabeller och inmatningsnyckel för registertabeller). Följande tabeller kan dock ställas in som huvudtabell i en dynamisk lista (trots avsaknaden av en 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:

  • omsättningstabell;
  • balansbord;
  • tabell över omsättningar och saldon.

● beräkningsregistertabeller:

  • faktisk giltighetsperiod tabell;
  • grafdata;
  • grundläggande information.

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

Med andra ord kommer en dynamisk lista med en specificerad huvudtabell att fungera korrekt om, som ett resultat av exekveringen av en fråga,
specificeras som en datakälla ökar inte antalet rader som tas emot från huvudtabellen (med hänsyn till det pålagda urvalet). Om antalet rader som tas emot av frågan från huvudtabellen ökar, som ett resultat av exekveringen av en fråga, kommer detta att leda till en kränkning av unikheten hos rekordnyckeln i tabellen 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 är det nödvändigt att ta hänsyn till åtkomsträttigheterna till detaljerna som visas av listan:
● Data för 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. Åtkomst till data för sådana kolumner (med CurrentData-egenskapen och RowData()-metoden)
på klientsidan är inte möjligt.
● Om den aktuella användaren inte har Visa-rättigheten på ett nyckelfält i en dynamisk lista, resulterar att data från denna dynamiska lista i ett åtkomstfel.
För en dynamisk lista som visar en uppräkningslista finns det inget sätt att interaktivt anpassa listan.
Sammansättningen av kolumnerna och inställningarna för den dynamiska listan är associerade med fälten i frågan genom aliasen för urvalsfälten. Om aliaset för urvalsfältet inte är explicit specificerat i frågan och fältet är ett systemfält, används fältnamnet för den engelska versionen av det inbyggda språket som alias.
Den angivna relationen innebär att när du ändrar (eller uttryckligen anger ett alias för ett fält som använde ett automatiskt alias)
alias för frågefältet som genererar dynamisk listdata, inställningarna för det dynamiska listattributet kommer att gå förlorade, formulärelementen "förlorar" de visade attributen, de dynamiska listinställningarna blir felaktiga, etc.
I händelse av att datakällan för en dynamisk lista är en tabell (vanlig eller virtuell), som låter dig ställa in valet efter period, om användaren ställer in visningsperioden i en sådan dynamisk lista (kommandot Ställ in datumintervall ...),
de angivna periodgränserna kommer att ställas in som urvalsvärden eller virtuella tabellparametrar. Om medel för språkförlängning
frågor för datasammansättningssystemet specificerade uttryckligen namnen på parametrarna för den virtuella tabellen - parametrarna kommer att ställas in med den angivna
namn. Tabeller för vilka det är möjligt att styra perioden för visning eller bearbetning av data:
● tabeller över register (huvud- eller virtuella), för vilka det finns möjlighet att välja per period (för beräkningsregistret - efter registreringsperiod);
● huvudtabeller över dokument, affärsprocesser och uppgifter;
● huvudtabeller över dokumentjournaler;
● huvudsekvenstabeller, tabeller över sekvensgränser.
Frågeparametern för en dynamisk lista 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 filtervärde. Om den dynamiska listan använder en fråga med parametrar, första installationen parametervärden måste köras i OnCreateAtServer-hanteraren.
Var uppmärksam på när du visar dynamiska listdata följande funktioner:
● När programändring egenskaper för en dynamisk lista fyller inte automatiskt på kommandofält som är associerade med
med denna dynamiska lista.
● Om flera fält är grupperade i en grupp med grupperingsläge I cellen och i de grupperade fälten finns ett fält som visas med en kryssruta, då kommer denna kryssruta alltid att visas först i den resulterande cellen (till vänster om texten).
I en dynamisk lista, när man definierar 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 FALSKT
DÅ 5
ANNAT
&Parameter
SLUTET

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

VAL
NÄR FALSKT
DÅ 5
ANNAT
EXPRESS(&Parameter AS String(100))
SLUTET

Om parametrar används i uttrycken för urvalsfälten i den fria texten i den dynamiska listfrågan, måste du uttryckligen ange typen av parametrar med hjälp av 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 kasta fel.

3. Metoder för att erhålla och cachelagra data med en dynamisk lista

När du tar emot data att visa använder en dynamisk lista en av tre metoder:
1. Läsning från databasen utförs i omgångar där antalet dataelement något överstiger 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 elementsidor cachelagras för varje överordnad. Högst 20 objektsidor cachelagras per dynamisk lista. Cachning kommer att aktiveras av dynamisk lista för följande tabeller:
● Urvalskriterier;
● Alla redovisningstabeller, förutom huvudtabellen och tabellen MovementsSubconto;
● Alla tabeller i ackumuleringsregistret, utom huvudtabellen;
● Alla tabeller i informationsregistret, utom huvudtabellen;
● Alla tabeller i beräkningsregistret, utom huvudtabellen;
● Virtuell tabell TasksBy Performer;
● Tabeller över externa källor utan nycklar;
● Externa källkuber.

3. Läsning från databasen görs på sidor om 1 000 artiklar. Den första delen är lika med 1 sida. Varje nästa 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 data, desto större urval läses från databasen, i gränsen blir 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 Read 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, uppslag, dokumentlista, dokumentjournal, diagram över karaktäristiska typer, kontoplan, diagram över beräkningstyper, affärsprocess, uppgift, tabell över affärsprocesspunkter:



● En av följande tabeller anges som värdet på egenskapen Main table: informationsregistrets huvudtabell, ackumuleringsregister, redovisningsregister, avräkningsregister, virtuell tabell för redovisningsregistret MovementsSubconto:

● Dynamisk läsegenskap:
● Installerad: Metod 1 används (metoderna beskrivs ovan).
● Återställning: Metod 2 används (metoderna beskrivs ovan).

● Som egenskapen Main table specificeras en urvalskriterietabell eller en tabell med uppgifter efter executor (TasksBy Executor):
● Nyckel som identifierar en tabellrad: Länk.

● Egenskapen Main table är inställd på informationsregistrets virtuella tabell SliceFirst eller SliceLast:
● Nyckel som identifierar en tabellrad: RecordKey.
● Egenskapen Dynamic Read är inte tillämplig.
● Metod 2 används (metoderna beskrivs ovan).

● Egenskapen Main Table är inställd på en av virtuella tabeller andra register än de som anges ovan:

● Egenskapen Dynamic Read är inte tillämplig.

● Egenskapen Main table är inte specificerad, en godtycklig fråga används:
● Nyckel som identifierar en tabellrad: Nummer.
● Egenskapen Dynamic Read är inte tillämplig.
● Metod 3 används (metoderna beskrivs ovan).

För visning överförs data till klienten i bitar, vars storlek liknar chunkstorleken i den första dataavläsningsmetoden (beskrivs i början av detta avsnitt).
När du skapar ett formulär som innehåller en dynamisk lista skickas 45 dataposter 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 för att hämta de saknade dataobjekten när formuläret öppnas.

4. Dynamiska listinställningar

Listinställningar egenskap – genom att klicka på hyperlänken Öppna öppnas formuläret för dynamiska listvisningsinställningar. Att sätta upp listan görs på samma sätt som liknande operationer i datasammansättningssystemet.


Ris. 2. Villkorlig styling av en dynamisk lista

När du ställer in en dynamisk lista i konfigurationen har utvecklaren av den tillämpade lösningen möjlighet att göra följande:
● ställ in fälten för vilka beställning ska utföras;
● beskriv valet av data i listan;
● ange inställningar för villkorlig formatering;
● ställ in de fält som du vill gruppera data efter.
Det är vettigt att ställa in sorteringen till utvecklaren om standardsortering som ställts in av systemet inte är lämplig.

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 styra inställningarna för en dynamisk lista är LinkerSettings. Detta objekt 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. Order dynamic list-egenskapen tillhandahåller snabb åtkomst till egenskapen Settings.Order dynamic list settings builder, så följande konstruktioner är likvärdiga:
List.Order och List.SettingsComposer.Settings.Order;
● UserSettings är de inställningar som användaren kan ändra i 1C:Enterprise-läge;
● FixedSettings - Dessa inställningar ställs in från det inbyggda språket. Den här egenskapen innehåller också urvalsvärden som skickas till formuläret med hjälp av dess parametrar. Egenskaperna för den dynamiska listan Filter, Parametrar, Villkorligt utseende ger snabb åtkomst till de fasta inställningarna för den dynamiska listinställningsbyggaren. Med andra ord är dessa samtal likvärdiga:
List.SettingsComposer.FixedSettings.Filter och List.Filter.
När du skapar den slutliga inställningen för den dynamiska listan, kombineras olika inställningar enligt följande:
● Om någon typ av inställningar är helt markerade som användardefinierade, ingår användarinställningar i de resulterande inställningarna
(List.SettingsComposer.UserSettings). I det här fallet, 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 användarspecifika inte helt, utan element för element, då:
● Element 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 situationen oacceptabel när de fasta och användarinställningarna innehåller inställningar med samma namn, till exempel val med samma vänstra värde i villkoret.

Om det finns inställningar i de dynamiska listinställningarna som är inaktiverade med hjälp av funktionsalternativen kommer dessa inställningar att tas bort från listan tillgängliga inställningar när du hämtar dynamiska listdata.
Kontroll över vilka inställningar som kommer att vara tillgängliga för användaren och vilka som inte kommer att utföras i fönstret för dynamiska listinställningar.


Ris. 3. Hantera 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 (vanliga eller snabba). Den här funktionen är tillgänglig för urval, ordning, gruppering och villkorlig stil. Om inställningar anges med redigeringsläge Snabbval, sedan i egenskapen Användarinställningar i formulärtabellen som visar en dynamisk lista, måste du ange en tom formulärgrupp där de element som är kopplade till snabbanvändarinställningarna för den dynamiska listan kommer att finnas. 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 användarinställningar med hjälp av 1C:Enterprise-språket med metoden CreateUserSettingsFormItems() för den dynamiska listtillägget.
Det är också möjligt att välja möjligheten att placera specifika inställningsposter i användarinställningarna. Denna funktion är tillgänglig för urval och villkorade designelement (se fig. 3).

Om det är nödvändigt att några speciella inställningar laddas när du öppnar en dynamisk lista, kan detta göras på två sätt:
● Använda parametern CustomSettings dynamiska listformulär. Datan i denna parameter kommer att placeras i användarinställningarna för den dynamiska listan.
● Använda den dynamiska listformparametern UserSettingsKey. Om du anger denna parameter när du öppnar formuläret, 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

Den dynamiska listan som finns på formuläret ger möjlighet att utföra en interaktiv sökning i de visade data. Sökningen kan utföras med hjälp av följande verktyg: söksträng, sökdialog, 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
dynamisk lista (från tillgänglig given användare) som matchar sökkriterierna.
Det finns tre tabellegenskaper för att styra sökmöjligheter i en dynamisk lista hanterad form, som visar en dynamisk lista:
● Söksträngens position - definierar positionen för söksträngen. Kan ta följande värden: Auto, Kommandopanel, Nej, Topp, Botten.


Ris. 4. Sökfält i dynamisk lista

Om värdet för den här egenskapen är inställt på Kommandofält, kommer sökfältet att visas i formulärets kommandofält (om den dynamiska listan är formulärets huvudattribut) eller i kommandofältet som är associerat 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 att saknas i formuläret, och en dialogruta öppnas när du börjar skriva söksträngen.
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.
Övergången till sökfältet görs på följande sätt:
● Genom att trycka på tangentkombinationen Ctrl+F;
● Mus;
● När du börjar skriva i en dynamisk lista (baserat på värdet för den dynamiska listans SearchOnType-egenskap).
● Visa statusposition - 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ökstatus 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 utfördes eller inte endast genom tillgängligheten av knappen Avbryt sökning.
Om egenskapen är inställd på Top, kommer vytillståndet att placeras mellan listkommandofältet 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 senare ä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) – Nej;
● Om egenskapen Kompatibilitetsläge är inställd på Använd inte eller äldre än version 8.3.4, är värdet Top;
● Sökkontrollposition - bestämmer var sökkontrollknappen ska visas. Knappen öppnar en meny som innehåller följande information: Sök efter kommandon nuvarande värde, Avancerad sökning, Avbryt sökning, Ställ in period (för listor över dokument och tidskrifter) och historik över sökfrågor (senaste 5 frågorna). Egenskapen kan ha värden: Auto, Nej, Kommandopanel.


Ris. 6. Sökhantering 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 senare ä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) – Nej;
● Om egenskapen Kompatibilitetsläge är inställd på Använd inte eller äldre än version 8.3.4, är värdet Kommandopanelen;
Om det finns flera kommandopaneler i formuläret, vars kommandokälla är en tabell i det hanterade formuläret (visar dynamisk listdata), kommer söksträngen och sökkontrollknappen att finnas i endast en kommandopanel:
● Eller i kommandofältet i själva den dynamiska listan (om automatiskt slutförande)
● Eller i någon av de återstående kommandopanelerna.

Tänk 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 prestandamässigt) måste du aktivera fulltextsökning för alla konfigurationsobjekt som kan användas som huvudtabell i en dynamisk lista. 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 objektet 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 rutinuppgift, som regelbundet uppdaterar sökindexet i fulltext.

● Sökningen utförs inte på alla kolumner i den dynamiska listan (och konfigurationsobjektet), utan endast på 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 ViewFieldsGetProcess()-hanteraren för motsvarande objekt.
● För dynamiska listor med en specificerad huvudtabell används en fulltextsökning mot huvudtabellen. Alla oindexerade länkar från huvudtabellen kommer att läggas till i fulltextsökresultaten. Resultatet av fulltextsökningen för huvudtabellen används som ett filter efter nyckelfält. En fulltextsökning utförs också på fält som visas i listan från andra tabeller (om fulltextsökning används för fältet och konfigurationsobjektet). 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 använda fulltextsökning.
Detta kan till exempel hända när man söker efter en enstaka bokstav och ett stort antal linjer in informationsbas börjar med denna bokstav.
● Om urvalet med jämförelsetypen Lika används för fältet i huvudtabellen i den dynamiska listan, när du utför en fulltextsökning, Sök fråga enligt denna tabell kommer urvalsvärdet att läggas till.
● Söksträngen är uppdelad i ord. Denna partitionering görs enligt följande regler:
● Raden delas med mellanslag och tabbtecken som avgränsare.
● Sedan bearbetas varje resulterande fragment:
● Om fragmentet är en representation av ett datum (med eller utan tid) baserat på sessionens aktuella lokalitet, är fragmentet ordet.
● 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 är villkoret Fältnamn=Värde, där Värde är ett ord som har kastats till Number. Om casten inte kan utföras kommer fältsökningen inte att utföras.
● Ordet söks som en delsträng i standardrepresentationen av den booleska typen som definieras för den aktuella sessionen. Om sökordet hittas i en vy görs en sökning efter värdet som motsvarar den vy i vilken ordet hittades. Samtidigt används inte de vyer som anges med egenskapen Format form element för sökningen.
● För ett datumtypfält är villkoret Fältnamn>=DagStart(ord) OCH Fältnamn<=КонецДня(Слово). Если Слово подобно дате, в которой год
specificeras med en eller två siffror, kommer året att omvandlas till det aktuella århundradet och detta värde kommer att ersättas i sökvillkoret.
● För referensfält görs sökningen på de fält som används för att bilda representationen av länken. Sök i vart och ett av dessa fält
utförs enligt reglerna som beskrivs ovan. Sökningen använder inte de fält som används för att bilda en godtycklig presentation av data.
Uppsättningen av villkor för varje ord kombineras "med OCH".
● För värden med inledande nollor kan du söka antingen på en sträng med inledande nollor eller på en sträng som anges utan inledande nollor.
● Om den dynamiska listan visar en lista med dokument eller en dokumenthistorik, visas det angivna listvyintervallet också i formulärområdet som är avsett 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 ett urvalskriterium.
● De hittade fragmenten av linjer markeras när de visas i tabellen.
● Endast en söksträng stöds per kolumn. Om du lägger till en ny sökterm för en kolumn som redan genomsöks kommer att ersätta sökuttrycket snarare än att lägga till de två söktermerna.
● Om formuläret inte har ett formulärelementtillägg av formuläret Visa en söksträng som är associerad med en tabell (egenskapen Source för formulärelementtillägget) som visar en dynamisk lista, och tryck sedan på tangentkombinationen Ctrl+F för att öppna sökdialogrutan.


Ris. 7. Sök dialog

Om formuläret har ett formulärelementstillägg av formuläret Visning av en söksträng som är associerad med en tabell (egenskapen Source för formulärelementtillägget) som visar en dynamisk lista, så ska kommandot Avancerad sökning användas för att öppna sökdialogrutan.
● Tänk på följande när du använder sökdialogrutan:
● Om du öppnar sökdialogrutan med kortkommandon visas värdet för den aktuella cellen på raden Vad ska sökas, och värdet på alternativknappen Hur söker man ställs in på Exakt matchning.

● Att öppna en sökdialogruta genom att direkt börja skriva en söksträng i en dynamisk lista gör att värdet på alternativknappen Hur man söker ställs in på Del av en sträng och den inskrivna texten kommer in i fältet Vad ska sökas.

6. Få data som visas av den dynamiska listan

När du använder dynamiska listor kan du behöva utföra olika åtgärder på data som för närvarande visas av den dynamiska listan, med hänsyn till de pålagda filtren och tillämpad sökning. Sådana åtgärder inkluderar: bearbetning av den visade informationen, till exempel att lägga om valda dokument eller ställa in några 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 i en dynamisk lista, använd GetDataCompositionSchemeExecutable() och
GetDataCompositionSettingsExecutable().
Exempel på datahämtning:

Schema = Items.List.GetExecutableDataCompositionSchema();
Settings = Items.List.GetDataCompositionSettingsExecutable();
Layout Layout Builder = New Data Layout Layout Builder();
LayoutLayout = LayoutComposer.Run(Scheme, Settings);
CompositionProcessor = NewDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = New OutputProcessorofDataCompositionResultIntoSpreadsheetDocument;
Return OutputProcessor.Output(CompositionProcessor);

Att få in data i en samling värden (tabell eller värdelista) görs på liknande sätt.
Att hämta data från en dynamisk lista på detta sätt har ett antal funktioner som måste beaktas när man utvecklar applikationslösningar:
● Följande tabelldesign stöds inte:
● Linjefärgsväxling;
● Huvudbild;
● källarbild;
● Källarbakgrundsfä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 det hanterade formuläret stöds inte.
● När du sorterar en hierarkisk tabell i stigande ordning, efter ett fält av typen Länk, placeras alltid poster som innehåller en nolllänk först.