Attiecas uz
SharePoint pakalpojumā Microsoft 365 SharePoint pakalpojumā Microsoft 365 maziem uzņēmumiem

by Justin Joyce, LANtek

Piezīme.: Šis raksts ir daļa no ziņu kolekcijas, kas sharePoint lietotājiem ir izliktas pēc četriem gadiem emuāra "Iegūt punktu".

Pārskats: pielāgotas novecošanas atskaites bez koda

Viena no bieži pieprasītām funkcionāliem SharePoint vietnes elementiem ir novecošanas atskaite uzdevumiem vai saraksta vienumiem. Citiem vārdiem sakot, cik dienas/mēneši ir pagājuši kopš šī saraksta vienuma pēdējās modificēšanas reizes?

Uz virsmas tas šķiet ļoti vienkāršs pieprasījums. Pēc tam, kad esam izveidojuši un modificējuši vienumu datumus, mums ir iespēja saglabāt pielāgotus datumus, kad noteiktas vienumu izmaiņas tiek veiktas notikumu saņēmēji. Mēs esam aprēķināmās kolonnas, kurās mēs varam iekļaut Excel līdzīgas formulas darbam ar mūsu informāciju. Tas šķiet diezgan taisns prievārds uz priekšu. Mēs izvēlējāties datuma lauku, izveidojam aprēķinātu kolonnu un pēc tam formulas izpildām pa [DateField] – [Šodien]. Taču tas nav tik ātri! Kā katrs lietotājs ir mēģinājis izmantot šo "vienkāršo" uzdevumu, tas nozīmē, ka, aprēķinātajā kolonnā mēģinot izmantot kaut ko līdzīgu [Šodien], rodas problēmas. Mēģiniet ievietot [Šodien] aprēķinātās kolonnas formulas lodziņā, lai nosūtītu kļūdas ziņojumu, kas līdzīgs šim:

Kļūdas ziņojums

Kāpēc tas ir? Tas ir jādara ar aprēķināto kolonnu aprēķina veidu.

Vienkāršu formulu izmantosim kā piemēru:

= IF( [Kolonna1]<=[Kolonna2], "Labi", "Nav labi")

Tas viss nozīmē: ja Kolonna1 ir mazāka vai vienāda ar Kolonna2, parādīt Labi, pretējā gadījumā parādīt Nav labi. Tā ir diezgan vienkārša aprēķinātās kolonnas pamatformula, un tā pieņem vienkāršu pieņēmumu par saraksta vienumu, kurā ir šīs kolonnas: Kolonna1 un Kolonna2 vērtības nekad nevarēs mainīt bez atjaunināšanas notikuma saraksta vienumā.

Tieši tā aprēķinātās kolonnas tiks pārrēķinātas tikai saraksta atjaunināšanas (vai izveides) laikā, jo tās pieņem, ka aprēķinātā informācija atrodas pašā vienumā. Tas rada problēmu, ja mēģināt izmantot kaut ko, kas mainās neatkarīgi no vienuma laukiem, piemēram, šodienas datuma.

Tagad sapulces laikā es izlēmu, ka šādi darbojas aprēķinātās kolonnas, taču, ja man būtu jārēķina minējums, ka tās darbojas šādi, lai nodrošinātu veiktspēju. Iedomājieties, ka jums ir vairāku tūkstošu vienumu saraksts, un katrā no tiem bija aprēķinātā kolonna, kurai nepieciešams atjauninājums tiešsaistē. Tas nozīmē, ka dažu mehānismu, iespējams, taimera darbu, vajadzētu iterēt katru vienumu, kurā bija šī aprēķinātā kolonna ik pēc tik bieži un atjaunināt tā vērtību. Tas var būt ļoti ar nodokļiem attiecībā uz veiktspēju, jo, izmantojot lielākus izvietojumus, šis darbs var nemitīgi darboties un veikt izmaiņas. Tas ir tikai mans minējums, bet tas ir diezgan lietderīgi, ja domājat par to.

Pastāv daži ieteikumi, kā līdzīgi risinājumi tur ieplūst un kuros ir jāveic SharePoint izmantošana, lai akceptētu vērtību Šodien, vispirms izveidojot kolonnu ar nosaukumu Šodien, pēc tam pievienojot to formulai un pēc tam to izdzēšot. Tie visi ir labi un labi, bet atcerieties, ko es runāju par aprēķināto kolonnu atjaunināšanu. Šī vērtība mainīsies tikai tad, kad vienums tiks atjaunināts, kas nozīmē, ka drīzumā vērtības nebūs pareizas, īpaši dienas aprēķina gadījumā.

Esmu redzējis citiem, izmantojot apķērīgi JavaScript, lai rakstītu vērtības lapā. Tas arī darbojas, bet es esmu diezgan kategorizēts attiecībā pret klienta skriptu, ja to var novērst.

Īstenošana:

Kā rīkoties? Aprēķinātās kolonnas ir ārpus jautājuma, jo tā tiek dēvēta par mainīgām funkcijām, piemēram, Today. Iespējams, ka mēs varētu izstrādāt pielāgotu kodu, lai par to parūpēties, piemēram, aprēķināto kolonnu, taimera darbu vai ieplānotu procesu, kas jāatjaunina katru vienumu, kam šis aprēķins ir nepieciešams. Tas palīdz atgriezties pie veiktspējas problēmas, kas ir minēta pēdējā rindkopā, turklāt tas ir noguris risinājums, kas ir ļoti specifisks noteiktām vietnes/saraksta/kolonnas sarakstam. Papildus šīm abām bažām, jums arī būs jāatrodnerdy puisis, piemēram, pats, kas zina, kā kodu un viņu pierunāt izstrādāt šo risinājumu. Taču tas ir vienkāršāks veids!

Ja jums ir tiesības izveidot laukus un rediģēt lapas savā vietnē un jums ir nedaudz zināšanas par XSLT un skatu izveidi, varat izveidot XSL veidni, ko var iekļaut saraksta skatā un ko var izmantot, lai aprēķinātu vērtību katru reizi, kad tiek pieprasīta lapa. Šajā scenārijā tiek noņemtas mūsu raizes par veiktspēju, tāpēc pielāgotais kods nav jāizstrādā un jāizvieto, izmantojot risinājumu.

Nevainojams. Kā to izdarīt?

  1. Izveidojiet vai atlasiet lauku, kas darbosies kā mūsu avots. Tam ir jābūt datuma tipam.

  2. Izveidojiet mūsu lauku, kas darbosies kā aprēķinātās vērtības vietturis.

  3. Pievienojiet abus šos laukus satura tipam un pievienojiet šo satura tipu sarakstam.

  4. Izveidojiet šī saraksta skatu, kurā ir gan avota, gan viettura kolonnas.

  5. Augšupielādējiet XSL veidni stilu bibliotēkā.

  6. Iestatiet saraksta skata tīmekļa daļas rekvizītu "XSL saite", izmantojot UI.

  7. Izdevās!

Izpētīsim lietošanas piemēru un pētīsim ieviešanu. Mūsu klients vēlas aplūkot galveno sarakstu, kurā norādīts, cik ilgi konkrētam saraksta elementam bija ticis piešķirts tā statuss. Šajā sarakstā bija iekļauts pielāgots vietnes satura tips, kas atvasināts no vienuma tipa un pievienots sarakstam. Tur jau bija notikumu adresāts, kas tver katru reizi, kad saraksta vienumā tika mainīts statusa lauks un saglabāts šo datumu kolonnā "Datums ir mainīts". Viss šis wiring nav nepieciešams, un to var paveikt, izmantojot ANY datumu lauku (tā notiek tikai tāpēc, ka šī ir mūsu ieviešana, bet varat eksperimentēt). Minimālais nepieciešamais ir avota datuma lauks un viettura lauks, lai turētu aprēķinu (vairāk par to nākamajā rindkopā), kas pievienots sarakstam, lai gan ieteicams izmantot vietņu kolonnas un vietnes satura tipus, ja vēlaties šo risinājumu izmantot atkārtoti citās vietnes vietās.

Līdz ar to mums ir avota datums, ko varam izmantot aprēķinos attiecībā pret šodienas datumu. Tagad mēs varam izveidot pielāgotu vietnes kolonnu, ko izmantot kā aprēķinātās vērtības konteineru. Šajā gadījumā es izvēlējos izmantot aprēķināto kolonnu, jo nevarēsit mainīt jauno vai rediģēšanas vienumu formas, bet to var atlasīt parādīšanai skatos, jo nevēlamies, lai lietotāji šajā kolonnā ievada patvaļīgas vērtības. Varētu būt mulsinošs jautājums par to, kāpēc tas netiek rādīts skatos u.c.

Tagad, kad ir mūsu vietnes kolonna, varam to pievienot mūsu satura tipiem, kas tiks izmantoti mūsu sarakstā. Pēc tam mums ir jāizveido skats, kas vēlāk tiks pielāgots, izmantojot XSLT. Izveidojiet standarta skatu, kurā ir ietverta avota datumu kolonna un jaunā aprēķinātā kolonna, kas darbosies kā aprēķinātās vērtības vietturis.

Mums tagad ir viss, kas mums būs nepieciešams, lai atbalstītu savu pielāgoto novecošanas atskaiti. Viss, kas paliek, ir izveidot mūsu XSL veidni, augšupielādēt to vietnes stilu bibliotēkā un saistīt to ar mūsu saraksta skatu. XSL veidnē, ko izmantosim, būs dažas parastas SharePoint ģenerētas atzīmes skata ģenerēšanai, kā arī mūsu pielāgotā atzīme, kas tiek izmantota, lai ignorētu noteiktas tās daļas un aprēķinātu mūsu vēlamo vērtību.

Kredīts, uz kuru jāskaita kredīts, XSL veidnes faktisko aprēķinu veikšanas nolūkam, ko izmantoju šim risinājumam, tika labi nodrošināts MSDN forumos:http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/

Lejupielādējiet XSL stila lapu (XSL stila lapuaging.zip kuru esmu sakopojuši šeit:https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9!104

Atverot šo sadaļu savā iecienītajā teksta redaktorā, redzēsit daudz parastas SharePoint XSL atzīmes, lai atveidotu skatus, ja ritināt lejup līdz 357. rindiņai, redzēsit to pielāgoto veidņu sākumu, kuras pievienoju atzīmēm, pirmā no veidnēm kā "DateDiff", kam seko "calculate-julian-day" un "FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status". Šīs ir mūsu trīs veidnes, kas veiks un attēlos mūsu aprēķinus mūsu skatos. Ja izmantosim citus lauku nosaukumus, kas atšķiras no iepriekš šajā rakstā norādītajiem, jums būs jāpāriet no šīm veidnēm un jāaizstāj visas atsauces uz citiem nosaukumiem. Atcerieties, ka šim vēlaties izmantot lauka INTERNAL nosaukumu, nevis parādāmo nosaukumu.

Kad esat apmierināts, ka veidne ir gatava darbam, naviģējiet uz savu stilu bibliotēku un augšupielādējiet to mapē "XSL stila lapas", pēc tam nokopējiet lejup saiti uz failu. Tas ļaus mums vēlāk vienkārši veikt tajā izmaiņas vai pēc izvēles to pievienot dažādām vietnes daļām.

Pēc tam dodieties uz savu sarakstu un atlasiet iepriekš šajā rakstā izveidoto skatu. Izvēlnē "Vietnes darbības" noklikšķiniet uz "Rediģēt lapu".

Lapas rediģēšanas komanda izvēlnē Vietnes darbības

Atrodiet lapā savu saraksta skata tīmekļa daļu un atveriet tīmekļa daļas izvēlni, noklikšķinot uz mazās lejupvērstās bultiņas augšējā labajā stūrī. Šajā izvēlnē atlasiet "Rediģēt tīmekļa daļu".

Tīmekļa daļas komandas rediģēšana tīmekļa daļas izvēlnē

Tiks atvērta tīmekļa daļas izvēlne pārlūkprogrammas loga labajā pusē.

Tīmekļa daļas izvēlne

Noklikšķiniet uz + sadaļai "Dažādi" un atrodiet rekvizītu "XSL saite".

XSL saites rekvizīts tīmekļa daļas izvēlnē

Ielīmējiet saiti uz XSL failu stilu bibliotēkā, kuru iepriekš nokopjāt (tā var būt relatīva vai absolūta saite).

Ielīmēta XSL faila saite

Noklikšķiniet uz Labi, lai saglabātu izmaiņas, un pēc tam noklikšķiniet uz pogas "Pārtraukt rediģēšanu" lapas augšdaļā, lentē Lapa.

Poga Apturēt rediģēšanu cilnē Lapas

Ja viss ir konfigurēts pareizi, tagad kolonnā "Dienas pēc statusa" jābūt redzamiem skaitļiem.

Kolonna ar dienu skaitu statusā, kurā tiek rādīts cipars

Visbeidzot, lūk, kā tas izskatītos ar dažiem testa datiem par dažādiem datumiem:

Vecuma pārskats, kurā attēloti testa dati

Kopsavilkums.

Šeit tas ir: labi formatēts, spēcīgs un labāks veids, kā izveidot novecošanas ziņojumu sharePoint vidē, kas ir papildināts ar vienkāršu bezkodeka ieviešanu. Tas ir diezgan maz iespējamo lietojumprogrammu malā vienā lietošanas gadījumā, kuru mēs izpētījām šeit. Cits izplatītākais scenārijs šāda veida atskaitei ir to pievienot uzdevumu sarakstam, lai jūs varētu skatīt, cik ilgi tas ir bijis kopš uzdevuma izveides acu uzmetienā.

Izbaudiet!

--Justin

Justin Joyce, LANtek

Komentāri

Trūkst darbību 8.10.2012. 3:51 Labi, es izpildīju darbības, bet ir jābūt kaut kam trūkstošam — kā XSL zina, kuru datumu izmantot vai kurā laukā pievienot dienas? pēc tam, kad darbības ir nokavētas, ir ļoti nokavējis.

Bez koda, par ko jums ir jāvienojas! 30.08.2012. 12:12 Es piekrītu. Es neredzu, ka tas tiek skaitīts kā "nav koda".Interesantā gadījumā, izmantojot kādu SharePoint skrūvi, man ir aprēķinātā kolonna, kas darbojas, izmantojot Šodien... nezinu, kā un kāpēc, jo es nevaru to izdarīt vēlreiz, bet tā joprojām tur strādā.

Aprēķinātās kolonnas "Dienas pēc statusa" formula? 02.05.2012. 07:39 Justin — kādu formulu izmantojāt aprēķinātās vietnes kolonnas (viettura kolonnas) sadaļā "Dienas pēc statusa"? Vai tas bija "=šodien"?

SharePoint 2007 2.12.2011. 11:29 Pašlaik es vēl neesmu mēģinājis lietot šo risinājumu programmatūrai SharePoint 2007, tomēr es tajā meklēju. Diemžēl lietotāja interfeisā nav neviena XslLink rekvizīta, kas būtu ēts tīmekļa daļā.

Great Post 30.11.2011. 9:53 Labdien Great Post.Es izmantoju SharePoint 2007.Man nav Misc sadaļas, kā norādīts iepriekš.Vai jums ir darbības SP2007 konfigurēšanai? Paldies.

Re: No-code solution: Displaying the days since a SharePoint list item was last changed 11.10.2011. 8:24 Labdien, Kriss!lieliski atrodiet! Tālāk, cerams, pievērsīšos tam, ko publicēsim šodien, un paskatīsimies, vai šis risinājums būs nedaudz spēcīgāks.Man prieks, ka jums patīk šis ziņa, un man ļoti prieks, ka jums patika iespēja atrast risinājumu Eiropas datumu formātam. :) -Justin

Risinājums Eiropas datumu formātiem 11.10.2011. 6:45 Sveiki, atkal Justin! Jūsu fēzij es atradu risinājumu iepriekš šajā lapā pieminētās problēmas risinājumam.https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Eiropas datumu formāti 07.10.2011. 3:59 Labdien, Justin! Šis ir patiesi labs risinājums, paldies, un viss, ko esmu pavadījis pēdējās divas dienas! Tomēr man ir radusies problēma, un es cerēju, ka varētu man palīdzēt.Esmu nedaudz mainījis savu kodu, lai aprēķinātu dienu skaitu līdz brīdim, kad kaut kas notiek, nevis tagad, pārslēdzot mainīgos funkcijas "DateDiff" pēdējā rindiņā. <="xsl:value-of select="$JulianToday - $JulianStartDate"></xsl:value-of> Tomēr es varu to tikai izmantot, lai nepareizi iegūtu starpību puslaika laikā. Tātad, piemēram, ar šo datumu (formāts dd/MM/gggg). 12.30.2011. Tas tiek aprēķināts pareizi, bet ar šo datumu (tas pats formāts) 10.12.2011. Aprēķina kā 10.04.2011., nevis 2011. gada 12. okt.Es vienkārši mēģināju mainīt dienas un mēneša vērtību pozīcijas mainīgajā "JulianStartDate", piemēram, šādi. <xsl:with-param name="Month" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'yyyyMdd'),7,2)"/> <xsl:with-param name="Day" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'yyyyMdd'),5,2)"/> Un tas izlaboja problēmu ar otro datumu, taču tas bija nepareizs pirmajam datumam! Esmu arī izmēģinājis mainīt FormatDateTime izsaukumus, lai izmantotu Eiropas LCID un dažādus pielāgojumus līdz pēdējam FormatDateTime parametram (piemēram, ddMMyyyy, MMddyyyy), ar atbilstošajiem substring pozīcijas parametriem bez izdošanās.Labprāt novērtēju visus ieteikumus, ko varat piedāvāt.Paldies Chris

Bez koda 21.09.2011. 4:27 Es neredzu, ka XSL ir kvalificēts kā "bezkoda" risinājums, jo izpratne par XSL valodu nav domāta ikvienam — tomēr tajā nav iesaistīta programmēšana. Papildus tam: Labs risinājums, paldies!

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.