1c v parametroch výberu zadajte názov skupiny. Nastavte možnosti výberu a prepojenia možností výberu pre objekty metadát. ItemTypeDescription = New TypeDescription (Array)

Za účelom otvorenie výberového formulára s výberom za 1s 8.2(bežné formy), musíme vykonať nejaké akcie. Najprv to dostaneme. Potom nastavíme výber a otvoríme ho programovo, tu je príklad kódu:

Výber na formulári vo vstupnom poli 1C 8.2 s niekoľkými hodnotami

Vo vyššie uvedenom príklade sme uvažovali ako nastaviť výber na výberovom formulári podľa konkrétnej hodnoty. Teraz uvažujme o situácii, keď potrebujete nahradiť niekoľko hodnôt, napríklad to môže byť pole aj uvoľnenie z výsledku dotazu. Toto je výber vo vstupnom poli 1s s viacerými významami.

Najprv získame výberový formulár, v parametroch prejdeme "Prvok" (vlastník), nastavíme príznak režimu výberu. Potom vytvoríme zoznam hodnôt a pole, všimneme si, že ako výber, keď je nastavený typ porovnania v zozname, môže existovať iba objekt s typom Zoznam hodnôt. Do poľa pridáme prvky, toto pole potom načítame do Zoznamu hodnôt, ktorý vo výsledku nastavíme vo výbere. Nezabudnite tiež povoliť príznak pre používanie tohto výberu a nastaviť typ porovnania.

Nastavenie výberu vo vstupnom poli vo formulári v 1C 8.3, udalosť StartChoice

Teraz zvážte výber vo vstupnom poli zapnutý riadená forma v 1C 8.3. Nájdite vo formulári prvok, ktorý nás zaujíma, v ktorom nastavíme výber, v našom prípade je to pole "Organizácia". Nájdeme udalosť „StartChoice“, klikneme na lupu a ocitneme sa v postupe. Vidíme parameter ChoiceData, tento parameter je typu ValueList. Aby sme výber obmedzili na potrebné prvky, musíme vyplniť Zoznam hodnôt. Elementy môžeme vyberať len na serveri, preto vytvoríme procedúru s direktívou kompilácie &AtServer. V tomto postupe vyplníme Údaje o výbere.

/
Vývojári /
Kódové konvencie

Nastavenie parametrov výberu a vzťahov medzi parametrami výberu pre objekty metadát

1. Spravidla by také obmedzenia obchodnej logiky, ako sú obmedzenia výberu, mali byť rovnaké pre všetky formuláre, v ktorých sa ten alebo ten objekt upravuje. Preto sa odporúča nastaviť parametre výberu a prepojenie parametrov výberu vo vlastnostiach objektov metadát - v detailoch adresárov, dokumentov a pod.

2. Môžu však nastať prípady, keď obmedzenia výberu môžu závisieť od konkrétneho pracovného scenára. V takýchto prípadoch môžu byť parametre výberu špecifikované lokálne, v špecifickej forme.

Konfigurácia obsahuje napr

  • adresár Zamestnanci, ktorý obsahuje podrobnosti Organizácia A Typ Zamestnanec(vyčíslenie s hodnotami Základné/brigádnik);
  • dokument ObjednávkaOvstupe, ktorá má rekvizity Organizácia A zamestnanec; zatiaľ čo pre rekvizity zamestnanec dokument ObjednávkaOvstupe výberový parameter vzťah množina Výber Organizácia s rekvizitami Organizácia.

Vyžaduje sa implementácia možnosti výberu iba hlavných zamestnancov v závislosti od hodnoty funkčnej možnosti Vyberte možnosť Iba od kmeňových zamestnancov. Na to je potrebné

  • vo forme dokumentu ObjednávkaOvstupe implementovať ďalšie formulárové rekvizity KindsEmployees,
  • potom pre pole formulára zamestnanec možno vytvoriť odkaz na výberový parameter Selection.TypeEmployee s tvarovými rekvizitami KindsEmployees,
  • kým sa forma podoprie KindsEmployees sa vypĺňa na základe analýzy funkčnej možnosti.

(Počas prípravy rekvizít zamestnanec dokument ObjednávkaOvstupe odkaz na výberový parameter Selection.TypeEmployee neexistuje žiadna možnosť, pretože rekvizity Typ Zamestnanec v dokumente ObjednávkaOvstupe neexistuje.)

Potom nastavte pripojenie pre parameter Výber Organizácia vo vlastnostiach rekvizít zamestnanec dokument ObjednávkaOvstupe a odkazy pre parameter Selection.TypeEmployee v poli formulára dokumentu ObjednávkaOvstupe povedie k tomu, že v 1C: Podnik obe prepojenia parametrov výberu budú fungovať. Pri výbere zamestnanca formou akceptačného príkazu bude teda výber v zozname zamestnancov nastavený jednak organizáciou vyplnenou v doklade a jednak typom zamestnanca, ktorý bude určený na základe funkčnej možnosti.

Dobrý deň.

Dnes si povieme, ako programovo otvárať vybrané formuláre v novom spravovanom rozhraní.

Predtým sme v „bežnej aplikácii“ písali takto:

forma = Directory.nomenclature.GetSelectionForm();

Výsledok voľby = form.openModal();

Medzi týmito príkazmi by sme mohli meniť vlastnosti formulára, napríklad nastaviť výber. Konkrétnu formu by sme mohli špecifikovať podľa názvu. Dalo by sa to zmeniť vzhľad, odkazujúce na vlastnosti prvku vo formulári ich názvom oddeleným bodkou (form.Button1.Visibility = False;)

Teraz máme spravované rozhranie a tu je všetko inak. Prepadnutie je v rozdelení kódu na serverovú časť a klientsku časť. K objektom a ich metadátam môžeme pristupovať iba na serveri a formuláre musíme otvárať na klientovi.

Tak poďme na to.

1. Najjednoduchší prípad je, keď nepotrebujeme spravovať výber (nastaviť výbery, odovzdať parametre do výberového formulára, ktorý sa otvorí).

Keďže formuláre je možné otvárať iba na klientovi, bude to časť kódu klienta. Použijeme funkciu EnterValue(<Значение>, <Подсказка>, <Тип>) . Z jej popisu je vlastne všetko jasné. Vracia príznak, či výber vykonal používateľ, v prvom parametri odovzdáme kontajner, v ktorom sa vráti hodnota výberu, v druhom texte, ktorý sa zobrazí v nadpise výberového okna, v tretie pole typov.

Tu je príklad použitia:

Variabilný výber TMC;

Typy polí = Nové pole;

ItemTypeDescription = New TypeDescription(Array);

Ak ZadajteHodnotu(Vybratý tovar a materiály, "Vybrať položku", Popis druhov tovaru a materiálov) Potom

//Spracovanie vybranej hodnoty

Koniec Ak;

Dodám, že ak našej premennej kontajnera pred výberom priradíme hodnotu, bude to predvolená hodnota. V tomto prípade nemôžete vytvoriť pole typov, typ sa prevezme z hodnoty v kontajneri.

2. Niekedy pred výberom hodnoty musíme nastaviť niektoré filtre a parametre výberu. Napríklad musíme vybrať dohodu protistrany. Prvý spôsob nám otvorí všetky zmluvy, ale musíme si vybrať podľa vlastníka.

Existujú dva spôsoby otvárania formulárov: OpenForm A OpenFormModal. Pri prvom spôsobe otvoríme formulár a kus kódu, z ktorého sme formulár otvorili, bude ďalej bežať bez prijatia výsledku výberu. Výsledok výberu v závislosti od spôsobu volania bude umiestnený buď do vstupného poľa, alebo prijatý v preddefinovanej procedúre "Spracovanie voľby".

V našom prípade musíme zvolenú hodnotu dostať do nejakej premennej a pokračovať v spracovaní s prihliadnutím na zvolenú hodnotu bez toho, aby sme preniesli kontrolu na iné procedúry. Preto nám to vyhovuje OpenFormModal.

Okamžite urobím rezerváciu, že toto je zlý spôsob pre webové rozhranie, pretože modálne okná sa otvárajú v novom okne prehliadača, ktoré je normálne zablokované. Ale ak je používateľovi vopred vysvetlené, čo je čo, potom si myslím, že sa s týmto problémom vyrovná))

Pozrime sa teda na popis postupu, má 4 parametre. V prvom zadáme reťazec s úplnou cestou k formuláru "Adresár. Zmluvy protistrán. Formulár výberu". V druhej špecifikujeme parametre výberu, o nich nižšie. V treťom - vlastník, ide o formulár alebo výberové pole, ktoré dostane výsledok výberu, nevypĺňame. Štvrtý parameter sa v našom prípade tiež nepoužíva.

Pre jednoduchý výber nám teda bude vyhovovať rad:

&AtClient

Postup Príkaz1 (Príkaz)

cut = OpenFormModally("Adresár.Zmluvy protistrán.Formulár výberu");

EndProcedure

Toto je však úplná analógia metódy č. 1 a uvidíme formulár na výber všetkých zmlúv bez výberu vlastníka. Tie. môžeme to urobiť iba vtedy, ak chceme zadať názov formulára výberu.

Na nastavenie výberu nám pomôže druhý parameter.

Druhý parameter je typu "Štruktúra". Ako prvky štruktúry môžete zadať parametre formulára pridané na záložke "parametre" formulára výberu. Ich manipulácia by mala byť popísaná v postupe OnCreateOnServer v module výberového formulára. To nie je pre nás dobré, pretože. musíte upraviť konfiguráciu. Výberovú štruktúru môžete prejsť aj pomocou tlačidla "výber" v štruktúre parametrov. Potom sa všetky polia zo štruktúry výberu použijú pri výbere zoznamu prvkov a nie sú pre používateľa dostupné ani na prezeranie, ani na úpravu.

V mojom príklade som v spracovaní nakreslil výberové pole odkazujúce na rekvizitu formulára spracovania "dodávateľ" s typom údajov " DirectoryLink.Contractors". a napísal nasledujúci kus kódu:

&AtClient

Postup Príkaz1 (Príkaz)

Výbery = Nová štruktúra("Vlastník", Protistrana);

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

cut = OpenFormModally("Adresár.Dohody protistrán.Formulár výberu",Parametre výberu);

EndProcedure

To zvyčajne postačuje na vyriešenie väčšiny problémov a nevyžaduje zásah do konfigurácie. Vo výberovom formulári v procedúre "OnCreateOnServer" sa však váš výber môže posrať. Preto si pred použitím tejto metódy prečítajte tento postup vo výberovom formulári, ktorý otvoríte. Kriví vývojári si tam môžu svoj výber jednoducho nastaviť „v predvolenom nastavení“, pričom zabudnú skontrolovať, či výber prešiel v parametroch otvárania.

To je na dnes všetko, ďakujem za pozornosť.




Hore