Kaip atidaryti sąrašo formą su tam tikru pasirinkimu? Kaip atidaryti sąrašo formą su pasirinkimu? Atrankos arba įprastos formos 1c.

Kodas 1C v 8.x DirectoryList.Selection.Reset();
DirectoryList.Selection.status.ComparisonType=ComparisonType.Contains;
DirectoryList.Selection.Status.Value="Priimta";
DirectoryList.Selection.Status.Set();

1C 8.2:
Yra keletas būdų, kaip atidaryti sąrašo formą su tam tikru iš anksto nustatytu pasirinkimu. Pažvelkime į juos eilės tvarka:

1. Pirmasis būdas – atidarant formą galima nustatyti parametrą Selection form ir šiuo parametru atidaryti sąrašo formą. Parametras Selection nurodo struktūrą. Elementų pavadinimai atitinka laukų, pagal kuriuos atliekamas pasirinkimas, pavadinimus, o reikšmėse yra pasirinkimo reikšmės. Tai dinaminio sąrašo valdomos formos plėtinio parinktis. Tai yra, jis egzistuoja formoms, kurių pagrindinis atributas yra dinaminio sąrašo tipo atributas, pavyzdžiui, sąrašo formoms ir pasirinkimo formoms.

Atidarius formą, pasirinkimas bus atliktas pagal nurodytą lauką.
Kodas 1C v 8.2 UP // Pavyzdžiui, toliau pateiktame pavyzdyje atidaromas sąskaitų faktūrų sąrašas, pasirinkus lauką Skaičius, lygų 333.
Pasirinkimo reikšmė = nauja struktūra ("Skaičius", "333");
SelectionParameters = Nauja struktūra("Pasirinkimas", SelectionValue);

OpenForm("Dokumentas. Kvito sąskaita faktūra. Sąrašo forma", Pasirinkimo parinktys);

// Pavyzdžiui, toliau pateiktame pavyzdyje atidaromas sąskaitų faktūrų sąrašas
// su Rangovo lauko pasirinkimu, lygiu „OJSC Horns and Hooves“.
Pasirinkimo vertė = nauja struktūra ("Sandorio šalis", "OJSC ragai ir kanopos");
SelectionParameters = Nauja struktūra("Pasirinkimas", SelectionValue);
OpenForm("Dokumentas. Kvito sąskaita faktūra. Sąrašo forma", Pasirinkimo parinktys);

2. Galite atidaryti sąrašo formą be parametrų:
Kodas 1C v 8.2 UE OpenForm ("Dokumentas. Kvito sąskaita faktūra. Sąrašo forma");

Tada sąskaitų faktūrų sąrašo formos įvykių tvarkyklėje When CreatedOnServer parašykite kodą, kuris sukuria pasirinkimą dinaminiame sąraše, kuris yra pagrindinis formos atributas:
Kodas 1C v 8.2 UP &OnServer

Selection Element = List.Selection.Elements.Add(Type("Duomenų sudėties pasirinkimo elementas"));
SelectionElement.LeftValue = NewDataCompositionField("Skaičius");

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Nepasiekiama;
SelectionElement.RightValue = "000000001";
Procedūros pabaiga

&Serveryje
Procedūra, kai sukuriama serveryje (gedimas, standartinis apdorojimas)
Pasirinkimo elementas = List.Selection.Elements.Add(Type
(„DataCompositionSelectionElement“);
SelectionElement.LeftValue = NewDataCompositionField("Dokumento suma");
SelectionElement.ComparisonView = DataCompositionComparisonView.More;
SelectionElement.Use = True;
SelectionElement.RightValue = 150000;
Procedūros pabaiga

Šio metodo pranašumai yra palyginimo vaizdas pasirinkimui galite nustatyti ne tik Equal, kaip pirmuoju atveju, bet ir Daugiau, Mažiau ir kt.

Tačiau šis metodas turi ir labai reikšmingą trūkumą: su šiuo pasirinkimu forma visada atsidarys. Kad ir iš kur jai būtų skambinama. Todėl ši forma neturėtų būti nurodyta kaip pagrindinė. Ir jei vis dėlto jis yra pagrindinis, tada prieš diegiant pasirinkimą būtina pateikti tam tikrą analizę, iš kur atsidaro ši forma. Pavyzdžiui, analizuojant formos parametrus.

3. Galiausiai pasirinkimo sąlyga gali būti įtraukta į pasirinktinę užklausą, kuri parenka duomenis dinaminiam sąrašui. Pavyzdžiui, turime atidaryti sąskaitų faktūrų, kuriose yra prekių sąraše pažymėta prekė, sąrašą.

Norėdami tai padaryti, prekių sąrašo pavidalu sukurkite komandą ir atitinkamą mygtuką Sąskaitų faktūrų gavimas.

Užpildykime šios komandos vykdymo tvarkyklę taip:
Kodas 1C v 8.2 UP &OnClient
Procedūros kvitaiSąskaitos faktūros (komanda)

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

Procedūros pabaiga

Šioje tvarkyklėje gauname sąskaitų faktūrų sąrašo formą ir perduodame nuorodą į dabartinę prekių sąrašo prekę į formos parametrą FilterByProduct ir atidarome formą su šiuo parametru.

Tada sukursime formą dokumentų sąrašui: Kvito sąskaita ir sukursime formos atributą FilterBy Product, kurį naudosime kaip formos parametrą ją atidarydami. Dabar atidarykime pagrindinio formos sąrašo atributo savybių paletę. Nustatykite ArbitraryRequest vėliavėlę ir sąrašo nustatymų eilutėje spustelėkite Atviras.

Lauke Prašymas įveskite šį užklausos tekstą:
Kodas 1C v 8.2 UP SELECT
Dokumento gavimo sąskaita faktūra. Numeris,
Dokumento gavimo sąskaita faktūra.Data
NUO
Document.ReceiptInvoice AS DocumentReceiptInvoice
KUR
Dokumento gavimo sąskaita Invoice.Products.Product = &Produktas

Užklausoje naudojame parametrą Prekė, kuri gaus nuorodą į dabartinę prekių sąrašo eilutę, esančią sąskaitos faktūros sąrašo formos parametre FilterBy Item. Norėdami tai padaryti, „OnOpen“ sąrašo formos įvykių tvarkyklėje parašysime kodą, skirtą produkto užklausos parametro reikšmei nustatyti:
Kodas 1C v 8.2 UP
&OnClient
Atidarymo procedūra (gedimas)

List.Parameters.SetParameterValue("Produktas", FiltrasByProduktas);

Procedūros pabaiga

Čia Sąrašas.Parinktys yra atributo List dinaminio sąrašo užklausos parametrų sąrašas. Produkto parametro reikšmė nustatoma lygi FilterByProduct formos parametro reikšmei.

Dėl to prekių sąrašo formoje paspaudę mygtuką Sąskaitų gavimas, gausime tik tų sąskaitų faktūrų sąrašą, kuriose yra šiuo metu prekių sąraše pasirinkta prekė.

Informacija paimta iš svetainės

Yra keletas būdų, kaip atidaryti sąrašo formą su tam tikru iš anksto nustatytu pasirinkimu. Pažvelkime į juos:

  1. Pirmas būdas yra tai, kad atidarydami formą galite nustatyti formos parametrą Pasirinkimas ir atidarykite sąrašo formą naudodami šį parametrą. Parametras Pasirinkimas reprezentuoja struktūrą. Elementų pavadinimai atitinka laukų, pagal kuriuos atliekamas pasirinkimas, pavadinimus, o reikšmėse yra reikšmės
    pasirinkimas. Tai dinaminio sąrašo valdomos formos plėtinio parinktis. Tai yra, jis egzistuoja formoms, kurių pagrindinis atributas yra tipo atributas Dinaminis sąrašas, pvz., sąrašo formos ir atrankos formos.

Atidarius formą, pasirinkimas bus atliktas pagal nurodytą lauką. Pavyzdžiui, kitame pavyzdyje atidaromas sąskaitų faktūrų sąrašas, pasirinkus lauką Sandorio šalis, lygią „OJSC ragai ir kanopos“.

Pasirinkimo vertė = nauja struktūra ("Sandorio šalis" , UAB „Ragai ir kanopos“);
Pasirinkimo parinktys= Nauja struktūra("Pasirinkimas", Atrankos vertė);
OpenForm („Dokumentas. Kvito sąskaita faktūra. Sąrašo forma“, Pasirinkimo parinktys);

2. Galite atidaryti sąrašo formą be parametrų:

OpenForm („Dokumentas. Kvito sąskaita faktūra. Sąrašo forma“);

Ir tada sąskaitų faktūrų sąrašo formos įvykių tvarkyklėje Kai CreatedOnServer parašykite kodą, kuris sukuria pasirinkimą dinaminiame sąraše, kuris yra pagrindinis formos atributas:

&Serveryje
Procedūra Kai CreatedOnServer(atsisakymas, Standartinis apdorojimas)
Pasirinkimo elementas = sąrašas. Pasirinkimas. Elementai. Pridėti (tipas
(„DataCompositionSelectionElement“);
Pasirinkimo elementas .LeftValue = Nauja Duomenų išdėstymo laukas(„Dokumento suma“);
Pasirinkimo elementas. Palyginimo vaizdas = Palyginimas ViewData Layout. Daugiau;
Pasirinkimo elementas. naudojimas = tiesa;
Pasirinkimo elementas. RightValue = 150000;
Procedūros pabaiga

Šio metodo privalumai yra tokie ViewComparison pasirinkimą galima nustatyti ne tik Lygu, kaip ir pirmuoju atveju, ir Daugiau, Mažiau ir taip toliau.

Tačiau šis metodas turi ir labai reikšmingą trūkumą: su šiuo pasirinkimu forma visada atsidarys. Kad ir iš kur jai būtų skambinama. Todėl ši forma neturėtų būti nurodyta kaip pagrindinė. Ir jei vis dėlto jis yra pagrindinis, tada prieš diegiant pasirinkimą būtina pateikti tam tikrą analizę, iš kur atsidaro ši forma. Pavyzdžiui, analizuojant formos parametrus.

3. Galiausiai pasirinkimo sąlyga gali būti įtraukta į pasirinktinį prašymą, kuri parenka duomenis dinaminiam sąrašui. Pavyzdžiui, turime atidaryti sąskaitų faktūrų, kuriose yra prekių sąraše pažymėta prekė, sąrašą.

Norėdami tai padaryti, elementų sąrašo pavidalu sukurkite komandą ir atitinkamą mygtuką Eksploatacinės medžiagosSąskaitos faktūros

Užpildykime šios komandos vykdymo tvarkyklę taip:

&OnClient
Procedūra Eksploatacinės medžiagosSąskaitos faktūros(Komanda)
ListForm = GetForm("Document.Invoice.ListForm");
Sąrašo forma. FilterByProduct = Elementai . Sąrašas . CurrentRow ;
Sąrašo forma. Atviras();
Procedūros pabaiga

Šioje tvarkyklėje gauname sąskaitų faktūrų sąrašo formą ir perduodame į formos parametrą Filtruoti pagal produktą nuorodą į dabartinį elementą prekių sąraše ir atidarykite formą su šiuo parametru.
Tada sukursime dokumentų sąrašo formą Pardavimo sąskaita faktūra ir sukurti formos atributus Filtruoti pagal produktą, kurį atidarydami naudosime kaip formos parametrą. Dabar atidarykime pagrindinių formos atributų ypatybių paletę Sąrašas. Pakelkime vėliavą CustomRequest ir į
linija Sąrašo nustatymas paspauskime Atviras.

Lauke PrašymasĮveskime šį užklausos tekstą:

PASIRINKTI

Dokumento gavimo sąskaita faktūra. Numeris,
Dokumento gavimo sąskaita faktūra.Data
NUO
Document.ReceiptInvoice AS DocumentReceiptInvoice
KUR
Dokumento gavimo sąskaita Invoice.Products.Product = &Produktas

Prašyme naudojame parametrą Produktas, į kurią bus siunčiama nuoroda į dabartinę prekių sąrašo eilutę, esančią sąskaitų faktūrų sąrašo formos atribute Filtruoti pagal produktą. Norėdami tai padaryti, sąrašo formos įvykių tvarkytuvėje Atidarant Parašykime kodą produkto užklausos parametro reikšmei nustatyti:

&OnClient
Atidarymo procedūra (gedimas)
Sąrašas . Galimybės . SetParameterValue(„Produktas“, „FilterByProduct“);
Procedūros pabaiga

Čia Sąrašas.Parinktys— tai atributo List dinaminio sąrašo užklausos parametrų sąrašas. Parametrų reikšmė Produktas nustatytas lygus formos parametro reikšmei Filtruoti pagal produktą. Dėl to vienu mygtuko paspaudimu Sąskaitos faktūros prekių sąrašo pavidalu gausime tik tų sąskaitų faktūrų sąrašą, kuriose yra šiuo metu prekių sąraše pasirinkta prekė.

— tai atributo List dinaminio sąrašo užklausos parametrų sąrašas.

Kaip atidaryti sąrašo formą su tam tikru pasirinkimu?

Yra keletas būdų, kaip atidaryti sąrašo formą su tam tikru iš anksto nustatytu pasirinkimu. Pažvelkime į juos eilės tvarka:

1. Pirmasis būdas yra toks, kad atidarant formą galima nustatyti parametrą Selection form, o su šiuo parametru atidaryti sąrašo formą. Parametras Selection nurodo struktūrą. Elementų pavadinimai atitinka laukų, pagal kuriuos atliekamas pasirinkimas, pavadinimus, o reikšmėse yra pasirinkimo reikšmės. Tai dinaminio sąrašo valdomos formos plėtinio parinktis. Tai yra, jis egzistuoja formoms, kurių pagrindinis atributas yra tipo atributas Dinaminis sąrašas, pvz., sąrašo formos ir atrankos formos.

Atidarius formą, pasirinkimas bus atliktas pagal nurodytą lauką. Pavyzdžiui, šiame pavyzdyje atidaromas sąskaitų faktūrų sąrašas, pasirinkus lauką Skaičius, lygų 333.

Pasirinkimo reikšmė = nauja struktūra ("Skaičius", "333");

SelectionParameters = Nauja struktūra("Pasirinkimas", SelectionValue);

OpenForm("Dokumentas. Kvito sąskaita faktūra. Sąrašo forma", Pasirinkimo parinktys);

2. Galite atidaryti sąrašo formą be parametrų:

OpenForm ("Document.Invoice.ListForm");

Ir tada sąskaitų faktūrų sąrašo formos įvykių tvarkyklėje Kai CreatedOnServer parašykite kodą, kuris sukuria pasirinkimą dinaminiame sąraše, kuris yra pagrindinis formos atributas:

&Serveryje

Procedūra, kai sukuriama serveryje (gedimas, standartinis apdorojimas)

Selection Element = List.Selection.Elements.Add(Type("Duomenų sudėties pasirinkimo elementas"));

SelectionElement.LeftValue = NewDataCompositionField("Skaičius");

SelectionElement.ComparisonView = DataCompositionComparisonView.More;

SelectionElement.Use = True;

SelectionElement.DisplayMode = ElementDisplayModeDataCompositionSettings.Nepasiekiama;

SelectionElement.RightValue = "000000001";

Procedūros pabaiga

Šio metodo privalumai yra tai, kad pasirinkimui Palyginimo tipą galima nustatyti ne tik Lygus, kaip pirmuoju atveju, bet ir Daugiau, Mažiau ir kt.

Tačiau šis metodas turi ir labai reikšmingą trūkumą: su šiuo pasirinkimu forma visada atsidarys. Kad ir iš kur jai būtų skambinama. Todėl ši forma neturėtų būti nurodyta kaip pagrindinė. Ir jei vis dėlto jis yra pagrindinis, tada prieš diegiant pasirinkimą būtina pateikti tam tikrą analizę, iš kur atsidaro ši forma. Pavyzdžiui, analizuojant formos parametrus.

3. Galiausiai pasirinkimo sąlyga gali būti įtraukta į pasirinktinę užklausą, kuri parenka duomenis dinaminiam sąrašui. Pavyzdžiui, turime atidaryti sąskaitų faktūrų, kuriose yra prekių sąraše pažymėta prekė, sąrašą.

Norėdami tai padaryti, elementų sąrašo pavidalu sukurkite komandą ir atitinkamą mygtuką Sąskaitų faktūrų gavimas.

Užpildykime šios komandos vykdymo tvarkyklę taip:

&OnClient

Procedūros kvitaiSąskaitos faktūros (komanda)

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

ListForm.FilterByProduct = Elements.List.CurrentRow;

ListForm.Open();

Procedūros pabaiga

Šioje tvarkyklėje gauname sąskaitų faktūrų sąrašo formą ir perduodame nuorodą į dabartinę prekių sąrašo prekę į formos parametrą FilterByProduct ir atidarome formą su šiuo parametru.

Tada sukursime dokumentų sąrašo formą Pirkimo sąskaita faktūra ir sukurti formos atributą FilterByProduct, kurį atidarydami naudosime kaip formos parametrą. Dabar atidarykime pagrindinio formos sąrašo atributo savybių paletę. Pakelkime vėliavą CustomRequest ir eilėje Sąrašo nustatymas spustelėkite Atidaryti.

Lauke Prašymas įveskite šį užklausos tekstą:

PASIRINKTI

Dokumento gavimo sąskaita faktūra. Numeris,

Dokumento gavimo sąskaita faktūra.Data

NUO

Document.ReceiptInvoice AS DocumentReceiptInvoice

KUR

Dokumento gavimo sąskaita Invoice.Products.Product = &Produktas

Užklausoje naudojame parametrą Prekė, kuri gaus nuorodą į dabartinę prekių sąrašo eilutę, esančią sąskaitos faktūros sąrašo formos parametre FilterBy Item. Norėdami tai padaryti, „OnOpen“ sąrašo formos įvykių tvarkyklėje parašysime kodą, skirtą produkto užklausos parametro reikšmei nustatyti:

&OnClient

Atidarymo procedūra (gedimas)

List.Parameters.SetParameterValue("Produktas", FiltrasByProduktas);

Procedūros pabaiga

Čia Sąrašas.Parinktys yra atributo List dinaminio sąrašo užklausos parametrų sąrašas. Produkto parametro reikšmė nustatoma lygi FilterByProduct formos parametro reikšmei.

Dėl to vienu mygtuko paspaudimu Sąskaitų faktūrų gavimas prekių sąrašo pavidalu gausime tik tų sąskaitų faktūrų sąrašą, kuriose yra šiuo metu prekių sąraše pasirinkta prekė.

3-osios parinkties demonstracinis pavyzdys yra 1CITS/EXE/FAQ/OpenFormWithSelection.dt kataloge. Pavyzdys atliktas naudojant 8.2.9.356 platformos versiją.

Tam, kad atidaryti atrankos formą su pasirinkimu 1s 8.2(įprastos formos), turime atlikti kai kuriuos veiksmus. Mes jį gausime pirmieji. Po to nustatysime pasirinkimą ir atidarysime jį programiškai, čia yra kodo pavyzdys:

Pasirinkimas formoje 1C 8.2 įvesties lauke su keliomis reikšmėmis

Aukščiau pateiktame pavyzdyje mes apžvelgėme kaip nustatyti pasirinkimą atrankos formoje pagal konkrečią vertę. Dabar pažvelkime į situaciją, kai reikia pakeisti kelias reikšmes, pavyzdžiui, tai gali būti masyvas arba iškeltas iš užklausos rezultato. Tai pasirinkimas 1c įvesties lauke su daugybe reikšmių.

Pirmiausia gauname pasirinkimo formą, parametruose perduodame „Elementą“ (savininką), nustatome pasirinkimo režimo vėliavėlę. Tada sukuriame reikšmių sąrašą ir masyvą, pažymime, kad kaip pasirinkimas nustatant palyginimo tipą sąraše, objektas gali būti tik su tipu ListValues. Pridedame elementus į masyvą, tada įkeliame šį masyvą į reikšmių sąrašą, kurį vėliau nustatome pasirinkdami. Taip pat nepamirškite įjungti vėliavėlės, kad galėtumėte naudoti šį pasirinkimą, ir nustatyti palyginimo tipą.

Pasirinkimo nustatymas formos įvesties lauke 1C 8.3, Pasirinkimo pradžia

Dabar pasvarstykime pasirinkimas valdomos formos įvesties lauke 1C 8.3. Formoje suraskime mus dominantį elementą, kuriame nustatysime pasirinkimą, mūsų atveju tai yra laukas „Organization“. Randame įvykį „Atrankos pradžia“, paspaudžiame padidinamąjį stiklą ir atsiduriame procedūroje. Matome parametrą Selection Data; šis parametras yra ValueList tipo. Kad pasirinktume tik reikiamus elementus, turime užpildyti reikšmių sąrašą. Elementus galime pasirinkti tik serveryje, todėl sukuriame procedūrą su &OnServer kompiliavimo direktyva. Atlikdami šią procedūrą, užpildykite pasirinkimo duomenis.