1c i urvalsparametrarna, ställ in gruppnamnet. Ställ in urvalsparametrar och urvalsparameterassociationer för metadataobjekt. DescriptionofTypesInventory = NewDescriptionofTypes(Array)

För att öppna urvalsformuläret med urval i 1s 8.2(vanliga former), måste vi utföra några åtgärder. Vi får det först. Efter det ställer vi in ​​valet och öppnar det programmatiskt, här är ett kodexempel:

Urval på formuläret i inmatningsfältet 1C 8.2 med flera värden

I exemplet ovan tittade vi på hur man ställer in urval på urvalsformuläret efter specifikt värde. Låt oss nu titta på en situation där du behöver ersätta flera värden, detta kan till exempel vara en array eller avlastas från ett frågeresultat. Detta är ett urval i inmatningsfältet 1c med flera betydelser.

Först får vi urvalsformuläret, skickar "Element" (ägare) i parametrarna, ställer in markeringslägesflaggan. Sedan skapar vi en lista med värden och en array, vi noterar att som ett urval när du ställer in typen av jämförelse i listan kan ett objekt endast vara närvarande med typen ListVärden. Vi lägger till element i arrayen och laddar sedan in denna array i listan över värden, som vi sedan ställer in i urvalet. Glöm inte heller att aktivera flaggan för att använda detta val och ange jämförelsetyp.

Ställa in val i inmatningsfältet på formuläret i 1C 8.3, Start of Selection-händelse

Låt oss nu överväga val i inmatningsfältet på i en hanterbar form i IC 8,3. Låt oss hitta elementet vi är intresserade av i formuläret, där vi kommer att ställa in valet, i vårt fall är detta fältet "Organisation". Vi hittar eventet "Start of Selection", klickar på förstoringsglaset och befinner oss i proceduren. Vi ser parametern Selection Data; denna parameter är av typen ValueList. För att begränsa urvalet till de nödvändiga elementen måste vi fylla i värdelistan. Vi kan bara välja element på servern, så vi skapar en procedur med &OnServers kompileringsdirektiv. I den här proceduren fyller du i urvalsdata.

/
Utvecklare /
Kodningskonventioner

Ställa in urvalsalternativ och kombinationer av urvalsalternativ för metadataobjekt

1. Som regel måste affärslogikbegränsningar såsom urvalsbegränsningar vara desamma för alla former där ett visst objekt redigeras. Därför rekommenderas det att ställa in urvalsparametrar och kopplingar mellan urvalsparametrar i egenskaperna för metadataobjekt - i detaljerna i kataloger, dokument, etc.

2. Det kan dock finnas fall där urvalsbegränsningarna kan bero på det specifika driftsscenariot. I sådana fall kan urvalsparametrarna anges lokalt, i en specifik form.

Till exempel innehåller konfigurationen

  • katalog Anställda, som innehåller detaljer Organisation Och Typ av anställd(uppräkning med värden Grundläggande/Deltidsarbetare);
  • dokumentera Mottagningsordning, som innehåller rekvisita Organisation Och Anställd; medan för rekvisita Anställd dokumentera Mottagningsordning valparameteranslutning är specificerad Urval.Organisation med rekvisita Organisation.

Det krävs för att implementera möjligheten att endast välja nyckelpersoner beroende på värdet av det funktionella alternativet Välj EndastFrån Anställda Grundläggande. För detta är det nödvändigt

  • i form av ett dokument Mottagningsordning implementera ytterligare formulärattribut Typer av anställda,
  • sedan för formulärfältet Anställd en länk för urvalsparameter kan upprättas Urval. Typ av anställd med formulärdetaljer Typer av anställda,
  • i detta fall informationen om formuläret Typer av anställda fylls i baserat på analysen av det funktionella alternativet.

(Samtidigt, ställ in för rekvisita Anställd dokumentera Mottagningsordning länk för urvalsparameter Urval. Typ av anställd det finns ingen möjlighet, eftersom rekvisita Typ av anställd i dokumentet Mottagningsordning existerar inte.)

Ställ sedan in anslutningen för parametern Urval.Organisation i rekvisitafastigheter Anställd dokumentera Mottagningsordning och anslutningar för parametern Urval. Typ av anställd i dokumentformulärsfältet Mottagningsordning kommer att leda till det faktum att i läget 1C:Företag Båda länkarna för valparameter kommer att fungera. Sålunda, när du väljer en anställd i anställningsbeställningsformuläret, kommer urvalet i listan över anställda att bestämmas både av den organisation som fylls i i dokumentet och av typen av anställd, som kommer att bestämmas baserat på det funktionella alternativet.

God eftermiddag.

Idag ska vi prata om hur man programmatiskt öppnar urvalsformulär i det nya hanterade gränssnittet.

Tidigare i " regelbunden tillämpning"Vi skrev så här:

form = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

Mellan dessa operatorer kan vi ändra egenskaperna för formuläret, till exempel ställa in urvalet. Vi skulle kunna ange en specifik form med namn. Skulle kunna ändra det utseende, åtkomst till formulärelementegenskaperna med deras namn genom en punkt (form.Button1.Visibility = False;)

Nu har vi ett hanterat gränssnitt och allt är annorlunda här. Problemet är att dela upp koden i server- och klientdelar. Vi kan bara komma åt objekt och deras metadata på servern, och vi måste öppna formulär på klienten.

Så låt oss börja.

1. Det enklaste fallet är när vi inte behöver hantera urvalet (ställ in urval, skicka parametrar till det öppnade urvalsformuläret).

Eftersom formulär endast kan öppnas på klienten kommer detta att vara en kodbit på klientsidan. Vi kommer att använda funktionen AngeValue(<Значение>, <Подсказка>, <Тип>) . Egentligen framgår allt av hennes beskrivning. Den returnerar flaggan för huruvida användaren har gjort ett urval; i den första parametern skickar vi behållaren till vilken urvalsvärdet kommer att returneras, i den andra texten som kommer att visas i titeln på urvalsfönstret, i den tredje arrayen av typer.

Här är ett exempel på användning:

Variabel SelectTMC;

ArrayTypes = New Array;

DescriptionofTypesTMC = NewDescriptionofTypes(Array);

Om EnterValue(Välj lager, "Välj artikel", beskrivning av lagertyper)

//Bearbetar det valda värdet

endIf;

Jag ska tillägga att om vi tilldelar något värde till vår containervariabel innan vi väljer den kommer det att vara standardvärdet. I det här fallet behöver du inte bilda en uppsättning typer; typen kommer att tas från värdet i behållaren.

2. Ibland, innan vi väljer ett värde, måste vi ställa in några val och urvalsparametrar. Vi behöver till exempel välja ett motpartsavtal. Den första metoden kommer att öppna alla dokument för oss, men vi måste välja efter ägare.

Det finns två metoder för att öppna formulär: OpenForm Och OpenFormModal. I den första metoden kommer vi att öppna formuläret och kodbiten från vilken vi öppnade formuläret kommer att fortsätta att köras utan att få resultatet av valet. Urvalsresultatet, beroende på anropsmetoden, kommer att placeras antingen i inmatningsfältet eller tas emot i den fördefinierade proceduren "Selection Processing".

I vårt fall måste vi få in det valda värdet i en viss variabel och fortsätta bearbetningen med hänsyn till det valda värdet, utan att överföra kontrollen till andra procedurer. Därför kommer det att passa oss OpenFormModal.

Jag reserverar genast att detta är ett dåligt sätt för ett webbgränssnitt, eftersom... Modala fönster öppnas i ett nytt webbläsarfönster som vanligtvis är blockerat. Men om du förklarar för användaren i förväg vad som är vad, så tror jag att han kommer att klara det här problemet))

Så låt oss titta på beskrivningen av proceduren, den har 4 parametrar. I den första anger vi en rad med den fullständiga sökvägen till formuläret "Katalog. Kontrakt med entreprenörer. Urvalsformulär". I den andra anger vi urvalsparametrarna, mer om dem nedan. I den tredje - ägaren, detta är ett formulär eller urvalsfält som kommer att få resultatet av urvalet, vi fyller inte i det. Den fjärde parametern används inte heller i vårt fall.

Så, för ett enkelt urval, kommer följande rad att göra:

&OnClient

Procedur Kommando1 (Kommando)

res = OpenFormModal("Katalog. Kontrakt med entreprenörer. SelectionForm");

Slutprocedur

Men detta är en komplett analog av metod nr 1, och vi kommer att se ett formulär för att välja alla kontrakt, utan att välja av ägaren. De där. Detta kan endast göras om vi vill ange namnet på urvalsformuläret.

För att ställa in valet kommer den andra parametern att hjälpa oss.

Den andra parametern är av typen "Struktur". Som strukturelement kan du ange formulärparametrar som lagts till på fliken "parametrar" i urvalsformuläret. Deras behandling bör beskrivas i förfarandet När CreatedOnServer i modulen urvalsformulär. Det här är inte bra för oss, för... Jag måste ändra konfigurationen. Du kan också skicka en urvalsstruktur med "selektion"-tangenten i parameterstrukturen. Då kommer alla fält från urvalsstrukturen att användas för att välja listan med element och kommer inte att vara tillgängliga för användaren vare sig för visning eller ändring.

I mitt exempel ritade jag ett urvalsfält i bearbetningen som hänvisar till attributet processing form "motpart" med datatyp " DirectoryLink.Motparter". och skrev följande kodbit:

&OnClient

Procedur Kommando1 (Kommando)

Selections = New Structure("Ägare", Motpart);

SelectionParameters = New Structure("Selection", Selection);

res = OpenFormModal("Katalog. Kontrakt med entreprenörer. Urvalsformulär", urvalsparametrar);

Slutprocedur

Detta är vanligtvis tillräckligt för att lösa de flesta problem och kräver ingen konfigurationsåtgärd. Men i urvalsformuläret i proceduren "When CreatedOnServer" kan ditt val gå förlorat. Innan du använder den här metoden bör du därför granska den här proceduren i urvalsformuläret du öppnar. Krokiga utvecklare där kan enkelt ställa in sitt val "som standard", och glömmer att kontrollera att valet passeras i öppningsparametrarna.

Det var allt för idag, tack för din uppmärksamhet.




Topp