1c postavlja standardne postavke obrasca. Odabir u izvještajima. Nijanse graditelja postavki. Postavljanje obrazaca i rad sa listama

Podsistem u 1C 8.3— objekat stabla metapodataka koji je odgovoran za izgradnju komandnog interfejsa konfiguracije.

U nastavku članka ćemo govoriti o podsistemima počevši od verzije 8.2.

Činjenica je da je verzija 8.1 (kao i obična aplikacija 8.2) također imala podsisteme, ali su oni služili sasvim drugim svrhama, prije za programera nego za korisnika. Koristeći podsisteme u 8.1, različite funkcionalnosti su obično bile odvojene. Podsistemi su također pomogli pri kombinovanju različitih 1C konfiguracija - bilo je moguće odrediti koji sistem treba prenijeti.

1C podsistemi i programski interfejs

U verzijama 8.3 i 8.2, podsistemi su glavni alat za izgradnju komandnog korisničkog interfejsa. Podsisteme metapodataka imaju objekti hijerarhijska struktura Da biste konfigurisali „podmeni“ u interfejsu, potrebno je da dodate podsistem:

Svojstva i postavke

Pogledajmo postavke i svojstva podsistema u konfiguratoru:

Nabavite 267 video lekcija na 1C besplatno:

Uključi u komandni interfejs— ako ste zaboravili da postavite ovu zastavu, podsistem neće biti prikazan u interfejsu.

Dugme otvara panel postavki interfejsa, gde možete konfigurisati interfejse u zavisnosti od uloge trenutnog korisnika:

Slika— slika dodeljena podsistemu se prikazuje u režimu preduzeća. Možete odabrati standardnu ​​sliku ili možete dodati vlastitu tako da je prvo kreirate kao konfiguracijski objekt slika:

Na kartici Funkcionalne opcije označava listu funkcionalnih opcija u kojima se ovaj podsistem koristi.

Tab Compound definira skup metapodataka objekata koji učestvuju u datom podsistemu.

Na kartici Ostalo možete opisati pomoć za podsistem i odrediti postavke Uključiti u sadržaj pomoći— da li uključiti ovaj odeljak pomoći u opšte pozadinske informacije po konfiguraciji.

Ako ne vidite izvještaj ili obradu u upravljanom interfejsu

Ovaj problem se vrlo često javlja među programerima početnicima - čini se da je izvještaj ili obrada dodan u podsistem, ali nije vidljiv.

Prvi razlog za to može biti taj što objekt nema definiran kontrolirani oblik.

Drugi razlog je taj što je na kartici Komande objekta označeno polje za potvrdu "Koristi standardne komande". To je zbog činjenice da se za otvorenu obradu može opisati ili vaš vlastiti postupak ili se može koristiti standardni:

Članak nastavlja seriju "Prvi koraci u razvoju 1C."

U konfiguraciji na platformi 1C:Enterprise, prilikom prikaza informacija najčešće se koriste tabele koje prikazuju različite liste informacija. Rad sa takvim listama može se odvijati i u obliku liste i u obliku elementa (obrada).

U ovom članku ćemo se upoznati sa ovim opcijama za prilagođavanje lista, a takođe ćemo pogledati i druge karakteristike prilagođavanja obrazaca sa strane korisnika.

Primjenjivost

U članku se govori o upravljanom sučelju u verziji konfiguracije "Verzija 8.2" razvijenoj na platformi 1C 8.3.4.482.

Ako radite s konfiguracijama koje podržavaju ovo sučelje, tada su informacije relevantne za vas i trenutne verzije platforme.

Ako radite u novom Taxi sučelju, nazivi nekih konfiguracijskih naredbi, kao i opći slijed radnji, mogu biti malo drugačiji.

Osim toga, trenutna verzija platforme je dodala nove mogućnosti pretraživanja na listama.

Postavljanje obrazaca i rad sa listama

Za upravljane elemente obrasca moguće je promijeniti vidljivost i neka druga svojstva. Za ove namjene u u upravljivom obliku na meniju Sve akcije služi kao stavka Promijeni formu.

Nakon što kliknete na ovu naredbu, pojavit će se prozor “Postavke obrasca”.

U prozoru koji se pojavi možete koristiti potvrdne okvire za promjenu vidljivosti nekih detalja. U ovom slučaju, obrazac se automatski mijenja.

Možete promijeniti redoslijed detalja. Dodajte novu grupu i postavite neke detalje (elemente) u nju, definišući opciju za njihovo grupisanje (horizontalno, vertikalno).

Detalji uključeni u grupu bit će objavljeni u skladu s tim. Osim toga, možete konfigurirati svojstva kao što su širina, visina i podaci zaglavlja za elemente.

Možete definirati atribute koji će se aktivirati kada se obrazac otvori.

Važna karakteristika je mogućnost dodavanja novih polja u obrazac. Ovo postaje moguće kroz atribute referentnog tipa.

Na primjer, imati atribut tipa reference na obrascu Counterparty, mogu dodati Osoba za kontakt, Ako ovaj rekvizit nalazi se u imeniku “Counterparties”.

Ako je potrebno, dodatna polja se mogu ukloniti. Polja kreirana u konfiguratoru ne mogu se izbrisati. Sva podešavanja koju je izvršio korisnik se čuvaju.

Za povratak na standardne postavke u prozoru Postavke obrasca u meniju Sve akcije trebali biste odabrati stavku Instaliraj standardne postavke .

Pored prilagođavanja obrazaca u upravljanom interfejsu, moguće je prilagoditi liste (elementi direktorijuma, dokumenti).

U obliku liste u meniju Sve akcije sadrži posebnu komandu Prilagodite listu.

Otvoriće se prozor “Postavke liste”. U ovom prozoru možete odabrati, sortirati, definirati uvjetno oblikovanje i grupiranje.

Na slici je prikazan obrazac za uređivanje selekcije.

Izbor se može izvršiti pomoću nekoliko polja. U ovom slučaju, prema zadanim postavkama odabir će raditi u skladu sa uvjetom I. Također možete koristiti uslove ILI i NE.

Da biste koristili uslov ILI (NE), morate dodati odgovarajuću grupu (OR grupa, NOT grupa) koristeći naredbu Uslovi grupe.

Na slici je prikazan obrazac za definisanje polja sortiranja.

Grupiranje se može konfigurirati. Na slici je odabrano polje za grupisanje Counterparty.

Sljedeća slika pokazuje kako će se izvršiti grupisanje.

Listu možete slobodno obojiti ili primijeniti druge elemente uvjetnog dizajna (izbor fonta, specifično oblikovanje) prema datom uvjetu, kao i odabrati listu polja za formatiranje.

Na slici je prikazan rezultat uslovnog dizajna pozadine polja Suma.
Kada je iznos > 100.000.

Treba napomenuti da je moguće pregledati direktorije u hijerarhijskom modu.

Preko stavke se može konfigurirati hijerarhijski pregled direktorija View Mode na meniju Sve akcije. Možete odabrati jednu od opcija: Hijerarhijska lista, Lista, Drvo.

Također je moguće konfigurirati vlastito grupiranje elemenata direktorija prema određenim detaljima.

Na primjer, možete grupirati artikle prema dobavljaču. Primjer je sličan onom gdje smo pogledali grupisanje dokumenata „Prodaja robe i usluga“ prema ugovornim stranama.

Zgodna karakteristika je višestruki izbor na listama i naknadno izvršavanje grupnih radnji (objavljivanje, otkazivanje, poništavanje brisanja).

Objekti na listi se biraju držanjem tipke Shift ili Ctrl.

Traženje određene vrijednosti na listi ima svoje karakteristike. Pretraga radi u režimu odabira. Ostaju samo oni redovi koji zadovoljavaju uslov traženja.

Za pretraživanje po vrijednosti u trenutnoj koloni, samo postavite kursor na željenu kolonu i kliknite na dugme Nađi u komandnoj tabli. Pojavit će se prozor u kojem također treba kliknuti na dugme Nađi.

Da biste svoju pretragu učinili konkretnijom, možete koristiti potvrdni okvir Traži u pronađeno.

Kada tražite red podataka referentnog tipa (na primjer, jedinice mjere), trebate odabrati odgovarajuću opciju pretraživanja ...(po redu).

Ovo se završava listama i načinima za njihovo konfigurisanje. U sljedećem članku nastavit ćemo se upoznati sa sučeljem i pogledati zgodan alat za informiranje korisnika, o kojem ranije nismo govorili. Kakav je ovo instrument? :)

Vjerujem da nema potrebe da vam govorim šta je sistem kontrole pristupa, kompozitor postavki i, općenito, cijeli skup objekata dizajniranih za rad sa sistemom kontrole pristupa. Glavna područja upotrebe, ne računajući škakljive radnje u kodu, su dinamičke liste i izvještaji, au oba slučaja vrlo značajna funkcionalnost ostaje iza scene. Često i ne razmišljamo o logici ponašanja i odnosa svih učesnika u procesu, jer Obično rješavamo prilično jednostavne probleme ili se oslanjamo na zadane postavke platforme. Ali tamo gdje su tišine, postoji i unutrašnja logika, svojevrsna „medveđa usluga“ 1C, čije je plodove ponekad teško i neočigledno prevladati da bi se postigao željeni efekat, a pritom je dovoljno samo da pravilno koristite alate.

Zainteresovani mogu preskočiti dijelove 1-4 i prijeći direktno na primjere.

Pokušat ću se malo detaljnije zadržati na radu ACS selekcija za slučaj njihove upotrebe u izvještajima. Mislim da je ponašanje u dinamičke liste, uz brojne rezervacije, bit će blizu. Dakle, odabir u izvještajima, malo teorije pa konkretni primjeri.

Koriste se SP 8.3.6 i noviji, dijelovi ITS-a (klauzula 10.3.7.5, itd.), knjiga „Profesionalni razvoj u sistemu 1C-Enterprise 8“ (Kazan, 2012, drugi tom). U knjizi E. Hrustaljeve uopšte nije bilo ničeg razumljivog na ovu temu.

Dio 1

Graditelj postavki, kao što znate, ima kolekcije “Postavke”, “Fiksne postavke” (u daljem tekstu “FN”) i “Prilagođene postavke” (u daljem tekstu “CU”). Izvještaj može imati nekoliko opcija, a veze između opcija, N, PN i FN su vrlo jedinstvene. Takođe, ne zaboravimo na izvor dostupna podešavanja, i njegov "predak", što je obično sam krug, koji također ima svoje zadane postavke.

* Postavke – postavke kreirane u modu konfiguratora i promijenjene u modu za uređivanje verzije izvještaja;

* UserSettings – postavke koje korisnik mijenja u režimu „1C:Enterprise“ isključivo preko interfejsa;

* FixedSettings – one postavke koje su postavljene iz ugrađenog jezika, uklj. su implicitno postavljeni od strane sistema. Ovo svojstvo sadrži vrijednosti odabira koje se prenose u obrazac pomoću njegovih parametara (struktura „Izbor“).

Postavke i FN-ovi su slični po dizajnu i imaju kolekciju „Izbor“ tipa „Odabir sastava podataka“, dostupnu za promjenu sastava u bilo kojem trenutku tokom postojanja izvještaja. U isto vrijeme, Postavke su dostupne za promjene interfejsa kroz uređivanje varijante, ali FN-ovi uopće nisu dostupni. PN je, pak, “kaša”, gdje jednaki elementi mogu biti i sama “Izbor” i pojedinačni objekti tipa “Element za odabir sastava podataka” (tzv. ugniježđeni objekt). Unatoč dostupnosti odgovarajućih metoda, nemoguće je programski promijeniti sastav kolekcije PN elemenata ako su to PN-ovi samog izvještaja, a nisu napravljeni „od nule“ od strane dizajnera - 1C će izvijestiti da „Kolekcija korisnika postavke ne mogu promijeniti njegovu kompoziciju, jer je povezana s podacima o postavkama izgleda." ITS kaže: „Svojstvo nije za pisanje pomoću ugrađenog jezika.“, ali, kao što ćemo kasnije vidjeti, moguće je utjecati na PN. “Kaša” od objekata ima interne komunikacije– proverava se konzistentnost uslova pri generisanju izveštaja i kada se menja sastav. Na ITS-u čitamo: „Elementi koji su sami označeni kao prilagođeni neće biti dodani. Na primjer, prilagođeni odabir neće uključivati ​​element odabira koji je označen kao prilagođen. Elementi koji sadrže prilagođene elemente neće biti dodani. Na primjer, grupa uvjeta neće biti dodana ako grupa sadrži elemente označene kao prilagođene. Za ugniježđene elemente, svojstvo DisplayMode se ne analizira. Oni se dodaju ili ne dodaju zajedno sa roditeljski elementi." Dakle, "starost" objekata djeluje iza kulisa. U ovom slučaju, možete dobiti efekat kada vam interfejs dozvoljava da specificirate kontradiktorne selekcije za varijantu i njen PN, kao i unutar PN.

Čini se da je "senior" opcija. Ali klikom na “Više” / “Promijeni opciju” i potvrda promjena u otvorenom obrascu poziva se rukovalac događaja obrasca , u ovom slučaju, odabir se pojavljuje u panelu "Osnovno" na obrascu koji se zove iz "Postavke...", i pojavljuje se na obrascu izvještaja, ali NIJE prikazan na kartici "Izbor"; Štaviše, ili se odmah pojavljuje i na glavnom obrascu izvještaja i na obrascu “Postavke...” (ako postoji zastavica “Uključi u korisnička podešavanja”), ili ni tamo ni tamo. Ali u svakom slučaju, NEĆE biti na kartici “Izbor” u obrascu “Postavke...”. Razlika između kartice "Osnovno", obrasca "Postavke..." i obrasca glavnog izvještaja određena je poljem "Režim uređivanja" (normalno - samo u "Postavke", brzo - i na samom obrascu izvještaja), ali mislim da svi to znaju. Usput, vrijednosti "Odabir" i "Brzo" nisu ni na koji način sinkronizirane i mogu biti u suprotnosti jedna s drugom, ali "Brzo" na obrascu izvještaja i na obrascu postavki su striktno sinhroni. Dakle, kada uređujete varijantu, ona se sama menja (ali njen ID i naziv se ne menjaju), ali PN-ovi ostaju NE modifikovani (tj. čak i ako govorimo o njima, tj. o zastavici za uključivanje ovog ili onog element u PN).

Klikom na “Odaberi opciju...” i potvrdom promjena u obrascu koji se otvara pokreće događaje sljedećim redoslijedom:

Prilikom učitavanja OptionOn Server

Prilikom ažuriranja sastava korisničkih postavki na serveru

U ovom slučaju, ni opcija ni PN se ni na koji način ne mijenjaju. Odavde je jasno da opcija i podešavanja, ako su povezani, nikako nisu direktno povezani.

Klikom na "Postavke..." i potvrdom promjena u otvorenom obrascu samo se pokreće događaj Prilikom ažuriranja sastava korisničkih postavki na serveru(u ovom slučaju PN-ovi se mijenjaju, ali se pogledi i ključ (ako ih nije bilo) ne primaju; ako je omogućeno “Brzo” za elemente objekta “Izbor” PN-a, tada pored “Izbor”, njegovi stvarni elementi se pojavljuju kao polja, tj. ponašaju se slično kao ugniježđeni elementi. Ove postavke se čuvaju prilikom zatvaranja i vraćaju sljedeći put kada uđete u formu. Ne dodiruje niti mijenja opciju.

Klikom na "Više"/"Postavi standardna podešavanja" u obrascu postavki (kao i na stavku "Standardna podešavanja" u opciji edit) samo pokreće događaj Prilikom ažuriranja sastava korisničkih postavki na serveru. U ovom slučaju, opcija se mijenja, ali se mijenja PN. Ako je opcija promijenjena prije, ostaje promijenjena (ni promijenjena zastavica se ne resetuje, niti se resetuju stvarne postavke).

Klikom na “Svojstva elementa prilagođenih postavki” u stablu strukture na obrascu za uređivanje varijante dodaje se objekat “Izbor” i on se ispostavlja prazan i nije ni na koji način sinhroniziran sa postojećom selekcijom varijante i postojećim ugniježđenim elementima selekcije. varijanta se ni na koji način ne menja.

Otuda i preporuka: ako trebate postaviti određene odabire u "Konfigurator" modu, kako se ne bi petljali s kodom i kako nisu u opciji, već bi bili u sučelju izvještaja, ne treba manipulirati odabirom elementi opcije, mijenjaju njihova svojstva, ali i sam odabir, korištenjem dugmadi „Svojstva elementa…“ i „Prilagođene postavke“.

Dodavanje nečega što se pojavljuje u Postavkama u PN zahtijeva radnje u kodu ili sučelju, ali brisanje i brisanje postavki utiče na PN odmah i bez ikakvih ažuriranja, na primjer:

Report.SettingsLitter.Settings.Selection.Items.Clear();

Prije zatvaranja obrasca izvještaja, sistem pita samo da li je došlo do promjena u varijanti. Ukoliko je došlo do izmjena PN-a, one će se automatski pohraniti bez ikakvih pitanja, a također će se automatski pokušati primijeniti u narednoj sesiji rada sa izvještajem.

napomene:

U slučaju većeg broja grešaka u primjeni postavki prvo se prikaže poruka o problemu, a zatim se kompozicija i dalje javlja, događaj se zove i generisanje izvještaja. U ovom slučaju, FN-ovi, čak i ako su postojali, i dalje se zanemaruju, a samo Postavke igraju ulogu.

Prilikom dodavanja odabira na obrascu „Promjena opcije“, to se radi odmah sa postavljenom zastavicom „Uključi u PN“, ali, ponavljam, sa stanovišta ugrađenog jezika, PN ostaje nepromijenjen.

Podešavanje varijacije varijante i podešavanje varijacije PN-a nisu direktno povezane, to su dva različita smjera promjena.

PN, između ostalog, ima „Dodatne postavke“. Nikad nisam mogao da shvatim čime su i u kom trenutku ispunjeni. Iako izvještaj sadrži postavke „označene u izboru i uslovnom dizajnu” kao prilagođene (prema zajedničkom poduhvatu), ali dodatna podešavanja u svim slučajevima bili su prazni. Nema ništa o ovome na ITS-u.

Uprkos izjavi u zajedničkom poduhvatu, PN-ovi su savršeno serijalizovani u xml-u.

Ako su oba elementa nezavisne selekcije i sama selekcija uključeni za upotrebu, onda je izveštaj sastavljen ispravno, ali kada se prikaže, duplira informacije o uspostavljenoj selekciji u konačnom izgledu.

Podrazumevana forma za uređivanje verzije izveštaja sadrži mnogo zanimljivih stvari, ali nigde ne radi sa FN i PN, a čak i sa osnovnim podešavanjima radi više za čitanje (osim što briše izbor, redosled, konvencije).

Dio 2

Rad sa postavkama i FN-om kroz njihovu kolekciju je gotovo uvijek prihvatljiv, ali važno je zapamtiti da se suština “trećeg nivoa” mijenja. Prvi nivo uvek sadrži podrazumevane postavke samog sistema kontrole pristupa, one se takođe pojavljuju implicitno u izvoru dostupnih podešavanja; na drugom nivou – podešavanja korišćene opcije. Ali ovdje vam logika omogućava da ili "prepišete" osnovne upute ili ih zanemarite. Ali rad s PN-om više ne dopušta slobode, a suptilne manipulacije se moraju raditi pomoću posebnih metoda, a ponekad i privremenih pomoćnih posredničkih objekata, na primjer:

Comp=NewDataCompositionSettingsComposer; // također možete pokrenuti // comp.Initialize(SomeSettingsComposer.GetSourceofAvailableSettings()); comp.LoadSettings(SomeSettingsComposer.Settings); SomeSettingsComposer.LoadCustomSettings(comp.CustomSettings);

Graditelj postavki ima metodu (), koji učitava vrijednosti korisničkih postavki koje su proslijeđene kao parametar metodi. Metoda GetSettings() vam omogućava da dobijete kopiju trenutnih postavki (uzimajući u obzir korisnička podešavanja). Metoda DownloadSettings() učitava prosleđena podešavanja u alatku za pravljenje podešavanja (korisničke postavke se takođe ponovo popunjavaju na osnovu prosleđenih podataka, uzimajući u obzir prisustvo ključeva, pogledajte primer ispod).

Primjena prilagođenih postavki na glavne postavke se vrši u metodi GetSettings() graditelj postavki. Izvode se sljedeće radnje:

* Za tipove DataCompositionSelectionElement, sadržaj elemenata se kopira u odgovarajuće elemente prilagođenih postavki.

* Za tipove odabira rasporeda podataka, elementi koji se nalaze u glavnim postavkama i označeni kao nedostupni ostaju nepromijenjeni. Elementi iz PN se prenose na glavne. Dodaju se na kraj kolekcije za odabir.

* Za tipove DataCompositionSelectionElementGroup, svojstvo Usage se postavlja u odgovarajući element glavnih postavki (na osnovu znaka upotrebe PN elementa).

dio 3

Prilikom formiranja konačnih postavki, da citiramo ITS, različite postavke se kombinuju na sljedeći način:

* Ako je bilo koja vrsta podešavanja u potpunosti označena kao prilagođena, onda rezultirajuća podešavanja uključuju PN. U ovom slučaju, ako su neki elementi postavki označeni kao nedostupni, tada će ove postavke biti smještene u rezultirajuće postavke iz svojstva Postavke Composer.Settings.

* Ako je bilo koja vrsta podešavanja označena kao prilagođena ne u potpunosti, već element po element, tada će elementi označeni kao prilagođeni biti uključeni u rezultirajuće postavke iz svojstva Postavke Composer.CustomSettings, a elementi označeni kao nedostupni će biti preuzeti u rezultirajuće postavke iz svojstva Postavke Composer.Settings .

* Fiksne postavke se dodaju rezultujućim postavkama "kao što jesu". Istovremeno, neprihvatljivo je da FN i PN imaju postavke istog imena, na primjer, odabir sa istom lijevom vrijednošću u uvjetu. Napominjem da je čak i potpuna podudarnost svih svojstava ovih uslova zabranjena. Da budem iskren, malo je nelogično.

Dozvolite mi da napomenem da ako bilo koji fragment postavki potpadne pod djelovanje funkcionalne opcije i mora biti ograničen, sistem radi "tiho" - uklanja ovaj fragment sa svih strana, ne prijavljuje ništa, a tokom programskih manipulacija u vezi s takvim fragmentom , obrađuje greške u stanju mirovanja. Ne daje nikakve rezultate, ali ni kod nema efekta. Međutim, moguće je da se različita izdanja ponašaju drugačije.

dio 4.

Proširenje obrasca za izvještaj nam daje parametre “FN” i “PN”, ali se nigdje ne preporučuje da ih direktno popunjavamo prosljeđivanjem u obrazac. Kao što su eksperimenti pokazali, bez dodatnih plesova s ​​tamburom, sadržaj ovih parametara se zanemaruje - prepisuje se kada se linker inicijalizira tokom procesa otvaranja i kada se primaju prethodno sačuvani PN-ovi. Preporučljivo je raditi sa PN ključevima, pomoću kojih ih možete preuzeti iz skladišta postavki i zatim ih otvoriti i koristiti, a to se radi automatski na strani obrasca izvještaja, a ne na obrascu za pozivanje.

Parametar “Izvor dostupnih postavki” se automatski prevodi u informacije o graditelju prilikom kreiranja obrasca na serveru i ne može se zaobići. Ili bolje rečeno, može, ali to će imati efekta tek nakon potpune redefinacije cijelog lanca povezanih objekata. Gde GetSourceAvailableSettings() će vratiti Undefined do kraja svih događaja otvaranja obrasca.

Dozvolite mi da napomenem da parametri forme, koji u suštini nisu ključni parametri, „razvlače“ svoju akciju na nekoliko događaja ako se prilikom otvaranja postavi zastavica formacije. Da, u slučaju ProcessingCheckFillOnServer, pozvan prilikom otvaranja i formiranja, parametar “Izbor” će biti dostupan, ali sa njim, ali pozvan jednostavnim klikom na dugme “Generiši”, više neće biti dostupan. To je zbog činjenice da se svi ovi događaji obrađuju u jednoj "posjeti" serveru, ako je formiranje prilikom otvaranja omogućeno, a tek na samom kraju se kontrola prenosi na klijenta i poziva WhenOpening. U ovom slučaju, ne-ključni parametri se prirodno gube.

Opšti redosled izvođenja događaja prilikom otvaranja obrasca sa zastavicom za generisanje izveštaja po otvaranju (nešto više od opisanog u „Profesionalni razvoj“):

Kada je CreatedOnServer

Prije otpremanja opcije na server

Prilikom učitavanja OptionOn Server

Prije učitavanja korisničkih postavki na server

Prilikom učitavanja korisničkih postavki na server

Prilikom ažuriranja sastava korisničkih postavki na serveru

ProcessingCheckFillOnServer

WhenOpening

U ovom slučaju, ni opcija ni PN se ne mijenjaju osim ako nisu uloženi posebni napori.

dio 5.

Sada pogledajmo detaljnije zadatak otvaranja obrasca izvještaja sa njegovom konstrukcijom i unaprijed određenim odabirom. Kratke informacije o tome postoje informacije na ITS-u i in metodološke preporuke, ali tu je pokriven samo sam princip i suptilnosti se ne otkrivaju. Dakle, da biste kontekstualno pozvali izveštaj, morate proslediti parametar “GenerateOnOpen” njegovom obliku, jednak True; i parametar Selection koji sadrži strukturu. Ključevi strukture su imena ACS polja ili ACS parametara, a vrijednosti su njihove vrijednosti. Citirajući SP, ako postoji ACS parametar s imenom koje odgovara imenu strukturnog ključa, tada će vrijednost biti postavljena na njega. Ako nema parametra, ali postoji polje, tada će se ovom polju dodati izbor. Istovremeno, ako postoji parametar i polje istog imena, sistem će ga jednostavno tiho ignorirati i neće ništa instalirati.

"Profesionalni razvoj" daje primjer promjene (tj. presretanja i rekonfiguracije) PN "u hodu" u događaju Prije učitavanja korisničkih postavki na server, gdje se prosljeđuje argument koji sadrži trenutni PN. U stvari, to nije uvijek slučaj – na primjer, može postojati slučajeve u kojima greška u spremanju PN-a u prethodnoj sesiji ili nedosljednosti između postavki, FN-a i PN-a dovode do toga da argument “Postavke” bude prazan. I ono što je najzanimljivije je da ga u ovom događaju neće biti moguće potpuno rekonfigurirati; to se može učiniti samo „na kraju“ niza događaja, odnosno u slučaju ProcessingCheckFillOnServer.

Hajde da vidimo šta imamo pre nego što učitamo PN na server.

Za jednostavan slučaj, kada ništa nije unapred podešeno u ACS-u i nijedan element nije uključen u PN, situacija je sledeća: Podešavanja – prazno; FN – sadrži ispravan izbor; Mon sadrži praznu selekciju. Oblikovanje radi ispravno, ali sa korisničke tačke gledišta interfejs je u suprotnosti sa unutrašnjim elementima i obeshrabruje - izbor radi, ali nije vidljiv. Slično, ako u postavkama strukture opcija omogućite Odabir u PN, izvještaj se također gradi uzimajući u obzir odabir, ali korisnik također ne vidi nijedan odabir.

Postavimo predselekcije (jednake praznim vrijednostima) u postavkama ACS-a u Konfiguratoru i uključimo ih u PN. U teoriji, FN-ovi bi trebali popuniti Postavke, a oni bi trebali popuniti PN, ali u stvarnosti imamo: u Postavkama - Izbor sa traženim elementom, ali praznom desnom vrijednošću, FN-ovi sadrže ispravan odabir, a PN i dalje ne sadrže ništa. Osim toga, u ovom slučaju izvještaj neće biti izgrađen, jer desna vrijednost odabira je prazna, uprkos vrijednosti proslijeđenoj u parametru Select.

Pokušaj rada sa PN elementima također ne daje rezultate. Za PN element možete promijeniti samo oznaku „Koristi“ i učešće u „Brzo“. Vrijednost odabira na interfejsu će biti prazna, sistem neće generisati greške. Slično, pokušaj rada sa PN Selectionom će također funkcionirati; u debugger-u će prava vrijednost biti vidljiva kao ispravno popunjena, ali nećete vidjeti ništa na interfejsu. Podsjećam da je nemoguće promijeniti sastav PN. Stoga su potrebni dodatni trikovi. Na primjer:

&Na serverskoj proceduri SetPresetSelections(UserSettings) Ako nije Parameters.Property("Selection") Onda vrati EndIf; Ako je Parameters.Selection.Quantity()=0 Onda vrati EndIf; rTypeEO=Tip("Element za odabir sastava podataka"); Za svaki ključ From Parameters.Selection Loop pField=NewDataCompositionField(key.Key); // If (ValueType(kiz.Value)=Type("Array") iliValueType(kiz.Value)=Type("ValueList")) i kiz.Value.Quantity()>1 Tada pViewComparison=DataComposition.InLLTy; Inače pComparisonType=DataCompositionComparisonType.Equals; endIf; // pNecessarySelection = Nedefinirano; // vidi postoji li odabir u korisničkim postavkama pNecessaryEO=Nedefinirano; // vidi postoji li poseban element za odabir DataComposition u korisničkim postavkama Za svaki elnastr From UserSettings.Elements Cycle If TypeValue(elnastr) = Type("DataComposition Selection") i pNecessarySelection=Undefined Tada // može postojati samo jedan pNecessarySelection= elnastr; // ovo bi se moglo uraditi i izvan petlje, ali je potrebno sortirati korisničke postavke radi elemenata... U suprotnom, ako TypeZnch(elnastr) = pTypeEO Onda // je ovo element za odabir, može biti mnogo od njih, ali nas zanimaju oni koji nisu inicijalizirani ili sa obaveznim poljem Ako elstr.LeftValue=pField ili elstr.LeftValue=Nedefinirano i rNeedEO=Nedefinirano Tada pNeedEO=elstr; endIf; endIf; EndCycle; // Ako je pRequiredSelection<>Undefined Onda // ide kao prioritet pNecessaryEOFromSelection = Undefined; Za svaki elotb Iz ciklusa pNecessarySelection.Elements Ako je elotb.LeftValue=pField Onda pNecessaryEOfromSelection=eloteb; Abort EndIf; EndCycle; Ako je pNecessary EO iz odabira = Undefined Tada je pNecessary EO iz odabira = pNecessary Selection.Elements.Add(pType of EO); pNeedEOFromSelection.LeftValue=pField; endIf; pNecessaryEOfromSelection.ComparisonType=pComparisonType; pNecessaryEOFromSelection.RightValue=kiz.Value; pNecessaryEOFromSelection.Use=Tačno; // rNeededEO.Use=False; InačeIf pNecessarySelection=Nedefinirano i pNecessaryEO<>Undefined Onda // stavljamo na element pNecessaryEO.LeftValue=pField; pNecessaryEO.ComparisonType=pComparisonType; pNeedEO.RightValue=kiz.Value; pNeedEO.Use=Tačno; endIf; pNeed=Nedefinirano; Za svaki elotb From Report.ComposerSettings.Settings.Selection.Elements Loop // na prijateljski način, trebalo bi postojati rekurzivno pretraživanje! Ako je TypeValue(elotb)=pTypeEO i elotb.LeftValue=pField Tada je pNeed=elotb; Abort EndIf; EndCycle; Ako je pNeed = Undefined Onda pNeed = Report.Settings Composer.Settings.Selection.Elements.Add(pEOType); pNeed.LeftValue=pMargin; endIf; pNecessary.ComparisonType=pComparisonType; pNeed.RightValue=kiz.Value; pNeed.Use=Tačno; //EndCycle; Report.Settings Composer.FixedSettings.Selection.Items.Clear(); // inače će reći da se elementi sijeku/protivureče Kraj procedure

Najispravniji način da ovo pozovete je:

&Na serveru Procedura Obrada Provere popunjavanja na serveru (Neuspeh, provereni detalji) Postavite unapred definisane selekcije (Izveštaj. Podešavanja Linker. Korisničke postavke); Kraj procedure

Tada će kontekstni poziv, na primjer, iz obrasca direktorija izgledati ovako:

&OnClient procedura OpenReport(Command) Ako je ValueFilled(Object.Link) Onda ot=Nova struktura("LinkToDirectory",Object.Link); // ovako je imenovano polje u SDS izvještaju Parametri obrasca = Nova struktura ("Izbor, generiraj prilikom otvaranja", odaberite, Tačno); OpenForm("Report.Report1.Form.ReportForm",FormParameters,ThisForm); endIf; Kraj procedure

dio 6.

Ako je potrebno, promijenite postavke izvještaja dok radite s njim, uklj. i pri pokretanju i nakon otvaranja, najispravniji način je da se promijeni „od početka“, tj. iz postavki ACS-a. Promjena ACS šeme se vrši samo sa objektom Report (ili External Report), a ne sa podacima obrasca, i samo po sebi ne mijenja ništa - u Postavkama i u PN-u ostaje isto kao što je bilo, a FN može ostati prazan. Stoga, ovisno o našim zadacima:

Nakon izvršenja

Report.Settings Composer.LoadSettings(SKD.DefaultSettings)

Samo se opcija mijenja, i ništa više;

Nakon izvođenja tehnike date u stavu 2 (pomoću „posrednika“ i metode LoadCustomSettings()

radi samo ako resetujete trenutni PN koristeći sučelje. Sami po sebi, ako se promijeni opcija, oni se neće promijeniti. U ovom slučaju, odabir se mijenja, ali se ne dodaje novi element odabira.

Nakon izvršenja

ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.All)

platforma samo tiho pada. Testirano na nekoliko različitih izdanja. A pozivanje režima za prikaz postavki samo za brze nema smisla - nismo utjecali na njihov sastav, tako da se ionako ništa neće promijeniti.

A budući da još uvijek moramo u potpunosti promijeniti ne samo interne odabire, već i prikaz na obrascu izvještaja iu povezanim oblicima, moramo ili promijeniti samo Odabir, ili postupiti na sljedeći način:

&Na serverskoj proceduri ChangeSKD() pObject = Form AttributesValue("Izvještaj"); selection=pObject.DataCompositionScheme.SettingsOptions.Get(0).Settings.Selection; eo = selection.Elements.Add(Type("DataCompositionSelectionElement")); eo.LeftValue=NewDataCompositionField("LinkToDirectory.Field1"); eo.ComparisonType=DataCompositionComparisonType.Equals; eo.RightValue=Tačno; eo.Use=Tačno; ValueVFormAttributes(pObject,"Report"); Report.SettingsLitter.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.Restore(); // poželjno, iako to još uvijek ne utječe na FN. // u stvari, to je upravo ono što se može nazvati promjenom sastava PN-a Za svaki email From Report.ComponentSettings.Settings.Selection.Elements Ciklus email.DisplayMode=ElementDisplayModeDataCompositionSettings.QuickAccess; Ako EmptyString(el.UserSettingsIdentifier) ​​onda // možete koristiti metodu electronicSetIdentifier za PN element, pogledajte njegovu pomoć u SP-u, tamo je sve sasvim jasno e.UserSettingsIdentifier="ID123"; // važno - identifikator može biti BILO KOJI, a ne UUID ili GUID! el.ViewUserSettings="Test"; endIf; EndCycle; comp=NewDataCompositionSettingsComposer; comp.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.LoadCustomSettings(comp.CustomSettings); Za svaki email Iz Report.Settings Composer.CustomSettings.Elements Ciklus email.DisplayMode=ItemDisplayModeDataLayoutSettings.QuickAccess; // povući EndCycle na obrazac za izvještaj; // i sada će ovo imati učinak: ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.QuickAccess); Kraj procedure

Zapravo, ovu mehaniku možete proučavati dugo vremena. Ova publikacija je nastala iz proučavanja načina rješavanja jednog specifičnog problema i stoga je prilično jednostrana; ali pretpostavljam da se o unutrašnjoj logici postavki, posebno korisničkih, može napisati posebna knjiga, ništa suptilnija od Hrstaljeva. Nažalost, nemam ni energije ni vremena za ovo. Ko god smatra da su konkretni razvoji korisni, već je dobar.

Neke stvari su eksperimentalno razjašnjene i stoga su kontroverzne. Oni koji znaju više su pozvani da kritikuju i komentarišu.