1c kontrollert formvalg. Hvordan åpne et listeskjema med noe utvalg? Innstillingsvalg i konfiguratoren

Kode 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Inneholder;
DirectoryList.Selection.Status.Value="Accepted";
DirectoryList.Selection.Status.Set();

For 1C 8.2:
Det er flere måter å åpne et listeskjema med et forhåndsinnstilt utvalg. La oss se på dem i rekkefølge:

1. Den første metoden er at når du åpner skjemaet, kan du angi parameteren Utvalgsskjema og åpne listeskjemaet med denne parameteren. Valgparameteren representerer strukturen. Navnene på elementene tilsvarer navnene på feltene som valget er gjort med, og verdiene inneholder utvalgsverdiene. Dette er et alternativ for dynamisk listeadministrert skjemautvidelse. Det vil si at det eksisterer for skjemaer hvis hovedattributt er et dynamisk listetypeattributt, for eksempel listeskjemaer og utvalgsskjemaer.

Ved åpning av skjemaet vil det bli gjort valg basert på det angitte feltet.
Kode 1C v 8.2 UP // For eksempel, i følgende eksempel, åpnes en liste over fakturaer med valg av Nummer-feltet lik 333.
Valgverdi = Ny struktur("Tall", "333");
SelectionParameters = New Structure("Selection", SelectionValue);

OpenForm("Dokument. Kvitteringsfaktura. Listeskjema", Valgalternativer);

// For eksempel åpner følgende eksempel en liste over fakturaer
// med valg av entreprenør-feltet lik "OJSC Horns and Hooves".
Valgverdi = Ny struktur("Motpart", "OJSC horn og hover");
SelectionParameters = New Structure("Selection", SelectionValue);
OpenForm("Dokument. Kvitteringsfaktura. Listeskjema", Valgalternativer);

2. Du kan åpne et listeskjema uten parametere:
Kode 1C v 8.2 UE OpenForm("Dokument. Kvitteringsfaktura.Listskjema");

Og så, i hendelsesbehandleren av skjemaet for listen over fakturaer When CreatedOnServer, skriv kode som lager et utvalg i den dynamiske listen, som er hovedattributtet til skjemaet:
Kode 1C v 8.2 UP &OnServer

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Tall");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Slutt på prosedyre

&På server
Prosedyre når opprettet på server (feil, standardbehandling)
Selection Element = List.Selection.Elements.Add(Type
("DataCompositionSelectionElement"));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = Sant;
SelectionElement.RightValue = 150000;
Slutt på prosedyre

Fordeler denne metoden er det sammenligningsvisningen for valg kan du angi ikke bare lik, som i det første tilfellet, men også mer, mindre, etc.

Men denne metoden har også en veldig betydelig ulempe: med dette valget vil skjemaet alltid åpne. Hvor enn hun ble oppringt fra. Derfor bør ikke dette skjemaet angis som hovedskjemaet. Og hvis det likevel er det viktigste, så før du installerer utvalget, er det nødvendig å gi en slags analyse av hvor dette skjemaet åpnes fra. For eksempel å analysere skjemaparametere.

3. Til slutt kan valgbetingelsen plasseres i en egendefinert spørring som velger data for en dynamisk liste. For eksempel må vi åpne en liste over fakturaer som inneholder varen uthevet i varelisten.

For å gjøre dette, i form av en liste over elementer, opprett en kommando og den tilsvarende knappen Kvittering av fakturaer.

La oss fylle ut kjøringsbehandleren for denne kommandoen som følger:
Kode 1C v 8.2 UP &OnClient
Prosedyre kvitteringsfakturaer (kommando)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

Slutt på prosedyre

I denne behandleren mottar vi skjemaet for fakturalisten og sender lenken til gjeldende vare i varelisten til skjemaparameteren FilterByProduct og åpner skjemaet med denne parameteren.

Deretter vil vi lage et skjema for dokumentlisten: Kvitteringsfaktura og lage et skjemaattributt FilterBy Product, som vi vil bruke som parameter på skjemaet når vi åpner det. La oss nå åpne egenskapspaletten til hovedattributtet til Liste-skjemaet. Sett ArbitraryRequest-flagget og klikk på Listeinnstillinger Åpen.

Skriv inn følgende forespørselstekst i forespørselsfeltet:
Kode 1C v 8.2 UP SELECT
Dokumentkvitteringsfaktura nummer,
Dokumentkvittering Faktura.Dato
FRA
Document.ReceiptInvoice AS DocumentReceiptInvoice
HVOR
Dokumentkvittering Invoice.Products.Product = &Produkt

I forespørselen bruker vi vareparameteren, som vil motta en lenke til gjeldende linje i varelisten, inneholdt i skjemaparameteren FilterBy Item fakturaliste. For å gjøre dette, i OnOpen-listeskjemaet hendelsesbehandler, vil vi skrive kode for å angi verdien av produktforespørselsparameteren:
Kode 1C v 8.2 UP
&OnClient
Åpningsprosedyre (feil)

List.Parameters.SetParameterValue("Product", FilterByProduct);

Slutt på prosedyre

Her Liste.Alternativer er en liste over parametere for dynamisk listeforespørsel for List-attributtet. Verdien til produktparameteren settes lik verdien til skjemaparameteren FilterByProduct.

Som et resultat, ved å klikke på Kvitteringsfakturaer-knappen i form av en liste over varer, vil vi motta en liste over kun de fakturaene som inneholder elementene som er uthevet i dette øyeblikket i nomenklaturlisten.

Informasjon hentet fra siden

Utvalg på administrerte skjemaer i 1C 8.3

Artikkelen vil diskutere alternativer for å installere utvalg i administrerte skjemaer 1C 8.3. Valget for en dynamisk liste kan settes statisk eller dynamisk, i brukergrensesnitt eller konfigurator. Vi vil vurdere alle valgalternativene nedenfor.

  • Innstillingsvalg i konfiguratoren

Innstillingsvalg i brukermodus

En dynamisk liste, i motsetning til en tabell eller verditre, er en mer passende løsning for å implementere skjemaer som inneholder lister, fordi Den dynamiske listen gir det bredeste utvalget av verktøy for arbeid med utvalg, feltgruppering og sortering. Dette valget kan stilles inn når du arbeider i brukermodus eller konfiguratoren, prinsippet er det samme.

For å sette opp valg i bedriftsmodus, må du ringe kommandoen "Tilpass liste".

Et vindu åpnes.


"Utvalg"-fanen viser en liste over felt som er i gjeldende liste. Velg listefeltene som vi skal filtrere etter. Dette kan gjøres ved å dobbeltklikke eller bruke dra og slipp.


Vi setter sammenligningstype og verdi, klikker på "Fullfør redigering", valget er satt.


Når du setter opp utvalg i bedriftsmodus, opprettes det automatisk såkalte hurtigvalgfelt på listeskjemaet.


For at 1C-plattformen automatisk skal lage hurtigvalgfelt, må du spesifisere en gruppe brukerinnstillinger når du utvikler et skjema i konfiguratoren.


Dette valget lagres kun for gjeldende bruker, noe som tillater fleksibel tilpasning av den dynamiske listen. Men hvis oppgaven er å gjøre et fast utvalg for en spesifikk liste for alle brukere av systemet, kan vi løse det kun gjennom konfiguratoren.

Innstillingsvalg i konfiguratoren

Ved å jobbe i konfiguratoren kan vi angi to typer dynamisk listevalg – fast og dynamisk. Fast valg kan konfigureres én gang, dynamisk eller programmatisk kan settes avhengig av data i systemet.

Prinsippet for å sette et fast valg i konfiguratoren er ikke forskjellig fra å sette det i brukermodusen beskrevet ovenfor. For å angi valget, må vi åpne de dynamiske listeinnstillingene.


Et vindu åpnes.


Valg stilles inn på samme måte som i brukermodus.

Alternativet "Inkluder i brukerinnstillinger" bestemmer om valget satt i konfiguratoren vil være tilgjengelig i brukermodus gjennom menypunktet "Tilpass liste".


Dynamisk (programvare) valg

Ofte er det behov for å sette utvalg programmatisk, for eksempel når vi åpner et utvalgsskjema, når vi skal åpne et kontrollert skjema med utvalg. En parameter sendes til skjemaet og valget settes basert på denne parameteren. Et vanlig eksempel på dette er valg av katalogelementer etter eier.

Metoder

Hvis konfigurasjonen som utvikles inneholder BSP-undersystemet "Basic Functionality", kan programvarevalg i den dynamiske listen installeres ved å bruke standardmetoden:

GeneralPurposeClientServer.SetDynamicListSelectionElement()

Signatur for denne metoden:

Dynamisk liste Type: DynamicList – Listen der du vil angi utvalget.

Feltnavn Type: String – Feltet du vil angi utvalget med.

RightValue Type: Vilkårlig – Valgverdi (Valgfritt. Standardverdi: Udefinert. Merk: Hvis du passerer Udefinert, vil ikke verdien endres).

Vis sammenligning Type: DataComposition Comparison Type – Utvalgsbetingelse.

Opptreden Type: String – Representasjon av et datakomposisjonselement (Valgfritt. Standardverdi: Udefinert. Hvis spesifisert, skrives bare bruksflagget med den angitte representasjonen ut (ingen verdi skrives ut). En tom streng må sendes for å slette slik at verdien skrives ut igjen.)

Bruk Type: Boolsk – Flagg for å bruke dette valget (Valgfritt. Standard: Udefinert).

Visningsmodus Type: ItemDisplayModeDataCompositionSettings – Hvordan dette valget vises for brukeren. Mulige verdier:

  • Element Display Mode Data Layout Settings.Rask tilgang – I gruppe hurtiginnstillinger over listen.
  • Element Display Mode Data Layout Settings Normal – I listeinnstillinger (i undermenyen Mer).
  • ElementDisplayModeDataCompositionSettings.Inaccessible – Hindre brukeren fra å endre dette valget.

IdentifierUserSettings Type: String – Unik identifikator for dette utvalget (Brukes til å kommunisere med brukerinnstillinger).

For å fjerne en utvalgsverdi må du bruke standardmetoden:

General PurposeClientServer. RemoveGroupElementsSelectionDynamicList()

Signatur for denne metoden:

Dynamisk liste Type: DynamicList – skjemaattributt som du vil angi valg for.

Feltnavn Type: String – navn på layoutfeltet (brukes ikke for grupper).

Opptreden Type: String – Representasjon av et layoutfelt.

Hvis det ikke er noen BSP i systemet, kan utvalget settes uavhengig ved hjelp av DataComposition Field-objektet.

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element")); Selection Element.LeftValue = NewDataCompositionField("Navn"); Selection Element.Comparison Type = DataComposition Comparison Type.Equal; Selection Element.DisplayMode = ElementDisplayModeDataCompositionSettings.QuickAccess; // Valgfritt valgelement RightValue = "Ivanov";

Dette valget vil velge rader der verdien "Fullt navn" = "Ivanov".

For å bruke logisk "AND", "OR", "NOT" er datatypen DataCompositionSelectionElementGroup ment

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("Navn"); 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("Navn"); Selection Element.Comparison Type = DataComposition Comparison Type.Equal; SelectionElement.RightValue = "Petrov";

Dette valget vil velge rader der verdien "Fullt navn" = "Ivanov" eller "Petrov".

Valg i en dynamisk liste kan også gjøres ved å endre teksten i den dynamiske listeforespørselen. Dette alternativet fungerer når den dynamiske listen lages via en "tilpasset forespørsel".


For å gjøre dette, legg til betingelsen "HVOR ER SANN" i søketeksten...


Som du kan se, er denne tilnærmingen mer kompakt når det gjelder å skrive kode. Hvordan vanskeligere forhold vi ønsker å etablere utvalg i den tabellformede delen, jo mer tungvint vil alternativet ved å velge gjennom Data Composition Selection Element være. Eksemplet med å endre forespørselsteksten har imidlertid sine ulemper - denne implementeringen er ikke motstandsdyktig mot kodeendringer. For eksempel gjorde du en slik implementering og glemte det, men hvis du i fremtiden vil endre forespørselsteksten ved å legge til en operatør etter WHERE (ORDER, GROUP), må du huske at programkoden inneholder:

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

Dersom dette ikke tas i betraktning vil det oppstå en feil, men for å unngå dette kan du endre den til en annen implementering. Vi legger til følgende betingelse i forespørselsteksten:

HVOR (IKKE &SelectionInstalled OR DirectoryUsers.Name IN (&PermittedName))

List.Parameters.SetParameterValue("SelectionSet", Full Name.Quantity() > 0); List.Parameters.SetParameterValue("Tillatt fullt navn", fullt navn);

Her er fullt navn en rekke.

Som du kan se, 2 linjer med kode versus 10. Hvilken metode du skal velge avhenger av den spesifikke applikasjonsoppgaven.

For å åpne utvalgsskjemaet med utvalg i 1s 8.2(vanlige former), må vi utføre noen handlinger. Vi får det først. Etter det setter vi valget og åpner det programmatisk, her er et kodeeksempel:

Utvalg på skjemaet i 1C 8.2-inndatafeltet med flere verdier

I eksemplet ovenfor så vi på hvordan du setter valg på utvalgsskjemaet etter spesifikk verdi. La oss nå se på en situasjon der du må erstatte flere verdier, dette kan for eksempel være en matrise eller avlastet fra et spørringsresultat. Dette er et utvalg i 1c-inntastingsfeltet med flere betydninger.

Først får vi valgskjemaet, sender "Element" (eier) i parametrene, setter valgmodusflagget. Deretter lager vi en liste over verdier og en matrise, vi merker at som et valg når du angir type sammenligning i listen, kan et objekt bare være tilstede med typen Listeverdier. Vi legger til elementer i matrisen, og laster deretter denne matrisen inn i listen over verdier, som vi deretter angir i utvalget. Ikke glem å aktivere flagget for bruk av dette valget og angi sammenligningstype.

Sette valg i inntastingsfeltet på skjemaet i 1C 8.3, Start of Selection-hendelse

La oss nå vurdere valg i inndatafeltet på et administrert skjema i 1C 8.3. La oss finne på skjemaet elementet vi er interessert i, der vi vil angi utvalget, i vårt tilfelle er dette feltet "Organisasjon". Vi finner arrangementet «Start of Selection», klikker på forstørrelsesglasset og finner oss selv i prosedyren. Vi ser parameteren Selection Data; denne parameteren er av typen ValueList. For å begrense utvalget til de nødvendige elementene, må vi fylle ut listen over verdier. Vi kan velge elementer kun på serveren, så vi lager en prosedyre med &OnServer-kompileringsdirektivet. I denne prosedyren fyller du inn utvalgsdata.

Kode 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Inneholder;
DirectoryList.Selection.Status.Value="Accepted";
DirectoryList.Selection.Status.Set();

For 1C 8.2:
Det er flere måter å åpne et listeskjema med et forhåndsinnstilt utvalg. La oss se på dem i rekkefølge:

1. Den første metoden er at når du åpner skjemaet, kan du angi parameteren Utvalgsskjema og åpne listeskjemaet med denne parameteren. Valgparameteren representerer strukturen. Navnene på elementene tilsvarer navnene på feltene som valget er gjort med, og verdiene inneholder utvalgsverdiene. Dette er et alternativ for dynamisk listeadministrert skjemautvidelse. Det vil si at det eksisterer for skjemaer hvis hovedattributt er et dynamisk listetypeattributt, for eksempel listeskjemaer og utvalgsskjemaer.

Ved åpning av skjemaet vil det bli gjort valg basert på det angitte feltet.
Kode 1C v 8.2 UP // For eksempel, i følgende eksempel, åpnes en liste over fakturaer med valg av Nummer-feltet lik 333.
Valgverdi = Ny struktur("Tall", "333");
SelectionParameters = New Structure("Selection", SelectionValue);

OpenForm("Dokument. Kvitteringsfaktura. Listeskjema", Valgalternativer);

// For eksempel åpner følgende eksempel en liste over fakturaer
// med valg av entreprenør-feltet lik "OJSC Horns and Hooves".
Valgverdi = Ny struktur("Motpart", "OJSC horn og hover");
SelectionParameters = New Structure("Selection", SelectionValue);
OpenForm("Dokument. Kvitteringsfaktura. Listeskjema", Valgalternativer);

2. Du kan åpne et listeskjema uten parametere:
Kode 1C v 8.2 UE OpenForm("Dokument. Kvitteringsfaktura.Listskjema");

Og så, i hendelsesbehandleren av skjemaet for listen over fakturaer When CreatedOnServer, skriv kode som lager et utvalg i den dynamiske listen, som er hovedattributtet til skjemaet:
Kode 1C v 8.2 UP &OnServer

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));
SelectionElement.LeftValue = NewDataCompositionField("Tall");


SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;
SelectionElement.RightValue = "000000001";
Slutt på prosedyre

&På server
Prosedyre når opprettet på server (feil, standardbehandling)
Selection Element = List.Selection.Elements.Add(Type
("DataCompositionSelectionElement"));
SelectionElement.LeftValue = NewDataCompositionField("DocumentAmount");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.RightValue = 150000;
Slutt på prosedyre

Fordelene med denne metoden er at sammenligningsvisningen for valg kan du angi ikke bare lik, som i det første tilfellet, men også mer, mindre, etc.

Men denne metoden har også en veldig betydelig ulempe: med dette valget vil skjemaet alltid åpne. Hvor enn hun ble oppringt fra. Derfor bør ikke dette skjemaet angis som hovedskjemaet. Og hvis det likevel er det viktigste, så før du installerer utvalget, er det nødvendig å gi en slags analyse av hvor dette skjemaet åpnes fra. For eksempel å analysere skjemaparametere.

3. Til slutt kan valgbetingelsen plasseres i en egendefinert spørring som velger data for en dynamisk liste. For eksempel må vi åpne en liste over fakturaer som inneholder varen uthevet i varelisten.

For å gjøre dette, i form av en liste over elementer, opprett en kommando og den tilsvarende knappen Kvittering av fakturaer.

La oss fylle ut kjøringsbehandleren for denne kommandoen som følger:
Kode 1C v 8.2 UP &OnClient
Prosedyre kvitteringsfakturaer (kommando)

ListForm = GetForm("Document.Invoice.ListForm");
ListForm.FilterByProduct = Elements.List.CurrentRow;
ListForm.Open();

Slutt på prosedyre

I denne behandleren mottar vi skjemaet for fakturalisten og sender lenken til gjeldende vare i varelisten til skjemaparameteren FilterByProduct og åpner skjemaet med denne parameteren.

Deretter vil vi lage et skjema for dokumentlisten: Kvitteringsfaktura og lage et skjemaattributt FilterBy Product, som vi vil bruke som parameter på skjemaet når vi åpner det. La oss nå åpne egenskapspaletten til hovedattributtet til Liste-skjemaet. Sett ArbitraryRequest-flagget og klikk på Listeinnstillinger Åpen.

Skriv inn følgende forespørselstekst i forespørselsfeltet:
Kode 1C v 8.2 UP SELECT
Dokumentkvitteringsfaktura nummer,
Dokumentkvittering Faktura.Dato
FRA
Document.ReceiptInvoice AS DocumentReceiptInvoice
HVOR
Dokumentkvittering Invoice.Products.Product = &Produkt

I forespørselen bruker vi vareparameteren, som vil motta en lenke til gjeldende linje i varelisten, inneholdt i skjemaparameteren FilterBy Item fakturaliste. For å gjøre dette, i OnOpen-listeskjemaet hendelsesbehandler, vil vi skrive kode for å angi verdien av produktforespørselsparameteren:
Kode 1C v 8.2 UP
&OnClient
Åpningsprosedyre (feil)

List.Parameters.SetParameterValue("Product", FilterByProduct);

Slutt på prosedyre

Her Liste.Alternativer er en liste over parametere for dynamisk listeforespørsel for List-attributtet. Verdien til produktparameteren settes lik verdien til skjemaparameteren FilterByProduct.

Som et resultat, ved å klikke på Kvitteringsfaktura-knappen i varelisteskjemaet, vil vi motta en liste over kun de fakturaene som inneholder varen som er valgt i varelisten.

Hvordan åpne et listeskjema med noe utvalg?

Det er flere måter å åpne et listeskjema med et forhåndsinnstilt utvalg. La oss se på dem i rekkefølge:

1. Den første metoden er at når du åpner skjemaet, kan du angi parameteren Utvalgsskjema, og åpne listeskjemaet med denne parameteren. Valgparameteren representerer strukturen. Navnene på elementene tilsvarer navnene på feltene som valget er gjort med, og verdiene inneholder utvalgsverdiene. Dette er et alternativ for dynamisk listeadministrert skjemautvidelse. Det vil si at den eksisterer for skjemaer hvis hovedattributt er typeattributtet Dynamisk liste, for eksempel listeskjemaer og utvalgsskjemaer.

Ved åpning av skjemaet vil det bli gjort valg basert på det angitte feltet. For eksempel, i følgende eksempel, åpnes en liste over fakturaer med valg av Nummer-feltet, lik 333.

Valgverdi = Ny struktur("Tall", "333");

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

OpenForm("Dokument. Kvitteringsfaktura. Listeskjema", Valgalternativer);

2. Du kan åpne et listeskjema uten parametere:

OpenForm("Document.Invoice.ListForm");

Og så, i hendelsesbehandleren til fakturalisteskjemaet Når CreatedOnServer skriv kode som lager et utvalg i en dynamisk liste, som er hovedattributtet til skjemaet:

&På server

Prosedyre når opprettet på server (feil, standardbehandling)

Selection Element = List.Selection.Elements.Add(Type("DataComposition Selection Element"));

SelectionElement.LeftValue = NewDataCompositionField("Tall");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = True;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Inaccessible;

SelectionElement.RightValue = "000000001";

Slutt på prosedyre

Fordelene med denne metoden er at sammenligningstypen for utvalget kan settes ikke bare lik, som i det første tilfellet, men også mer, mindre, etc.

Men denne metoden har også en veldig betydelig ulempe: med dette valget vil skjemaet alltid åpne. Hvor enn hun ble oppringt fra. Derfor bør ikke dette skjemaet angis som hovedskjemaet. Og hvis det likevel er det viktigste, så før du installerer utvalget, er det nødvendig å gi en slags analyse av hvor dette skjemaet åpnes fra. For eksempel å analysere skjemaparametere.

3. Til slutt kan valgbetingelsen plasseres i en egendefinert spørring som velger data for en dynamisk liste. For eksempel må vi åpne en liste over fakturaer som inneholder varen uthevet i varelisten.

For å gjøre dette, i form av en liste over elementer, opprett en kommando og en tilsvarende knapp Kvittering av fakturaer.

La oss fylle ut kjøringsbehandleren for denne kommandoen som følger:

&På klient

Prosedyre kvitteringsfakturaer (kommando)

ListForm = GetForm("Document.Invoice.ListForm");

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

Slutt på prosedyre

I denne behandleren mottar vi skjemaet for fakturalisten og sender lenken til gjeldende vare i varelisten til skjemaparameteren FilterByProduct og åpner skjemaet med denne parameteren.

Deretter lager vi et dokumentlisteskjema Kjøpsfaktura og lag skjemaattributtet FilterByProduct, som vi vil bruke som skjemaparameter når vi åpner det. La oss nå åpne egenskapspaletten til hovedattributtet til Liste-skjemaet. La oss sette flagget CustomRequest og i køen Listeoppsett klikk Åpne.

Skriv inn følgende forespørselstekst i forespørselsfeltet:

VELGE

Dokumentkvitteringsfaktura nummer,

Dokumentkvittering Faktura.Dato

FRA

Document.ReceiptInvoice AS DocumentReceiptInvoice

HVOR

Dokumentkvittering Invoice.Products.Product = &Produkt

I forespørselen bruker vi vareparameteren, som vil motta en lenke til gjeldende linje i varelisten, inneholdt i skjemaparameteren FilterBy Item fakturaliste. For å gjøre dette, i OnOpen-listeskjemaet hendelsesbehandler, vil vi skrive kode for å angi verdien av produktforespørselsparameteren:

&På klient

Åpningsprosedyre (feil)

List.Parameters.SetParameterValue("Product", FilterByProduct);

Slutt på prosedyre

Her Liste.Alternativer er en liste over parametere for dynamisk listeforespørsel for List-attributtet. Verdien til produktparameteren settes lik verdien til skjemaparameteren FilterByProduct.

Som et resultat, ved å klikke på en knapp Kvittering av fakturaer i form av en vareliste vil vi motta en liste over kun de fakturaene som inneholder varen som er valgt i varelisten.

Et demoeksempel for det tredje alternativet er plassert i katalogen 1CITS/EXE/FAQ/OpenFormWithSelection.dt. Eksemplet ble utført på plattformversjon 8.2.9.356.




Topp