Apie virškinamojo trakto ligas

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 Vertybių sąrašą. Elementus galime pasirinkti tik serveryje, todėl sukuriame procedūrą su &OnServer kompiliavimo direktyva. Atlikdami šią procedūrą, užpildykite pasirinkimo duomenis.

/
Kūrėjai /
Kodavimo sutartys

Metaduomenų objektų pasirinkimo parinkčių ir pasirinkimo parinkčių asociacijų nustatymas

1. Paprastai verslo logikos apribojimai, tokie kaip atrankos apribojimai, turi būti vienodi visoms formoms, kuriose redaguojamas konkretus objektas. Todėl atrankos parametrus ir ryšius tarp pasirinkimo parametrų rekomenduojama nustatyti metaduomenų objektų savybėse – katalogų, dokumentų detalėse ir pan.

2. Tačiau gali būti atvejų, kai atrankos apribojimai gali priklausyti nuo konkretaus veikimo scenarijaus. Tokiais atvejais atrankos parametrai gali būti nurodyti lokaliai, tam tikra forma.

Pavyzdžiui, konfigūracijoje yra

  • katalogas Darbuotojai, kuriame yra išsami informacija Organizacija Ir Darbuotojo tipas(sąrašas su reikšmėmis Pagrindinis/Ne visą darbo dieną);
  • dokumentas Priėmimo tvarka, kuriame yra rekvizitai Organizacija Ir Darbuotojas; tuo pačiu ir rekvizitui Darbuotojas dokumentas Priėmimo tvarka nurodytas pasirinkimo parametro ryšys Atranka.Organizacija su rekvizitais Organizacija.

Būtina įdiegti galimybę pasirinkti tik pagrindinius darbuotojus, atsižvelgiant į funkcinės galimybės vertę SelectOnlyFrom EmployeesBasics. Tam būtina

  • dokumento pavidalu Priėmimo tvarkaįdiegti papildomus formos atributus Darbuotojų tipai,
  • tada formos laukui Darbuotojas galima sukurti pasirinkimo parametro nuorodą Atranka. Darbuotojo tipas su formos detalėmis Darbuotojų tipai,
  • šiuo atveju formos duomenys Darbuotojų tipai pildomas remiantis funkcinio varianto analize.

(Tuo pačiu metu nustatykite rekvizitus Darbuotojas dokumentas Priėmimo tvarka parametro pasirinkimo nuoroda Atranka. Darbuotojo tipas nėra galimybės, nes rekvizitai Darbuotojo tipas dokumente Priėmimo tvarka neegzistuoja.)

Tada nustatykite parametro ryšį Atranka.Organizacija rekvizito savybėse Darbuotojas dokumentas Priėmimo tvarka ir parametro jungtys Atranka. Darbuotojo tipas dokumento formos lauke Priėmimo tvarka lems tai, kad režimu 1C: Įmonės Veiks abi pasirinkimo parametrų nuorodos. Taigi, renkantis darbuotoją įsakymo į darbą formoje, atranką darbuotojų sąraše lems tiek dokumente užpildyta organizacija, tiek darbuotojo tipas, kuris bus nustatomas pagal funkcinį variantą.

Laba diena.

Šiandien kalbėsime apie tai, kaip programiškai atidaryti pasirinkimo formas naujoje valdomoje sąsajoje.

Anksčiau „įprastoje programoje“ rašėme taip:

forma = Directory.nomenclature.GetSelectionForm();

resultSelection = form.openModalNO();

Tarp šių operatorių galime pakeisti formos ypatybes, pavyzdžiui, nustatyti pasirinkimą. Konkrečią formą galėtume nurodyti pavadinimu. Jie galėtų pakeisti jo išvaizdą, pasiekdami formos elementų ypatybes pagal jų pavadinimą per tašką (form.Button1.Visibility = False;)

Dabar turime valdomą sąsają ir čia viskas kitaip. Problema kyla dalijant kodą į serverio ir kliento dalis. Objektus ir jų metaduomenis galime pasiekti tik serveryje, o formas turime atidaryti kliente.

Taigi pradėkime.

1. Paprasčiausias atvejis, kai mums nereikia tvarkyti atrankos (nustatyti pasirinkimus, perduoti parametrus į atidarytą pasirinkimo formą).

Kadangi formas galima atidaryti tik kliente, tai bus kliento pusės kodo dalis. Mes naudosime funkciją EnterValue(<Значение>, <Подсказка>, <Тип>) . Tiesą sakant, viskas aišku iš jos aprašymo. Grąžina vėliavėlę, ar vartotojas pasirinko pirmajame parametre perduodame konteinerį, į kurį bus grąžinta pasirinkimo reikšmė, antrame tekste, kuris bus rodomas pasirinkimo lango pavadinime, trečiame masyve; tipai.

Štai naudojimo pavyzdys:

Kintamasis SelectTMC;

ArrayTypes = naujas masyvas;

DescriptionofTypesTMC = NaujasTipų aprašymas(Masyvas);

Jei EnterValue (Pasirinkite atsargas, "Pasirinkite prekę", Atsargų tipų aprašymas) Tada

//Apdorojama pasirinkta reikšmė

endIf;

Pridursiu, kad jei prieš pasirinkdami sudėtinio rodinio kintamąjį priskirsime kokią nors reikšmę, ji bus numatytoji reikšmė. Tokiu atveju jums nereikia formuoti tipų masyvo; tipas bus paimtas iš konteineryje esančios reikšmės.

2. Kartais, prieš pasirenkant vertę, turime nustatyti kai kuriuos pasirinkimus ir pasirinkimo parametrus. Pavyzdžiui, turime pasirinkti sandorio šalies sutartį. Pirmuoju būdu visi dokumentai bus atidaryti už mus, bet turime pasirinkti pagal savininką.

Yra du būdai atidaryti formas: OpenForm Ir OpenFormModal. Pirmuoju būdu atidarysime formą, o kodo dalis, iš kurios atidarėme formą, bus vykdoma toliau, negaudama pasirinkimo rezultato. Pasirinkimo rezultatas, priklausomai nuo iškvietimo metodo, bus patalpintas arba įvesties lauke, arba gautas pagal iš anksto nustatytą procedūrą „Pasirinkimo apdorojimas“.

Mūsų atveju mes turime gauti pasirinktą reikšmę į tam tikrą kintamąjį ir tęsti apdorojimą atsižvelgdami į pasirinktą reikšmę, neperkeldami valdymo į kitas procedūras. Todėl jis mums tiks OpenFormModal.

Iš karto padarysiu išlygą, kad tai blogas būdas žiniatinklio sąsajai, nes... Modaliniai langai atsidaro naujame naršyklės lange, kuris paprastai yra blokuojamas. Bet jei iš anksto paaiškinsite vartotojui, kas yra kas, manau, kad jis susidoros su šia problema))

Taigi, pažiūrėkime į procedūros aprašymą, jis turi 4 parametrus. Pirmajame nurodome eilutę su visu keliu į formą "Katalogas. Rangovų sutartys. Atrankos forma". Antrajame nurodome pasirinkimo parametrus, daugiau apie juos žemiau. Trečiame - savininkas, tai yra forma arba pasirinkimo laukas, į kurį bus gautas atrankos rezultatas, mes jo nepildome. Ketvirtasis parametras mūsų atveju taip pat nenaudojamas.

Taigi paprastam pasirinkimui tiks ši eilutė:

&OnClient

Procedūros komanda 1 (komanda)

res = OpenFormModal("Katalogas. Rangovų sutartys. Atrankos forma");

Procedūros pabaiga

Bet tai yra visiškas metodo Nr. 1 analogas, ir mes pamatysime visų sutarčių atrankos formą be savininko pasirinkimo. Tie. Tai galima padaryti tik tuo atveju, jei norime nurodyti atrankos formos pavadinimą.

Norėdami nustatyti pasirinkimą, mums padės antrasis parametras.

Antrasis parametras yra „Struktūra“ tipo. Kaip struktūros elementus galite nurodyti formos parametrus, pridėtus pasirinkimo formos skirtuke „parametrai“. Jų apdorojimas turėtų būti aprašytas procedūroje Kai CreatedOnServer atrankos formos modulyje. Mums tai nėra gerai, nes... Man reikia pakeisti konfigūraciją. Taip pat galite perduoti pasirinkimo struktūrą parametrų struktūroje naudodami raktą „selection“. Tada visi pasirinkimo struktūros laukai bus naudojami pasirenkant elementų sąrašą ir vartotojui nebus prieinami nei peržiūrėti, nei keisti.

Savo pavyzdyje apdorojant nubraižiau pasirinkimo lauką, kuris nurodo apdorojimo formos atributą "santarvės šalis" su duomenų tipu " DirectoryLink.Darbo šalys“. ir parašė šią kodo dalį:

&OnClient

Procedūros komanda 1 (komanda)

Pasirinkimai = nauja struktūra ("Savininkas", sandorio šalis);

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

res = OpenFormModal("Katalogas. Rangovų sutartys. Atrankos forma", atrankos parametrai);

Procedūros pabaiga

Paprastai to pakanka daugeliui problemų išspręsti ir nereikalauja jokios konfigūracijos įsikišimo. Tačiau pasirinkimo formoje „When CreatedOnServer“ procedūroje jūsų pasirinkimas gali būti prarastas. Todėl prieš naudodami šį metodą peržiūrėkite šią procedūrą atidarytoje atrankos formoje. Kreivai kūrėjai ten gali nesunkiai nustatyti savo pasirinkimą „pagal nutylėjimą“, pamiršdami patikrinti, ar pasirinkimas yra perduotas atidarymo parametruose.

Tai viskas šiandien, ačiū už dėmesį.



Jei pastebėjote klaidą, pasirinkite teksto dalį ir paspauskite Ctrl+Enter
DALINTIS: