1c iestatīt standarta formas iestatījumus. Atlases pārskatos. Iestatījumu veidotāja nianses. Veidlapu iestatīšana un darbs ar sarakstiem

Apakšsistēma 1C 8.3— metadatu koka objekts, kas ir atbildīgs par konfigurācijas komandu saskarnes izveidi.

Zemāk rakstā mēs runāsim par apakšsistēmām, sākot no versijas 8.2.

Fakts ir tāds, ka 8.1 versijai (kā arī parastajai 8.2 lietojumprogrammai) bija arī apakšsistēmas, taču tās kalpoja pavisam citiem mērķiem, visticamāk, izstrādātājam, nevis lietotājam. Izmantojot apakšsistēmas 8.1 versijā, dažādas funkcionalitātes parasti tika atdalītas. Apakšsistēmas palīdzēja arī kombinējot dažādas 1C konfigurācijas - bija iespējams norādīt, kuru sistēmu pārsūtīt.

1C apakšsistēmas un programmētāja saskarne

Versijā 8.3 un 8.2 apakšsistēmas ir galvenais rīks komandu lietotāja interfeisa izveidei. Apakšsistēmas metadatu objektiem ir hierarhiskā struktūra Lai interfeisā konfigurētu “apakšizvēlni”, jāpievieno pakārtota apakšsistēma:

Rekvizīti un iestatījumi

Apskatīsim apakšsistēmu iestatījumus un rekvizītus konfiguratorā:

Saņemiet 267 video nodarbības 1C bez maksas:

Iekļaut komandu saskarnē— ja esat aizmirsis uzstādīt šo karogu, apakšsistēma netiks parādīta saskarnē.

Poga atver interfeisa iestatījumu paneli, kurā var konfigurēt saskarnes atkarībā no pašreizējā lietotāja lomas:

Bilde— apakšsistēmai piešķirtais attēls tiek parādīts uzņēmuma režīmā. Varat atlasīt standarta attēlu vai pievienot savu, vispirms izveidojot to kā konfigurācijas objektu Bilde:

Uz cilnes Funkcionālās iespējas norāda funkcionālo opciju sarakstu, kurās tiek izmantota šī apakšsistēma.

Tab Savienojums definē metadatu objektu kopu, kas piedalās noteiktā apakšsistēmā.

Uz cilnes Cits varat aprakstīt apakšsistēmas palīdzību un norādīt iestatījumus Iekļaut palīdzības saturā— vai iekļaut šo palīdzības sadaļu vispārīgajā fona informācija pēc konfigurācijas.

Ja pārvaldītajā saskarnē neredzat pārskatu vai apstrādi

Šī problēma ļoti bieži rodas iesācēju izstrādātāju vidū - šķiet, ka apakšsistēmai tika pievienots ziņojums vai apstrāde, bet tas nav redzams.

Pirmais iemesls tam var būt tas, ka objektam nav definēta kontrolēta forma.

Otrs iemesls ir tas, ka objekta cilnē Komandas ir atzīmēta izvēles rūtiņa “Izmantot standarta komandas”. Tas ir saistīts ar faktu, ka, lai atvērtu apstrādi, var aprakstīt vai nu savu procedūru, vai izmantot standarta procedūru:

Raksts turpina sēriju “Pirmie soļi 1C attīstībā”.

Konfigurācijā platformā 1C:Enterprise, parādot informāciju, visbiežāk tiek izmantotas tabulas, kurās tiek parādīti dažādi informācijas saraksti. Darbs ar šādiem sarakstiem var notikt gan saraksta, gan elementa formā (apstrāde).

Šajā rakstā mēs iepazīsimies ar šīm sarakstu pielāgošanas iespējām, kā arī apskatīsim citas veidlapu pielāgošanas iespējas no lietotāja puses.

Piemērojamība

Rakstā ir apskatīta pārvaldītā saskarne 1C 8.3.4.482 platformā izstrādātās konfigurācijas versijā “Version 8.2”.

Ja strādājat ar konfigurācijām, kas atbalsta šo saskarni, tad informācija ir svarīga jums un pašreizējās versijas platformas.

Ja strādājat jaunajā Taxi saskarnē, dažu konfigurācijas komandu nosaukumi, kā arī vispārīgā darbību secība var nedaudz atšķirties.

Turklāt pašreizējā platformas versija ir pievienojusi jaunas meklēšanas iespējas sarakstos.

Veidlapu iestatīšana un darbs ar sarakstiem

Pārvaldīto formu elementiem ir iespējams mainīt redzamību un dažus citus rekvizītus. Šiem nolūkiem iekšā pārvaldāmā formā izvēlnē Visas darbības kalpo kā prece Mainīt formu.

Pēc noklikšķināšanas uz šīs komandas parādīsies logs “Veidlapas iestatījumi”.

Parādītajā logā varat izmantot izvēles rūtiņas, lai mainītu dažu detaļu redzamību. Šajā gadījumā veidlapa tiek automātiski mērogota.

Varat mainīt detaļu secību. Pievienojiet jaunu grupu un ievietojiet tajā dažas detaļas (elementus), definējot to grupēšanas iespēju (horizontāli, vertikāli).

Grupā iekļautā informācija tiks attiecīgi publicēta. Turklāt varat konfigurēt elementu rekvizītus, piemēram, platumu, augstumu un galvenes datus.

Varat definēt atribūtus, kas tiks aktivizēti, atverot veidlapu.

Svarīga iezīme ir iespēja veidlapai pievienot jaunus laukus. Tas kļūst iespējams, izmantojot atsauces tipa atribūtus.

Piemēram, veidlapā ir atsauces tipa atribūts Darījuma partneris, var pievienot Kontaktpersona, Ja šis rekvizīts atrodas direktorijā “Darījumu partneri”.

Ja nepieciešams, papildu laukus var noņemt. Konfiguratorā izveidotos laukus nevar izdzēst. Visi lietotāja veiktie iestatījumi tiek saglabāti.

Lai atgrieztos pie standarta iestatījumiem izvēlnes logā Form Settings Visas darbības jums vajadzētu atlasīt vienumu Uzstādīt standarta iestatījumi .

Papildus veidlapu pielāgošanai pārvaldītajā saskarnē ir iespējams pielāgot sarakstus (direktoriju elementus, dokumentus).

Saraksta veidā izvēlnē Visas darbības satur īpašu komandu Pielāgojiet sarakstu.

Tiks atvērts logs “Saraksta iestatījumi”. Šajā logā varat atlasīt, kārtot, definēt nosacījumu formatējumu un grupēšanu.

Attēlā parādīta veidlapa atlases rediģēšanai.

Atlasi var veikt, izmantojot vairākus laukus. Šajā gadījumā pēc noklusējuma atlase darbosies atbilstoši nosacījumam UN. Varat arī izmantot nosacījumus VAI un NĒ.

Lai izmantotu nosacījumu VAI (NOT), jums jāpievieno atbilstošā grupa (OR Group, NOT Group), izmantojot komandu Grupas nosacījumi.

Attēlā parādīta forma kārtošanas lauku definēšanai.

Grupēšanu var konfigurēt. Attēlā ir atlasīts grupēšanas lauks Darījuma partneris.

Nākamajā attēlā parādīts, kā tiks veikta grupēšana.

Varat brīvi krāsot sarakstu vai piemērot citus nosacītā noformējuma elementus (fonta atlasi, specifisku formatējumu) atbilstoši dotajam nosacījumam, kā arī izvēlēties formatējamo lauku sarakstu.

Attēlā parādīts lauka fona nosacītās projektēšanas rezultāts Summa.
Ja summa ir > 100 000.

Jāpiebilst, ka direktorijus ir iespējams apskatīt hierarhijas režīmā.

Izmantojot vienumu, var konfigurēt direktoriju hierarhisku apskati Skatīšanas režīms izvēlnē Visas darbības. Varat izvēlēties vienu no iespējām: Hierarhisks saraksts, Saraksts, Koks.

Ir iespējams arī konfigurēt savu direktoriju elementu grupēšanu pēc noteiktām detaļām.

Piemēram, varat grupēt preces pēc piegādātāja. Piemērs ir līdzīgs tam, kad aplūkojām “Preču un pakalpojumu pārdošanas” dokumentu grupēšanu pēc darījuma partneriem.

Ērta funkcija ir vairākkārtēja atlase sarakstos un sekojoša grupas darbību izpilde (publicēšana, atcelšana, dzēšanas atzīmes noņemšana).

Sarakstā esošie objekti tiek atlasīti, turot nospiestu taustiņu Shift vai Ctrl.

Noteiktas vērtības meklēšanai sarakstā ir savas īpatnības. Meklēšana darbojas atlases režīmā. Paliek tikai tās rindas, kas atbilst meklēšanas nosacījumiem.

Lai meklētu pēc vērtības pašreizējā kolonnā, vienkārši novietojiet kursoru uz vajadzīgās kolonnas un noklikšķiniet uz pogas Atrast komandu panelī. Parādīsies logs, kurā arī jānoklikšķina uz pogas Atrast.

Lai padarītu meklēšanu precīzāku, varat izmantot izvēles rūtiņu Meklēt atrast.

Meklējot atsauces tipa datu rindu (piemēram, mērvienības), jāizvēlas atbilstošā meklēšanas opcija ...(pēc rindas).

Tas beidzas ar sarakstiem un to konfigurēšanas veidiem. Nākamajā rakstā mēs turpināsim iepazīties ar interfeisu un aplūkosim ērtu lietotāja informēšanas rīku, par kuru mēs iepriekš neesam runājuši. Kas tas par instrumentu? :)

Es uzskatu, ka nav nepieciešams stāstīt, kas ir piekļuves kontroles sistēma, iestatījumu kompozīcija un kopumā viss objektu kopums, kas paredzēts darbam ar piekļuves kontroles sistēmu. Galvenās lietošanas jomas, neskaitot viltīgas darbības kodā, ir dinamiski saraksti un atskaites, un abos gadījumos ļoti nozīmīga funkcionalitāte paliek aiz kadra. Mēs bieži pat neaizdomājamies par visu procesa dalībnieku uzvedības un attiecību loģiku, jo Mēs parasti risinām diezgan vienkāršas problēmas vai paļaujamies uz platformas noklusējuma iestatījumiem. Bet tur, kur valda klusumi, ir arī iekšējā loģika, sava veida 1C “nepakalpojums”, kura augļus dažreiz ir grūti un nepārprotami pārvarēt, lai sasniegtu vēlamo efektu, un tajā pašā laikā pietiek tikai pareizi lietot instrumentus.

Interesenti var izlaist 1.–4. daļu un doties tieši uz piemēriem.

Es mēģināšu nedaudz sīkāk pakavēties pie ACS atlases darbības, ja tās tiek izmantotas pārskatos. Es domāju, ka uzvedība ir iekšā dinamiskie saraksti, ar vairākām atrunām, būs tuvu. Tātad izlases atskaitēs, nedaudz teorijas un tad konkrēti piemēri.

Tiek izmantotas SP 8.3.6 un jaunākas versijas, ITS sadaļas (10.3.7.5. punkts utt.), grāmata “Profesionālā attīstība 1C-Enterprise 8 sistēmā” (Kazaņa, 2012, otrais sējums). E. Hrustaļeva grāmatā par šo tēmu vispār nebija nekā saprotama.

1. daļa

Iestatījumu veidotājam, kā zināms, ir kolekcijas “Iestatījumi”, “Fiksētie iestatījumi” (turpmāk “FN”) un “Pielāgoti iestatījumi” (turpmāk “CU”). Pārskatam var būt vairākas iespējas, un savienojumi starp opciju N, PN un FN ir ļoti unikāli. Tāpat neaizmirsīsim par avotu pieejamie iestatījumi, un tā “sencis”, kas parasti ir pati ķēde, kurai ir arī savi noklusējuma iestatījumi.

* Iestatījumi – iestatījumi, kas izveidoti Configurator režīmā un mainīti atskaites versijas rediģēšanas režīmā;

* UserSettings – iestatījumi, kurus lietotājs maina režīmā “1C:Enterprise”, tikai izmantojot interfeisu;

* FixedSettings – tie iestatījumi, kas ir iestatīti no iebūvētās valodas, t.sk. sistēmas netieši nosaka. Šis rekvizīts satur atlases vērtības, kas tiek pārsūtītas uz formu, izmantojot tās parametrus (struktūra “Atlase”).

Iestatījumi un FN pēc dizaina ir līdzīgi, un tiem ir “Datu sastāva atlases” tipa kolekcija “Atlase”, kas ir pieejama sastāva maiņai jebkurā pārskata pastāvēšanas laikā. Tajā pašā laikā iestatījumi ir pieejami saskarnes izmaiņām, rediģējot variantu, taču FN nav pieejami vispār. Savukārt PN ir “putra”, kur vienādi elementi var būt gan pati “Atlase”, gan atsevišķi “Datu kompozīcijas atlases elementa” tipa objekti (tā sauktais ligzdotais objekts). Neskatoties uz atbilstošo metožu pieejamību, nav iespējams programmatiski mainīt PN elementu kolekcijas sastāvu, ja tie ir paša pārskata PN, un tos nav veidojis dizainers “no nulles” - 1C ziņos, ka “Lietotāju kolekcija iestatījumi nevar mainīt tā sastāvu, jo tas ir saistīts ar izkārtojuma iestatījumu datiem." ITS saka: “Īpašums nav rakstāms, izmantojot iebūvēto valodu.”, bet, kā redzēsim vēlāk, PN ir iespējams ietekmēt. Objektu “putrai” ir iekšējās komunikācijas– tiek pārbaudīta nosacījumu konsekvence, veidojot atskaiti un mainoties sastāvam. Uz ITS mēs lasām: “Elementi, kas paši ir atzīmēti kā pielāgoti, netiks pievienoti. Piemēram, pielāgotā atlasē netiks iekļauts atlases elements, kas ir atzīmēts kā pielāgots. Elementi, kas satur pielāgotus elementus, netiks pievienoti. Piemēram, nosacījumu grupa netiks pievienota, ja grupā ir elementi, kas atzīmēti kā pielāgoti. Ligzdotiem elementiem rekvizīts DisplayMode netiek analizēts. Tie tiek pievienoti vai netiek pievienoti kopā ar vecāku elementi”. Tādējādi aizkulisēs darbojas objektu “vecākais vecums”. Šajā gadījumā jūs varat iegūt efektu, kad interfeiss ļauj norādīt pretrunīgas atlases variantam un tā PN, kā arī PN ietvaros.

Šķiet, ka "vecākais" ir iespēja. Bet, noklikšķinot uz “Vairāk” / “Mainīt opciju” un apstiprinot izmaiņas atvērtajā veidlapā, tiek izsaukts veidlapas notikumu apstrādātājs , šajā gadījumā atlase tiek parādīta panelī "Pamata" veidlapā, kas tiek izsaukta no "Iestatījumi...", un tiek parādīta pārskata veidlapā, bet NAV parādīta cilnē "Atlase"; Turklāt vai nu tas uzreiz parādās gan galvenajā atskaites veidlapā, gan veidlapā “Iestatījumi...” (ja ir karodziņš “Iekļaut lietotāja iestatījumos”), vai arī ne tur, ne tur. Bet jebkurā gadījumā tas NEBŪS veidlapas “Iestatījumi...” cilnē “Atlase”. Atšķirību starp cilni "Pamata", veidlapu "Iestatījumi..." un galveno pārskata veidlapu nosaka lauks "Rediģēšanas režīms" (parasti - tikai sadaļā "Iestatījumi", ātri - arī pašā pārskata veidlapā), bet es domāju, ka visi to zina. Starp citu, vērtības “Atlase” un “Ātri” nekādā veidā netiek sinhronizētas un var būt pretrunā viena otrai, bet “Ātri” ziņojuma veidlapā un iestatījumu veidlapā ir stingri sinhronas. Tātad, rediģējot variantu, tas pats tiek mainīts (bet tā ID un nosaukums nemainās), bet PN NAV mainīti (t.i., pat ja mēs runājam par tiem, t.i., par karogu, lai iekļautu šo vai citu elements PN ).

Noklikšķinot uz “Atlasīt opciju...” un apstiprinot izmaiņas atvērtajā veidlapā, notikumi tiek aktivizēti šādā secībā:

Augšupielādējot OptionOn Server

Atjauninot servera lietotāja iestatījumu sastāvu

Šajā gadījumā ne opcija, ne PN nekādā veidā nemainās. No šejienes ir skaidrs, ka opcija un iestatījumi, ja tie ir pievienoti, nekādā gadījumā nav tieši saistīti.

Noklikšķinot uz "Iestatījumi..." un apstiprinot izmaiņas atvērtajā veidlapā, tikai tiek aktivizēts notikums Atjauninot servera lietotāja iestatījumu sastāvu(šajā gadījumā PN tiek mainīti, bet skati un atslēga (ja to nebija) netiek saņemti; ja PN objekta “Atlase” elementiem ir iespējots “Ātrs”, tad papildus “Atlase”, tās faktiskie elementi parādās kā lauki, t.i., darbojas līdzīgi kā ligzdotie elementi. Šie iestatījumi tiek saglabāti, aizverot un atjaunoti nākamreiz, kad ievadāt veidlapu. Tas neaizskar un nemaina opciju.

Noklikšķinot uz "Vairāk"/"Iestatīt standarta iestatījumus" iestatījumu veidlapā (kā arī uz vienuma "Standarta iestatījumi" opcijas rediģēt), tikai tiek aktivizēts notikums. Atjauninot servera lietotāja iestatījumu sastāvu. Šajā gadījumā opcija tiek mainīta, bet PN mainās. Ja opcija tika mainīta iepriekš, tā paliek mainīta (netiek atiestatīts ne mainītais karodziņš, ne faktiskie iestatījumi).

Variantu rediģēšanas veidlapas struktūras kokā noklikšķinot uz “Pielāgota iestatījumu elementa rekvizīti”, tiek pievienots objekts “Atlase”, kas izrādās tukšs un nekādā veidā netiek sinhronizēts ar esošo variantu atlasi un esošajiem ligzdotajiem atlases elementiem. variants nekādi nemainās.

Tāpēc ieteikums: ja jums ir jāiestata noteiktas atlases režīmā “Konfigurators”, lai netiktu lauzts ar kodu un lai tās nebūtu opcijā, bet būtu atskaites saskarnē, nevajadzētu manipulēt ar atlasi. opcijas elementus, mainot to rekvizītus, bet pašu atlasi, izmantojot pogas “Elementa rekvizīti…” un “Pielāgoti iestatījumi”.

Lai PN pievienotu kaut ko, kas parādās sadaļā Iestatījumi, ir jāveic darbības ar kodu vai saskarni, bet iestatījumu dzēšana un notīrīšana ietekmē PN nekavējoties un bez jebkādiem atjauninājumiem, piemēram:

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

Pirms atskaites veidlapas aizvēršanas sistēma jautā tikai par to, vai variantā ir notikušas izmaiņas. Ja PN ir veiktas izmaiņas, tās tiks automātiski saglabātas bez jebkādiem jautājumiem, kā arī tiks automātiski mēģināts lietot nākamajā darba ar atskaiti sesijā.

Piezīmes:

Ja iestatījumu pielietošanā rodas vairākas kļūdas, vispirms tiek parādīts ziņojums par problēmu, un pēc tam joprojām notiek kompozīcija, notikums tiek izsaukts un ziņojumu ģenerēšana. Šajā gadījumā FN, pat ja tie pastāvēja, joprojām tiek ignorēti, un tikai iestatījumi spēlē lomu.

Pievienojot atlasi veidlapā “Mainīt opciju”, tas tiek darīts uzreiz ar karodziņu “Iekļauts PN”, taču, atkārtoju, no iebūvētās valodas viedokļa PN paliek nemainīgs.

Varianta variācijas iestatīšana un PN variācijas iestatīšana nav tieši saistītas; tie ir divi dažādi izmaiņu virzieni.

Cita starpā PN ir “Papildu iestatījumi”. Nekad neesmu varējis saprast, ko un kurā brīdī tās pilda. Lai gan pārskatā ir iestatījumi “atzīmēti atlasē un nosacījuma dizainā” kā pielāgoti (saskaņā ar kopuzņēmumu), bet papildu iestatījumi visos gadījumos tās bija tukšas. ITS par to nekas nav minēts.

Neskatoties uz kopuzņēmuma paziņojumu, PN ir lieliski serializēti xml formātā.

Ja lietošanai ir iekļauti gan neatkarīgi atlases elementi, gan pati atlase, tad pārskats tiek sastādīts pareizi, bet attēlots dublē informāciju par izveidoto atlasi galīgajā izkārtojumā.

Atskaites versijas rediģēšanas noklusējuma veidlapā ir daudz interesantu lietu, taču tā nekur nedarbojas ar FN un PN, un pat ar pamata iestatījumiem tā vairāk darbojas lasīšanai (izņemot to, ka tā notīra atlasi, secību, konvencijas).

2. daļa

Darbs ar iestatījumiem un FN, izmantojot to kolekciju, ir gandrīz vienmēr pieņemams, taču ir svarīgi atcerēties, ka “trešā līmeņa” būtība mainās. Pirmajā līmenī vienmēr ir pašas piekļuves kontroles sistēmas noklusējuma iestatījumi, tie arī netieši parādās pieejamo iestatījumu avotā; otrajā līmenī – izmantotās opcijas iestatījumi. Bet šeit loģika ļauj vai nu “pārrakstīt” pamatā esošās instrukcijas, vai arī tās ignorēt. Bet darbs ar PN vairs nepieļauj brīvības, un smalkas manipulācijas jāveic, izmantojot īpašas metodes un dažreiz pagaidu palīgobjektus, piemēram:

Comp=NewDataCompositionSettingsComposer; // varat arī sākt // comp.Initialize(SomeSettingsComposer.GetSourceofAvailableSettings()); comp.LoadSettings(DažiSettingsComposer.Settings); DažiSettingsComposer.LoadCustomSettings(comp.CustomSettings);

Iestatījumu veidotājam ir metode (), kas ielādē lietotāja iestatījumu vērtības, kas ir nodotas kā parametrs metodei. Metode GetSettings() ļauj iegūt pašreizējo iestatījumu kopiju (ņemot vērā lietotāja iestatījumus). Metode Lejupielādes iestatījumi() ielādē nodotos iestatījumus iestatījumu veidotājā (arī lietotāja iestatījumi tiek atkārtoti aizpildīti, pamatojoties uz nodotajiem datiem, ņemot vērā atslēgu klātbūtni, skatiet piemēru zemāk).

Pielāgotu iestatījumu piemērošana galvenajiem iestatījumiem tiek veikta metodē GetSettings() iestatījumu veidotājs. Tiek veiktas šādas darbības:

* DataCompositionSelectionElement tipiem elementu saturs tiek kopēts attiecīgajos pielāgoto iestatījumu elementos.

* Datu izkārtojuma atlases veidiem elementi, kas atrodas galvenajos iestatījumos un atzīmēti kā nepieejami, paliek nemainīgi. Elementi no PN tiek pārsūtīti uz galvenajiem. Tie tiek pievienoti atlases kolekcijas beigām.

* DataCompositionSelectionElementGroup tipiem rekvizīts Usage tiek iestatīts attiecīgajā galveno iestatījumu elementā (pamatojoties uz PN elementa lietošanas zīmi).

3. daļa

Veidojot galīgos iestatījumus, citējot ITS, dažādi iestatījumi tiek apvienoti šādi:

* Ja jebkura veida iestatījumi ir pilnībā atzīmēti kā pielāgoti, iegūtie iestatījumi ietver PN. Šādā gadījumā, ja kādi iestatījumu elementi ir atzīmēti kā nepieejami, šie iestatījumi tiks ievietoti rekvizīta Settings Composer.Settings iegūtajos iestatījumos.

* Ja kāda veida iestatījumi ir atzīmēti kā pielāgoti nevis pilnībā, bet elementam pa elementam, tad elementi, kas atzīmēti kā pielāgoti, tiks iekļauti iegūtajos iestatījumos no rekvizīta Settings Composer.CustomSettings, un elementi, kas atzīmēti kā nepieejami, tiks ņemti vērā iegūtie iestatījumi no rekvizīta Settings Composer.Settings .

* Fiksētie iestatījumi tiek pievienoti iegūtajiem iestatījumiem "kā ir". Šajā gadījumā situācija ir nepieņemama, ja FN un PN ir vienāda nosaukuma iestatījumi, piemēram, atlase ar vienādu kreiso vērtību nosacījumā. Es atzīmēju, ka pat pilnīga visu šo nosacījumu īpašību sakritība ir aizliegta. Godīgi sakot, tas ir nedaudz neloģiski.

Vēlos atzīmēt, ka, ja kāds iestatījumu fragments ir pakļauts funkcionālai opcijai un ir jāierobežo, sistēma darbojas “klusi” - noņem šo fragmentu no visur, neko neziņo un programmas manipulāciju laikā par šādu fragmentu , tas apstrādā “dīkstāves” kļūdas, nerada, bet kodam arī nav nekādas ietekmes. Tomēr ir iespējams, ka dažādi izlaidumi darbojas atšķirīgi.

4. daļa.

Pārskata veidlapas paplašinājums mums nodrošina parametrus “FN” un “PN”, taču nekur nav ieteicams tos tieši aizpildīt, nosūtot uz formu. Kā liecina eksperimenti, bez papildu dejām ar tamburīnu šo parametru saturs tiek ignorēts - tiek pārrakstīts, kad atvēršanas procesā tiek inicializēts linkeris un saņemti iepriekš saglabātie PN. Ieteicams strādāt ar PN taustiņiem, ar kuriem tos var izgūt no iestatījumu veikala un pēc tam atvērt un izmantot, un tas tiek darīts automātiski atskaites formas malā, nevis izsaukšanas veidlapā.

Parametrs “AvoilableSettings” tiek automātiski tulkots veidotāja informācijā, kad veidlapa tiek izveidota serverī, un to nevar ignorēt. Pareizāk sakot, var, bet tas iedarbosies tikai pēc pilnīgas visas saistīto objektu ķēdes pārdefinēšanas. Kurā GetSourceAvailableSettings() atgriezīsies Undefined līdz visu veidlapas atvēršanas notikumu beigām.

Ļaujiet man atzīmēt, ka formas parametri, kas būtībā nav galvenie parametri, “izstiepj” savu ietekmi uz vairākiem notikumiem, ja atverot ir iestatīts formēšanas karogs. Jā, pasākumā ProcessingCheckFillOnServer, kas tiek izsaukts atvēršanas un formēšanas laikā, parametrs “Atlase” būs pieejams, taču ar to, bet izsaukts vienkārši lietotājam noklikšķinot uz pogas “Ģenerēt”, tas vairs nebūs pieejams. Tas ir saistīts ar to, ka visi šie notikumi tiek apstrādāti vienā servera “apmeklējumā”, ja ir iespējota veidošanās atverot, un tikai to pašās beigās kontrole tiek nodota klientam un tiek izsaukta. Atverot. Šajā gadījumā nenozīmīgie parametri tiek dabiski zaudēti.

Vispārējā notikumu izpildes secība, atverot veidlapu ar karodziņu, lai pēc atvēršanas ģenerētu atskaiti (nedaudz vairāk, nekā aprakstīts sadaļā “Profesionālā attīstība”):

Kad CreatedOnServer

Pirms augšupielādes opcijas serverī

Augšupielādējot OptionOn Server

Pirms lietotāja iestatījumu augšupielādes serverī

Ielādējot lietotāja iestatījumus serverī

Atjauninot servera lietotāja iestatījumu sastāvu

ProcessingCheckFillOnServer

Atverot

Šajā gadījumā ne opcija, ne PN netiek mainīti, ja vien nav pieliktas īpašas pūles.

5. daļa.

Tagad sīkāk apskatīsim uzdevumu atvērt atskaites veidlapu ar tās uzbūvi un iepriekš noteiktu atlasi. Īsa informācija par to ir informācija ITS un iekšā metodiskie ieteikumi, bet tur ir aptverts tikai pats princips un smalkumi netiek atklāti. Tātad, lai kontekstuāli izsauktu atskaiti, tā formai ir jānodod parametrs “GenerateOnOpen”, kas vienāds ar True; un atlases parametrs, kas satur struktūru. Struktūras atslēgas ir ACS lauku vai ACS parametru nosaukumi, un vērtības ir to vērtības. Citējot SP, ja ir ACS parametrs ar nosaukumu, kas atbilst struktūras atslēgas nosaukumam, tad vērtība tiks iestatīta uz to. Ja parametra nav, bet lauks ir, tad šim laukam tiks pievienota atlase. Tajā pašā laikā, ja ir tāda paša nosaukuma parametrs un lauks, sistēma to vienkārši klusi ignorēs un neko neinstalēs.

“Profesionālā attīstība” sniedz piemēru PN maiņai (t.i., pārtveršanai un pārkonfigurēšanai) “lidojumā” pasākumā. Pirms lietotāja iestatījumu augšupielādes serverī, kur tiek nodots arguments, kas satur pašreizējo PN. Faktiski tas ne vienmēr tā ir - piemēram, var būt gadījumi, kad kļūda, saglabājot PN iepriekšējā sesijā, vai neatbilstības starp iestatījumiem, FN un PN novedīs pie tā, ka arguments “Iestatījumi” ir tukšs. Un pats interesantākais ir tas, ka šajā pasākumā to pilnībā pārkonfigurēt nebūs iespējams, to var izdarīt tikai notikumu secības “beigās”, proti, pasākumā ProcessingCheckFillOnServer.

Apskatīsim, kas mums ir pirms PN ielādēšanas serverī.

Vienkāršam gadījumam, kad ACS nekas nav iepriekš iestatīts un PN nav iekļauti nekādi elementi, situācija ir šāda: Iestatījumi – tukšs; FN – satur pareizu atlasi; Pirmdiena satur tukšu atlasi. Formēšana darbojas pareizi, taču no lietotāja viedokļa saskarne ir pretrunā ar iekšējo un attur - atlase darbojas, bet nav redzama. Tāpat, ja opciju struktūras iestatījumos iespējojat atlasi PN, arī atskaite tiek veidota, ņemot vērā atlasi, taču lietotājs arī neredz atlasi.

Konfiguratorā ACS iestatījumos iestatīsim priekšatlases (vienādas ar tukšām vērtībām) un iekļaujam tās PN. Teorētiski FN ir jāaizpilda iestatījumi, un tiem ir jāaizpilda PN, bet patiesībā mums ir: sadaļā Iestatījumi - atlase ar vajadzīgo elementu, bet tukša labā vērtība, FN satur pareizo atlasi un PN joprojām neko nesatur. Turklāt šajā gadījumā atskaite netiks veidota, jo labā atlases vērtība ir tukša, neskatoties uz vērtību, kas nodota parametrā Select.

Mēģinājums strādāt ar PN elementiem arī nesniedz rezultātus. PN elementam varat mainīt tikai karogu “Izmantot” un dalību sadaļā “Ātrais”. Atlases vērtība saskarnē būs tukša, sistēma neradīs nekādas kļūdas. Līdzīgi darbosies arī mēģinājums strādāt ar PN atlasi; atkļūdotājā pareizā vērtība būs redzama pareizi aizpildītā veidā, bet saskarnē neko neredzēsit. Atgādināšu, ka PN sastāvu mainīt nav iespējams. Tādējādi ir nepieciešami papildu triki. Piemēram:

&Servera procedūrā SetPresetSelections(UserSettings) Ja ne Parameters.Property("Atlase"), tad atgriež EndIf; Ja Parameters.Selection.Quantity()=0 then Return EndIf; rTypeEO=Tips("Datukompozīcijas atlases elements"); Katrai atslēgai From Parameters.Selection Loop pField=NewDataCompositionField(key.Key); // If (ValueType(kiz.Value)=Type("Array") vaiValueType(kiz.Value)=Type("ValueList")) un kiz.Value.Quantity()>1 Tad pViewComparison=DataCompositionComparisonType.InList; Citādi pComparisonType=DataCompositionComparisonType.Equals; endIf; // pNecessarySelection = Nedefinēts; // redzēt, vai lietotāja iestatījumos ir Atlase pNecessaryEO=Undefined; // skatiet, vai lietotāja iestatījumos ir atsevišķs DataComposition atlases elements Katram elnastr From UserSettings.Elements Cycle If TypeValue(elnastr) = Type("DataComposition Selection") un pNecessarySelection=Undefined Tad // var būt tikai viens pNecessarySelection= elnastr; // to varētu izdarīt ārpus cilpas, bet elementu dēļ ir jākārto lietotāja iestatījumi... Citādi Ja TypeZnch(elnastr) = pTypeEO Tad // tas ir atlases elements, var būt daudz no tiem, bet mūs interesē tie, kas nav inicializēti vai ar obligāto lauku If elstr.LeftValue=pField vai elstr.LeftValue=Undefined and rNeedEO=Undefined Then pNeedEO=elstr; endIf; endIf; EndCycle; // Ja pRequiredSelection<>Undefined Pēc tam // tā ir prioritāte pNecessaryEOFromSelection = Undefined; Katram elotb From pNecessarySelection.Elements Cycle If elotb.LeftValue=pField Tad pNecessaryEOfromSelection=eloteb; Pārtraukt EndIf; EndCycle; Ja pnepieciešams EO no atlases = nenoteikts, tad pnepieciešamā EO no atlases = pnepieciešamā atlase.Elements.Add(pEO veids); pNeedEOFromSelection.LeftValue=pField; endIf; pNecessaryEOfromSelection.ComparisonType=pComparisonType; pNecessaryEOFromSelection.RightValue=kiz.Value; pNecessaryEOFromSelection.Use=True; // rNeededEO.Use=False; OtherIf pNecessarySelection=Nedefinēts un pNecessaryEO<>Undefined Pēc tam // uzliek elementu pNecessaryEO.LeftValue=pField; pNecessaryEO.ComparisonType=pComparisonType; pNeedEO.RightValue=kiz.Value; pNeedEO.Use=True; endIf; pNeed=Nedefinēts; Katram elotb From Report.ComposerSettings.Settings.Selection.Elements Loop // draudzīgā veidā ir jābūt rekursīvai meklēšanai! Ja TypeValue(elotb)=pTypeEO un elotb.LeftValue=pField Tad pNeed=elotb; Pārtraukt EndIf; EndCycle; Ja pNeed = Nedefinēts, tad pNeed = Report.Settings Composer.Settings.Selection.Elements.Add(pEOType); pNeed.LeftValue=pMargin; endIf; pNecessary.ComparisonType=pComparisonType; pNeed.RightValue=kiz.Value; pNeed.Use=True; //EndCycle; Report.Settings Composer.FixedSettings.Selection.Items.Clear(); // pretējā gadījumā tiks teikts, ka elementi krustojas / ir pretrunā ar procedūras beigas

Pareizākais veids, kā to saukt, ir:

&Serverī procedūra Apstrādes aizpildīšanas pārbaudes serverī (kļūme, pārbaudīta informācija) Iestatīt iepriekš definētas atlases (Atskaites iestatījumu saistītājs. Lietotāja iestatījumi); Procedūras beigas

Pēc tam konteksta izsaukums, piemēram, no direktoriju formas, izskatīsies šādi:

&OnClient procedūra OpenReport(Command) Ja ValueFilled(Object.Link) Tad ot=New Structure("LinkToDirectory",Object.Link); // šādi lauks tiek nosaukts SDS atskaitē Form Parameters = New Structure ("Selection, GenerateWhen Opening", atlasiet, True); OpenForm("Pārskats.Atskaite1.Veidlapa.Atskaites veidlapa",VeidlapasParametri,Šī veidlapa); endIf; Procedūras beigas

6. daļa.

Ja nepieciešams, mainiet atskaites iestatījumus, strādājot ar to, t.sk. gan startējot, gan pēc atvēršanas pareizākais veids ir mainīt “no sākuma”, t.i. no ACS iestatījumiem. ACS shēmas maiņa tiek veikta tikai ar atskaites objektu (vai ārējo atskaiti), nevis ar formas datiem, un pati par sevi neko nemaina - iestatījumos un PN paliek tas pats, kas bija, un FN var palikt tukšs. Tāpēc atkarībā no mūsu uzdevumiem:

Pēc izpildes

Report.Settings Composer.LoadSettings(SKD.DefaultSettings)

Mainās tikai opcija, un nekas vairāk;

Pēc 2. punktā minētās tehnikas veikšanas (izmantojot “starpnieku” un metodi LoadCustomSettings()

darbojas tikai tad, ja atiestatāt pašreizējo PN, izmantojot interfeisu. Paši par sevi, ja opciju mainīs, viņi nemainīsies. Šajā gadījumā atlase mainās, bet jauns atlases elements netiek pievienots.

Pēc izpildes

ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.All)

platforma vienkārši klusi nokrīt. Pārbaudīts vairākos dažādos laidienos. Un nav jēgas izsaukt iestatījumu parādīšanas režīmu tikai ātrajiem - mēs neietekmējām to sastāvu, tāpēc nekas nemainīsies.

Un tā kā mums joprojām ir pilnībā jāmaina ne tikai iekšējās atlases, bet arī attēlojums pārskata veidlapā un saistītajās formās, mums vai nu jāmaina tikai atlase, vai arī jārīkojas šādi:

&Servera procedūrā ChangeSKD() pObject = Form AttributesValue("Pārskats"); Selection=pObject.DataCompositionScheme.SettingsOptions.Get(0).Settings.Selection; eo = atlase.Elementi.Add(Type("DatuCompositionSelectionElement")); eo.LeftValue=NewDataCompositionField("LinkToDirectory.Field1"); eo.ComparisonType=DataCompositionComparisonType.Equals; eo.RightValue=True; eo.Use=True; ValueВFormAttributes(pObject,"Report"); Report.SettingsLitter.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.Restore(); // vēlams, lai gan tas joprojām neietekmē FN. // patiesībā tas ir tieši tas, ko var saukt par izmaiņām PN sastāvā Katram e-pastam From Report.ComponentSettings.Settings.Selection.Elements Cikla e-pasts.DisplayMode=ElementDisplayModeDataCompositionSettings.QuickAccess; Ja EmptyString(el.UserSettingsIdentifier) ​​​​Tad // PN elementam varat izmantot metodi electronicSetIdentifier, skatiet tās palīdzību SP, tur viss ir diezgan skaidrs e.UserSettingsIdentifier="ID123"; // svarīgi - identifikators var būt JEBKURS, nevis UUID vai GUID! el.ViewUserSettings="Pārbaude"; endIf; EndCycle; comp=NewDataCompositionSettingsComposer; comp.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.LoadCustomSettings(comp.CustomSettings); Katram e-pastam no Report.Settings Composer.CustomSettings.Elements Cikla email.DisplayMode=ItemDisplayModeDataLayoutSettings.QuickAccess; // velciet EndCycle uz atskaites formu; // un tagad tam būs efekts: ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.QuickAccess); Procedūras beigas

Patiesībā šo mehāniku var pētīt ilgu laiku. Šī publikācija izauga, pētot vienas konkrētas problēmas risināšanas veidus, un tāpēc tā ir diezgan vienpusīga; bet man ir aizdomas, ka par iestatījumu iekšējo loģiku, īpaši lietotāju, var uzrakstīt atsevišķu grāmatu, kas nav smalkāka par Hrstaļeva. Diemžēl man tam nav ne spēka, ne laika. Kam konkrētas izstrādes šķiet noderīgas, tas jau ir labs.

Dažas lietas ir noskaidrotas eksperimentāli un tāpēc ir pretrunīgas. Tie, kas zina vairāk, aicināti kritizēt un komentēt.