Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Zanimljiv
  • 1s 8 uključiti kontrolirani oblik. Radio gumbi, obična aplikacija, upravljani obrasci

1s 8 uključiti kontrolirani oblik. Radio gumbi, obična aplikacija, upravljani obrasci

1. Polje za unos
2. Potvrdni okvir
3. Prebacite

Polje za unos

U pravilu je polje za unos povezano s atributom objekta i odražava njegove podatke. Ovo je možda jedan od najčešćih elemenata, ima nekoliko načina za odabir vrijednosti:

Odabir s popisa (način odabira popisa)

Odabir iz drugog obrasca (gumb Odaberi)

Kontrolne tipke

Implementacija gornjih primjera ne zahtijeva značajne napore od strane programera. na primjer, za način popisa potrebno je popuniti popis elementa s vrijednostima; za odabir iz drugog obrasca dovoljno je jednostavno povezati kontrolni element s podacima imenika. Ali za kontrolne gumbe morat ćete napisati više koda za obradu klikova na svaki gumb, iako neće biti velik:

Procedura pvOdabir nomenklatureRegulacija (element, smjer, standardna obrada)
//Odaberite podatke za polje za unos
// u ovom slučaju imenik Nomenklatura
Zahtjev = Novi zahtjev;
Zahtjev.Tekst=
„IZABIRAJ
| Nomenklatura. Veza kao proizvod
|OD
| Imenik.Nomenklatura AS Nomenklatura
|NARUČI OD
| Nomenklatura.Šifra";
TZNomenclature = Request.Run().Upload();

//potražite trenutni element direktorija naveden u polju za unos
CurrentElement = TZNomenclature.Find(Element.value);

Ako je TechElement = Nedefinirano Onda
// ako element nije pronađen tada postavite broj indeksa
// izvan tablice vrijednosti, jer prvi element u
// tablica vrijednosti ima indeks 0
Tehnički indeks = -1;
Inače
// ako je element pronađen dobivamo njegov indeks
TechIndex = TZNomenclature.Index(TechElement);
završi ako;

// izračunati novi indeks ovisno o pritisku gumba
// minus ispred varijable Smjer se postavlja tako da kada
// klik na gornju strelicu pokazao je element iznad nje
// i stoga s manjim indeksom
NewIndex = TechIndex-Smjer;

// dobivanje broja elemenata u direktoriju
// oduzeti jedan jer sve kolekcije u 8.1 počinju od 0
BrojElemenata = TZNomenclature.Quantity()-1;

Ako NovIndex< 0 Или НовИндекс >Broj elemenata Zatim
// ako je kod promjene indeks izvan tablice vrijednosti
// tj. njegov broj je tada veći od najvećeg indeksa ili manji od 0
// ne mijenjajte vrijednost i obavijestite korisnika o tome
Obavijesti("Dosegli ste ograničenje imenika");
Inače
// dodijeli novu vrijednost, "Proizvod" je naziv stupca tablice vrijednosti
Element.value = TZNomenclature.Get(NewIndex).Product;
završi ako;

Kraj postupka

Potvrdni okvir

U većini programa potvrdni okvir služi za prikaz dva stanja: označeno, neoznačeno. U 1c, potvrdni okvir ima tri stanja; u trećem stanju, potvrdni okvir je prikazan kao označen i istovremeno osjenčan. Tri stanja dostupna su samo ako su podaci u potvrdnom okviru broj, a stanja imaju sljedeća značenja:

Sklopka

Prekidač se koristi za odabir jedne vrijednosti od malog broja mogućih (po mogućnosti ne više od pet), a vrijednosti se ne mogu kombinirati. Na primjer: pogodno za odabir spola osobe. Drugi primjer: recimo da tvrtka daje jedan od 3 popusta na proizvod, a popusti se ne zbrajaju:

U ovom slučaju, pogodnost korištenja radio gumba može ležati u činjenici da svaki od njih može imati neku vrijednost, koja je postavljena u svojstvu "Selectable value". Zatim "5% popusta" može pohraniti vrijednost 5 ili 0,05.

Važno je zapamtiti tri stvari kada koristite prekidače:

      Prvi prekidač treba imati svojstvo "FirstInGroup" (u ovom primjeru to je prekidač "5% popusta").

      Prekidači koji su smisleno povezani s jednom grupom trebali bi ići u nizu prilikom postavljanja redoslijeda obilaska, bez prekidanja drugim elementima forme. Redoslijed obilaska postavlja se iz izbornika "Obrazac -> Postavljanje redoslijeda obilaženja", za ovaj primjer to izgleda ovako:

  1. Vrsta odabrane vrijednosti postavlja se za prekidač koji ima svojstvo "FirstInGroup".

Dodajte grupni okvir u formu i postavite prekidače na njega preko stavke izbornika Obrazac -> Umetni kontrolu... i odaberite prekidače u prozoru koji se otvori:

U desnom dijelu prozora dodajte vrijednost prekidača koliko nam je potrebno, označite kućicu “Promocije - prvi u grupi” tako da se ovaj prekidač automatski odabere.

Nakon što smo dodali prekidače, odabiremo tip podataka za prvu vrijednost “Dionice”, u našem slučaju dodjeljujemo vrijednost “Vrsta vrijednosnih papira”:

A sama vrijednost prekidača se upisuje u Data -> Selected value. Za Dionice to je 0, Obveznice - 1, Mjenice - 2 i Jedinice - 3. Ali prije unosa ovih podataka morate provjeriti redoslijed.

Ako prekidači nisu u redu, tada se prekidač neće izvršiti, odnosno nećemo moći odabrati vrijednost obveznice. Kako biste omogućili ovu značajku, morate odabrati izbornik Form -> Setting traversal order i postaviti sve prekidače po redu.

Provjerite odabranu vrijednost prekidača nakon ispravljanja narudžbe.

Sve što preostaje je napisati programski kod u događaju prekidača “action” “On change”:

Ako je CB Type = 0 Onda

InačeIfCBType = 1 Zatim

ThisForm.FormElements.Receipt.Columns.NCD.Availability = 1; // samo za obveznice dopuštamo NKD

InačeIfCBType = 2 Zatim

ThisForm.FormElements.Receipt.Columns.NCD.Availability = 0;

InačeIfCBType = 3 Zatim

ThisForm.FormElements.Receipt.Columns.NCD.Availability = 0;

završi ako;

Sada, kada odaberete prekidač "Obveznice", možete urediti vrijednost stupca imovine.

Pročitao sam mnoge forume i nigdje nisam vidio razumljiv opis rada s "Switchom". Pa sam odlučio to sam napisati.

Po mom mišljenju, najčešća pogreška je zabluda o "Switchu". Kada postavite nekoliko "prekidača", na primjer 3, na obrazac, mnogi ljudi vjeruju da su u programskoj logici to 3 različita objekta koji utječu jedan na drugog. Ali, zapravo, program percipira sva 3 "prekidača" kao jedan objekt. A odabir jednog od njih mijenja stanje ovog objekta. Pogledajmo primjer.

1. Kreirajte tri radio gumba na obrascu. Radi praktičnosti, nećemo mijenjati imena.
2. Označite Switch1. U njegovim svojstvima, u odjeljku "OSNOVNO", označite prvi okvir u grupi. “VRSTA VRIJEDNOSTI” odaberite broj. (Dalje ćemo pogledati zašto baš taj broj). Duljina se može postaviti na jedan, ali to ne daje nikakvu posebnu funkcionalnost.
3. Odaberite “Switch2” u stupcu “SELECTED VALUE” i stavite 1.
4. Odaberite “Switch3” u stupcu “SELECTED VALUE” i stavite 2.
U suštini, radnjama 3 i 4 postavljate oznaku koja će se promijeniti kada odaberete odgovarajući "Prebaci". U “Switch1” zadana “SELECTED VALUE” je nula.
5. Provjerite jesu li prekidači u redoslijedu "HODANJE". (na primjer: 13,14,15) (Slika 1). potreban je kontinuirani redoslijed obilaska prekidačem. Omogućen je redoslijed automatskog zaobilaženja (pozicije su označene brojevima 13, 15, 20) (Sl. 2) u ovom slučaju prekidači jedan ispod drugog neće raditi. Trebali biste ukloniti korištenje automatskog redoslijeda iz obrasca i, ako potrebno, ručno odredite redoslijed.

Kako postaviti redoslijed obilaska za detalje. Dok ste u obrascu, u izborniku "Dijalog" morate poništiti oznaku "Automatski redoslijed obilaženja". Nakon toga možete koristiti “Dijalog” -> “Postavljanje redoslijeda obilaska” ili “Dijalog” -> “Putni nalog”. Druga metoda mi se čini najprikladnijom. Kod ove metode, slika s brojem rekvizita pojavljuje se za svaki rekvizit. Sve što trebate učiniti je kliknuti na brojeve, odabirući detalje redoslijedom koji vam je potreban.

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

6. Odaberite “Switch1” i napišite proceduru koja nam je potrebna za to.
Na primjer:

EF=Elementi obrasca; If Switch1=0 Then EF.Payment Status.Value = "Unpaid"; OtherwiseIf Switch1=1 Then EF.Payment Status.Value = "Djelomično plaćeno"; OtherwiseIf Switch1=2 Then EF.Payment Status.Value = "Paid"; završi ako;

7. Pritisnite F7. Pritisnite F5. Da vidimo da sve radi, super smo. A veliki GAZDA nam daje bonus.

OBJAŠNJENJE ZA ŠIFRU

Zašto je posvuda "Switch1"? Kako je već rečeno, program percipira sva tri elementa kao jedan, a kako je “Switch1” prvi u grupi, onda ga program percipira kao cijeli element.Ako “Switch2” učinite glavnim u grupi , tada će se morati izvršiti provjera ispravnosti prema "Switch2".
Pa, odakle dolazi "0", "1", "2"? Postavljamo one vrijednosti koje objekt uzima prilikom prebacivanja "Prekidača" u paragrafima 3 i 4.

POGOVOR:

Ovaj kod je dan kao primjer rada sa prekidačima. Po meni je to jasnije i razumljivije. Ali vrijedi spomenuti da u "Value Type" možete odmah odabrati ono što vam je potrebno - unaprijed definiranu vrijednost iz direktorija, nabrajanje, na primjer, ili vrijednost niza. To jest, u gornjem primjeru bilo je moguće odmah dodijeliti prekidače kao vrijednosti ne 0,1,2, već odmah "Neplaćeno", "Djelomično plaćeno", "Plaćeno". A onda će se kod smanjiti na jedan redak:

Elementi obrasca.Status plaćanja.Vrijednost = Switch1;

Rezultat će biti isti.

//////////////////////////////////////////////////////////////////////////////////////////

Prekidači u kontroliranim oblicima (UF) postali su intuitivniji.

Kada stvarate Switch, morate zapamtiti duo Attributes, Form Element.
Prije svega, trebate stvoriti atribute obrasca. Vi postavljate vrstu atributa na vrijednosti koje će vaš prekidač prihvatiti. Odabrao sam tip String. Ovdje imate dvije mogućnosti: ako ste kreirali atribut Object, tada će vrijednost koju je prihvatio vaš prekidač biti spremljena u bazi podataka, ako jednostavno dodate na popis detalja obrasca, tada rezultat koji je prihvatio vaš prekidač neće biti spremljen.

Zatim povucite i ispustite atribute koji su nam potrebni u elemente obrasca. Prilikom izrade elementa obrasca, element u svojstvima "Pogled" će imati tip "Polje za unos". Odaberite "Field switch" s popisa. Kao rezultat, dobit ćete obrazac otprilike ovako:


Ispunjavamo naslov elementa obrasca, boju, font, mjesto i druge ljepote po vašem ukusu.
Postoji stavka u svojstvima elementa obrasca. "Popis odabira" - u njega unosite vrijednosti koje će vaš prekidač uzeti pri odabiru jedne ili druge stavke. U svom primjeru dodao sam retke s vrijednostima "Snimi", "Otkaži objavu", "Objavi".

Nakon toga, vaš prekidač je spreman za upotrebu.

Ovisno o tome je li vaš prekidač atribut objekta ili atribut obrasca, koristite sljedeći kod kako biste dobili vrijednost pohranjenu u njemu:

SwitchFormElementFormElement // izravan pristup ako je ovo atribut obrasca Object.SwitchInsideDB // pristup kroz element Object. do vaših podataka.

Klyuev V.V.

http://prof1c.kklab.ru

RAD SA PREKIDAČIMA

Uzmite u obzir sve korisnike usluge stranice - postavljam materijale u odjeljku za početnike!!!

8.2 Upravljani obrasci

Dok proučavaju ponašanje upravljanih obrazaca, programeri ili razvijači sučelja suočavaju se s pitanjem gdje su prekidači u upravljanim oblicima i kako ih dodati u obrazac. To je sitnica, ali neugodno je što se puno vremena troši na takve sitnice, iako bi se to vrijeme moglo potrošiti na razvoj i optimizaciju algoritma, a ne na dizajniranje forme.

Dakle, stvorimo praznu konfiguraciju da bismo razumjeli pitanje ili odaberimo bilo koju tipičnu.
Idite u grupu koja sadrži direktorije i dodajte novi direktorij za eksperiment. Želio bih napomenuti da konfiguracija mora imati glavni način pokretanja - Managed Application.

Dakle, kreirajmo novi direktorij i dodajmo atribut "Property1", s tipom "Boolean"

Sada idemo na karticu Obrasci i dodamo novi obrazac.

Dakle, kontrolirana forma je stvorena, idemo sada raditi s formom i pronaći gdje se nalazi prekidač.
Evo naše forme, a na njoj vidimo naše rekvizite, ali u obliku zastave

Dakle, što smo krivo učinili?
Pogledajmo u svojstvima rekvizita postoji li promjena vrste kontrole.
I vidimo da polje Switch nije ovdje! (Gdje smo pogriješili?

Očigledno, tip kontrole na obrascu ovisi o tipu podataka, vratimo se na svojstva obrasca, odnosno na karticu s detaljima, i promijenimo svojstva našeg atributa - naime njegov tip “Boolean”, u tip “Broj ”.

Sada se vratimo na svojstva kontrole i provjerimo je li View kontrole dodan u njezina svojstva - - - I ura, vidimo tamo pogled - Switch Field.

Sada pogledajte formu, što vidimo:

Vidimo - 3 zadane vrijednosti, 3 prekidača, ali trebamo ih dva, ponovno idite na svojstva atributa i tamo pogledajte svojstva "Broj stupaca"

Za 2 - postavite broj stupaca - 2.

Ovo bi moglo malo zaustaviti umornog programera)), ali sada to znamo i on i mi!

8.2 Redoviti obrasci.

Dosadno s prekidačima u običnim oblicima.
Postoje takvi trenuci, i oni se događaju) kada trebate izmijeniti neki gotov obrazac, koji već ima neke prekidače, i trebate dodati još jedan prekidač u ovaj obrazac. Tu nastaje neka vrsta zamora koji oduzima puno vremena, i to ne vremena za programiranje koda - već gubljenja vremena da bi se te sklopke prikazale korisniku.

Pa pogledajmo primjer. Postoji takav dokument za prilagodbu primitaka u 1C UPP - definitivno postoji. Jednom smo mu morali dodati prekidače kako bi se iscrtavali malo drugačiji unosi za računovodstvo. U čemu je problem, čini se da moramo, moramo, učinit ćemo to. Ali ovaj obrazac već ima 2 radio gumba.

Ovako izgleda forma u koju trebamo dodati još prekidača


Na kartici Napredno željeli bismo postaviti još dva radio gumba. Dakle, prvi korak je hrabro dodati novi kontrolni element na mjesto koje nam treba i umetnuti ga.

Čini se da je sve jednostavno. Kreiramo novi atribut s tipom “Number” i umetnemo 2 prekidača, od kojih će jedan moći pisati podatke u atribut, a drugi ne.

Dodajte novi upravljački element - Switch, u tablicu s brojem i opisom prekidača dodajte Switch2, postavite Switch1 na prvo mjesto u grupi i pritisnite OK. Postavite kreirane kontrole na obrazac. Ažuriramo konfiguraciju baze podataka (F7) i pokrećemo je za ispravljanje pogrešaka.

Prilikom izvršavanja (pri izradi novog dokumenta u 1C:Enterprise modu) vidimo da koliko god pokušavali kliknuti na Switch2, ništa se ne događa. Elementi ne rade kako bi trebali. Ovdje postoji jedan trik.
Povratak na konfigurator. Odaberite stavku izbornika Forma -> Set traversal order... (važno je da je forma otvorena na ekranu)


Kako bi naši prekidači radili, morate prekinuti automatski redoslijed i pristati na ručni. I stavite ga u obrazac tako da naši prekidači idu redom jedan za drugim.

U REDU. Ažurirajte konfiguraciju i pokušajte je pokrenuti.
Sjajno. Sve je radilo.

Dodatno - video (bez zvuka, tako da je sve jasno)


Najbolji članci na temu