Pridávajte a upravujte prvky spravovaného formulára programovo. Spínače, bežná aplikácia, ovládanie tvarovým spínačom 1c

1. Vstupné pole
2. Začiarkavacie políčko
3. Prepínač

Vstupné pole

Vstupné pole je spravidla spojené s atribútom objektu a odráža jeho údaje. Toto je možno jeden z najbežnejších prvkov, má niekoľko spôsobov, ako vybrať hodnotu:

Výber zoznamu (ListSelectMode)

Výber z iného formulára (tlačidlo Vybrať)

Regulačné tlačidlá

Implementácia vyššie uvedených príkladov si nevyžaduje značné úsilie zo strany vývojára. napríklad pre režim zoznamu musíte naplniť zoznam prvku hodnotami, ak chcete vybrať z iného formulára, stačí prepojiť ovládací prvok s údajmi zo slovníka. Ale pre ovládacie tlačidlá budete musieť napísať viac kódu, aby ste zvládli stlačenie každého tlačidla, hoci nebude veľké:

Kontrola výberu nomenklatúry Pv procedúry (prvok, smer, štandardné spracovanie)
// Výber údajov pre vstupné pole
// v tomto prípade odkaz na nomenklatúru
Žiadosť = Nová požiadavka;
Žiadosť.Text =
"VYBERTE
| Nomenklatúra. Odkaz ako položka
| OD
| Odkaz.Nomenklatúra Nomenklatúra AS
| OBJEDNAŤ PODĽA
| Nomenklatúra.Kód ";
TKNomenklatúra = Request.Run (). Unload ();

// hľadanie aktuálneho prvku adresára zadaného vo vstupnom poli
TekElement = TZNomenclature.Find (Element.value);

Ak TekElement = Undefined Then
// ak sa prvok nenašiel, nastavte indexové číslo
// mimo tabuľky hodnôt, pretože úplne prvý prvok v
// tabuľka hodnôt má index 0
TekIndex = -1;
Inak
// ak sa nájde prvok, získa jeho index
TekIndex = TZNomenclature.Index (TekElement);
Koniec Ak;

// výpočet nového indexu v závislosti od kliknutia na tlačidlo
// mínus pred premennou Smer stojí tak, že keď
// kliknutím na hornú šípku sa zobrazí prvok vyššie
// a teda s nižším indexom
NewIndex = TekIndex-Direction;

// získajte počet prvkov v adresári
// odčítajte jeden od všetky kolekcie v 8.1 začínajú na 0
Počet prvkov = TZNomenklatúra Počet () - 1;

Ak NovIndex< 0 Или НовИндекс >Počet prvkov potom
// ak je index pri zmene mimo tabuľky hodnôt
// t.j. jeho číslo je potom väčšie ako najväčší index alebo menšie ako 0
// nemeňte hodnotu a informujte o tom užívateľa
Správa ("Dosiahli ste limit adresára");
Inak
// priradíme novú hodnotu, "Produkt" je názov stĺpca tabuľky hodnôt
Element.Value = TKNomenclature.Get (NewIndex) .Product;
Koniec Ak;

Koniec procedúry

začiarkavacie políčko

Vo väčšine programov sa začiarkavacie políčko používa na zobrazenie dvoch stavov: začiarknuté, nezačiarknuté. V 1c má checkbox tri stavy, v treťom stave je checkbox zobrazený - ako nastavený a zároveň tieňovaný. Tieto tri stavy sú dostupné iba vtedy, ak je údaj začiarkavacieho políčka číslo, pričom stavy majú nasledujúci význam:

Prepínač

Prepínač sa používa na výber jednej hodnoty z nie Vysoké číslo možné (najlepšie nie viac ako päť), pričom hodnoty nemožno kombinovať, Napríklad: vhodné na výber pohlavia osoby. Ďalší príklad: povedzme, že spoločnosť poskytuje jednu z 3 zliav na produkt, pričom zľavy sa nesčítavajú:

V tomto prípade môže pohodlnosť používania prepínačov spočívať v tom, že každý z nich môže mať nejakú hodnotu, ktorá sa nastavuje vo vlastnosti „Vyberateľná hodnota“. A potom "5% zľava" môže uložiť hodnotu 5 alebo 0,05.

Pri používaní prepínačov je potrebné pamätať na tri veci:

      Prvý prepínač by mal mať vlastnosť „FirstInGroup“ (v tomto príklade je to prepínač „5% zľava“).

      Prepínače, ktoré sú v zmysle rovnakej skupiny, by mali ísť jeden za druhým v nastavení poradia prechodu, bez prerušenia inými tvarovými prvkami. Objednávka zájazdu sa nastavuje z menu "Formulár -> Nastavenia objednávky zájazdu", pre tento príklad vyzerá to takto:

  1. Typ vybranej hodnoty sa nastavuje prepínačom s vlastnosťou „FirstInGroup“.

Prepínače (aka RadioButtons) v 1C 7.7 sú implementované veľmi zvláštnym spôsobom. V prvom rade by ste mali zvážiť skutočnosť, že vždy tvoria skupinu (jeden prepínač nemá zmysel). V 1C neexistuje žiadne explicitné spojenie medzi prvkami skupiny. Vyberie sa prvý prvok v skupine, pre ktorý je špecifikovaný identifikátor (môže to byť číselný atribút objektu metadát). Zoskupenie ostatných spínačov je určené poradím premostenia.

Pri otvorení formulára musí byť hodnota prepínača inicializovaná, pretože v opačnom prípade nebudú zahrnuté žiadne prvky skupiny, čo nie je správne.

V typickej konfigurácii 1C sa prepínače inicializujú takto: Postup pri zadávaní nového (kopírovanie) // inicializácia ďalších údajov Mena = 1; EndProcedure // Zadajte nový Zdá sa to byť celkom jednoduché, ale ak vezmeme do úvahy, že najžiadanejšia hodnota býva v skupine prepínačov zvyčajne na prvom mieste, mohli sme vykonať inicializáciu na stroji pomocou nástrojov platformy.

Hlavnou nevýhodou prepínača je podľa mňa to, že na výstupe dostaneme neosobnú číselnú hodnotu, na rozdiel napríklad od enumerácií. Bohužiaľ, v 1C 7.7 neexistuje štandardný spôsob, ako reprezentovať zoznamy pomocou prepínačov. K tomu však existuje alternatíva – použitie preddefinovaných premenných (podobne ako konštanty v iných programovacích jazykoch).

Pozrime sa na príklad použitia hodnoty prepínača: Ak mena = 2, potom pokladničný účet = AccountByCode ("50,11"); Inak Pokladničný účet = AccountPocode ("50.1"); Koniec Ak; Aby ste pochopili tento kód, musíte prejsť do formulára a určiť, že premenná „Mena“ je identifikátorom prvého prvku v skupine prepínačov „Pokladňa“. Samotná skupina pozostáva z 2 prvkov: "rubeľ (Kt 50,1)" a "mena (Kt 50,11)". Až potom je jasné, že na rozdiel od bežnej logiky je „Mena = 2“ znakom menovej banky a „Mena = 1 alebo 0“ je rubeľ.

Svoj kód môžete ľahšie pochopiť definovaním premenných modulu formulára s názvami a hodnotami, ktoré zodpovedajú pozíciám prepínačov. V tomto príklade by to boli premenné: Zmeniť kTypeKassa_RUBLE, kTypeKassa_Currency;

V inicializačnom bloku modulu definujeme ich hodnoty: kTypeCheckout_RUB = 1; kTypeCheckout_Currency = 2;

Ako výsledok zdroj prevedené do tvaru: Ak mena = kTyp meny_pokladníka, potom účet pokladne = AccountPocode ("50.11"); ElseIf Mena = кTyp pokladníka_RUB Potom hotovostný účet = ÚčetÚčet ("50,1"); V opačnom prípade Upozornenie ("Typ registračnej pokladnice nie je zadaný."); Koniec Ak;

Na záver by som rád poznamenal, že podľa môjho názoru má zmysel vytvárať skupiny prepínačov iba vtedy, ak skupina neobsahuje viac ako 4 (maximálne 5) prvkov. V opačnom prípade má zmysel používať combo box, keďže na formulári zaberie podstatne menej miesta.

Pridajte do formulára rám skupiny a umiestnite naň prepínače cez položku ponuky Formulár -> Vložiť ovládací prvok ... a v okne, ktoré sa otvorí, vyberte prepínače:

V pravej časti okna pridajte hodnotu prepínača, koľko potrebujeme, zaškrtnite "Propagácie - prvý v skupine", aby sa tento prepínač vybral automaticky.

Po pridaní prepínačov vyberieme typ údajov pre prvú hodnotu „Akcie“, v našom prípade priradíme hodnotu „Typ cenných papierov“:

A samotná hodnota prepínača sa zadá do Data -> Selectable value. Pre Akciu je to 0, Dlhopisy - 1, Zmenky - 2 a Jednotky - 3. Pred zadaním týchto údajov je však potrebné skontrolovať objednávku.

Ak prepínače nie sú v poriadku, prepnutie sa nevykoná, to znamená, že nebudeme môcť vybrať hodnotu väzby. Ak chcete povoliť túto funkciu, vyberte ponuku Formulár -> Obísť objednávku a usporiadajte všetky prepínače.

Po oprave objednávky skontrolujte hodnotu voliteľnej hodnoty spínačov.

Zostáva len zapísať kód programu v prípade prepínača "sklad" "Zmena":

Ak TYP = 0 Potom

Inak IfTypeCB = 1 Potom

ThisForm.FormElements.Arrival.Columns.NCD.Availability = 1; // len pre dlhopisy povoľujeme NKD

Inak IfTypeCB = 2 Potom

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

V opačnom prípade IfTypeCB = 3 Potom

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

Koniec Ak;

Teraz, keď vyberiete prepínač "Dluhopisy", budete môcť upraviť hodnotu stĺpca NKD.

Prečítal som si veľa fór a nikde som nevidel jasný popis, ako pracovať so Switchom. Tak som sa rozhodol napísať sám.

Podľa MŇA je najčastejšou chybou mylná predstava o „prepínači“. Keď na formulár umiestnite niekoľko "prepínačov", napríklad 3, veľa ľudí si myslí, že v logike programu sú to 3 rôzne objekty, ktoré sa navzájom ovplyvňujú. Ale v skutočnosti program vníma všetky 3 "prepínače" ako jeden objekt. A výber jedného z nich zmení stav tohto objektu. Pozrime sa na príklad.

1. Vytvorme tri prepínače vo formulári. Pre pohodlie nebudeme meniť mená.
2. Zvýraznite Switch1. V jeho vlastnosti v sekcii "ZÁKLADNÉ" zaškrtnite prvého v skupine. "TYP HODNOTY" vyberte číslo. (Ďalej zvážime, prečo práve číslo). Dĺžku možno nastaviť rovnajúcu sa jednej, ale to neprináša veľa funkcií.
3. V stĺpci "VYBRANÁ HODNOTA" vyberte "Switch2" a zadajte 1.
4. V stĺpci "VYBRANÁ HODNOTA" zvoľte "Switch3" a vložte 2.
V skutočnosti 3. a 4. akciou nastavíte príznak, ktorý sa zmení, keď vyberiete príslušný „Switch“. V "Switch1" je SELECTED VALUE predvolene nastavená na nulu.
5. Skontrolujte, či sú prepínače v poradí BYPASS ORDER. (napríklad: 13,14,15) (obr. 1). vyžaduje sa neprerušený príkaz premostenia prepínačom. automatické objednávanie zájazdu je povolené (pozície sú očíslované 13, 15, 20) (obr. 2) v tomto prípade nebudú fungovať prepínače pod sebou, mali by ste z formulára odstrániť použitie automatického objednávania a ak potrebujete zadať objednať.

Ako nastaviť poradie prechodu pre náležitosti. Vo formulári v menu "Dialóg" je potrebné zrušiť zaškrtnutie políčka "Automatická objednávka premostenia". Potom môžete použiť buď "Dialóg" -> "Prispôsobiť objednávku prehliadky" alebo "Dialóg" -> "Objednávka prehliadky". Druhý spôsob sa mi zdá najpohodlnejší. Pri tejto metóde sa pre každú rekvizitu zobrazí obrázok s počtom rekvizít. Stačí kliknúť na čísla a vybrať podrobnosti v poradí, ktoré potrebujete.

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

6. Zvoľte "Switch1" a napíšte postup, ktorý na to potrebujeme.
Napríklad:

EF = prvky formulára; Ak Switch1 = 0 Then EF.PaymentStatus.Value = "Nezaplatené"; ElseIf Switch1 = 1 Then EF.PaymentStatus.Value = "Čiastočne zaplatené"; ElseIf Switch1 = 2 Then EF.PaymentStatus.Value = "Zaplatené"; Koniec Ak;

7. Stlačte F7. Stlačíme F5. Pozri, všetko funguje, sme skvelí. A veľký BOSS nám dáva cenu.

VYSVETLENIE KÓDU

Prečo je všade "Switch1"? Keďže už bolo povedané, program vníma všetky tri prvky ako jeden a keďže "Switch1" je prvý v skupine, tak ho jeho program vníma ako celý prvok, ak "Switch2" dáte ako hlavný v skupine. , potom bude potrebné vykonať kontrolu správnosti pomocou "Switch2".
Odkiaľ pochádza „0“, „1“, „2“? Hodnoty, ktoré objekt nadobúda pri prepínaní „Prepínačov“, nastavujeme v odsekoch 3 a 4.

PO SLOVO:

Tento kód je uvedený ako príklad práce s prepínačmi. Podľa mňa je to jasnejšie a zrozumiteľnejšie. Za zmienku však stojí, že v "ValueType" si môžete okamžite vybrať, čo potrebujete - preddefinovanú referenčnú hodnotu, napríklad enumeráciu alebo hodnotu reťazca. To znamená, že v tomto príklade bolo možné okamžite priradiť prepínače ako hodnoty nie 0,1,2, ale okamžite "Nezaplatené", "Čiastočne zaplatené", "Zaplatené". Potom sa kód zmenší na jeden riadok:

Form Elements.PaymentStatus.Value = Switch1;

Výsledok práce bude rovnaký.

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

Prepínače v kontrolovaných formách (UV) sú intuitívnejšie.

Pri vytváraní prepínača si musíte pamätať na dve rekvizity, prvok formulára.
Najprv musíte vytvoriť rekvizity formulára. Nastavíte typ rekvizít, aké hodnoty bude akceptovať váš prepínač. Vybral som si typ String. Tu máte dve možnosti: ak ste vytvorili atribút objektu, potom sa hodnota akceptovaná vaším prepínačom uloží do databázy, ak jednoducho pridáte do zoznamu atribútov formulára, výsledok akceptovaný vaším prepínačom sa neuloží .

Potom presuňte potrebné rekvizity do prvkov formulára. Pri vytváraní prvku formulára bude mať prvok vo vlastnostiach "Zobraziť" typ "Pole vstupu". Vyberte zo zoznamu "Prepínač poľa". V dôsledku toho dostanete formulár, ktorý vyzerá takto:


Vyplňte nadpis prvku formulára, farbu, typ písma, umiestnenie a ďalšie vlastnosti podľa vlastného výberu.
Vo vlastnostiach elementu formulára je položka. "Zoznam možností" - v ňom zadáte hodnoty, ktoré váš prepínač prijme, keď vyberiete jednu alebo druhú položku. V mojom príklade som pridal riadky s hodnotami „Write“, „CancelProvide“, „Submit“.

Potom je váš prepínač pripravený na použitie.

V závislosti od toho, či je váš prepínač rekvizita objektu alebo rekvizita formulára, použijete nasledujúci kód na získanie hodnoty, ktorá je v ňom uložená:

SwitchFormElementFormElement // prístup priamo, ak ide o atribút formulára Object.SwitchInternalDB // prístup cez prvok Object. k vašim rekvizitám.

1C sú vytvárané systémom automaticky pri používaní aplikované riešenia... Sú základom pre prezentáciu (zobrazovanie) informácií v systéme 1C: Enterprise.

Štruktúra formy 1C

Formulár c je logickým popisom zloženia formulára. elementov popisuje, ako bude formulár vyzerať. Umiestnenie prvkov formulára vykoná systém automaticky pri jeho zobrazení.

Zobrazená časť formulára (viditeľná pre používateľa) je opísaná ako strom obsahujúci prvky formulára (pozri obrázok nižšie, pole „Prvky formulára“):

  • skupina, ktorá obsahuje ďalšie prvky,
  • vstupné polia,
  • vlajky,
  • vypínače,
  • tlačidlá,
  • tabuľky, ktoré obsahujú prvky stĺpcov atď.

"Prvky formulára 1C"

[zbaliť]

Skupina prvkov formulára môže byť reprezentovaná ako

  1. panel s rámom,
  2. panel so stránkami (záložkami),
  3. samotná stránka,
  4. príkazový panel.

Všetky funkcie formulára sú opísané takto:

  • podrobnosti (údaje, s ktorými formulár pracuje);
  • príkazy (vykonané akcie).

Prispôsobenie vzhľadu spravovaného formulára

Prispôsobenie vzhľadu spravovaného formulára používateľom

Prispôsobenie vzhľad riadený formulár je možné implementovať na užívateľskej úrovni. Pre túto funkciu je v akciách formulára príkaz "Viac" - "Zmeniť formulár" (ovládajte iba tie prvky formulára, ktoré sú definované vo fáze návrhu alebo podľa štandardných pravidiel pre automatické generovanie formulára).

"Viac" - "Zmeniť tvar"

Príkaz "Viac" - "Zmeniť tvar":

Po kliknutí na „Zmeniť formulár“ sa zobrazí okno nastavení formulára 1C:

[zbaliť]

Okrem toho je v užívateľskom režime možné:


  • zmeniť poradie formulárov, presunúť ich z jedného stĺpca do druhého (ak je pracovná plocha usporiadaná do dvoch stĺpcov), ale nemôžete zmeniť počet stĺpcov na pracovnej ploche;
  • zobrazenie informácií vo forme samostatných okien (pri volaní navigačného príkazu podržte stlačený kláves Shift).

Ak sa použijú sekcie, potom pri vyvolaní príkazu na navigačnom paneli sa v pracovnej oblasti zobrazí zodpovedajúci zoznam, ktorý nahradí predchádzajúci obsah pracovnej oblasti.

Prispôsobenie vzhľadu spravovaného formulára vývojárom

Developer môže ovplyvniť usporiadanie prvkov rôzne nastavenia... Môže určiť poradie prvkov, určiť ich šírku a výšku a tiež použiť:

  • príkazy samotného formulára;
  • globálne príkazy používané v celej konfigurácii;
  • parametrizovateľné príkazy, ktoré otvoria ďalšie formuláre na základe konkrétnych údajov aktuálneho formulára.

Nákres (zmena formulára 1C vývojárom)

[zbaliť]

Pri vývoji formulára 1C musíte:

  1. v editore formulára zahrňte do formulára potrebné detaily a príkazy;
  2. vytvárať prvky formulára, ktoré ich zobrazujú, určovať poradie prvkov, špecifikovať šírku a výšku (ak je to potrebné);
  3. usporiadajte prvky do skupín (ak je to potrebné).
  1. V prípade veľkého počtu rolí v konfigurácii (od niekoľkých desiatok) použite nastavenie viditeľnosti v prvkoch formulára (prezeranie a úprava detailov podľa roly, vlastná viditeľnosť polí formulára podľa roly, používanie príkazov podľa roly). Namiesto toho by sa mali dodržiavať tieto prístupy:
    • so silnými rozdielmi vo vzhľade a funkčnosti formulára v závislosti od prítomnosti určitých rolí pre používateľa - rozvíjať samostatné formyšpecializované na konkrétny súbor užívateľských práv;
    • s malými rozdielmi - vykonať kontrolu oprávnení v kóde... Treba mať na pamäti, že ovládanie programu viditeľnosť môže znížiť rýchlosť otvárania formy, čo je potrebné zvážiť pri výbere medzi navrhovanými prístupmi.
  2. Použite nastavenie viditeľnosti na základe roly v konfiguračnom príkazovom rozhraní, príkazovom rozhraní hlavnej sekcie a pracovnom priestore úvodná stránka... Namiesto toho by ste mali použiť nastavenie práv na časti príkazového rozhrania a objekty, ktoré sú v ňom zahrnuté príkazové rozhranie alebo do pracovnej oblasti. To zlepšuje predvídateľnosť správania. spravované rozhranie pre užívateľa, ako aj na zjednodušenie vyšetrovania chýb.

Podrobnejšie informácie o práci s formulármi v kurze "Práca s formulármi v" 1C: Enterprise 8.3 ", http://www.1c.ru/rus/partners/training/uc1/course.jsp?id=161.