Velja za
SharePoint v okolju Microsoft 365 SharePoint v okolju Microsoft 365 Small Business

, ki ga Justin Joyce, LANtek

Opomba: Ta članek je del zbirke objav iz štirih let spletnega dnevnika »Pridobi točko « za končne uporabnike SharePointa.

Pregled: Poročila o zapadlosti po meri brez kode

Eden od pogosto zahtevanih funkcionalnih delov SharePointovega mesta je poročilo o zapadlosti za opravila ali elemente seznama. Z drugimi besedami, koliko dni/mesecev je bilo od zadnje spremembe tega elementa seznama?

Na površini se zdi, da je to zelo preprosta zahteva. Ne nazadnje imamo datume za ustvarjanje in spreminjanje elementov, zato lahko shranjujemo datume po meri, ko pride do določenih sprememb elementov prek prejemnikov dogodkov. Izračunali smo stolpce, kjer lahko vključimo Excelove formule za delo z našimi informacijami. To se zdi precej raven predlog za naprej. Izbrali smo polje z datumom, ustvarili izračunan stolpec in nato nekaj poenotili s formulo [DateField] – [Danes]. Ah, ne tako hitro, čeprav! Kot vsi, ki so poskušali uporabiti to »preprosto« opravilo, lahko težave povzroča uporaba na primer [Danes] v izračunanem stolpcu. Poskusite vstaviti [Danes] v polje formule izračunanega stolpca, da se prikaže sporočilo o napaki, podobno temu:

Sporočilo o napaki

Zakaj je to? Gre za način izračuna izračuna stolpcev.

Vzemimo za primer preprosto formulo:

= IF( [Stolpec1]<=[Stolpec2], "V redu", "Ni v redu")

Vse to pomeni, da če je Stolpec1 manjši ali enak Stolpcu2, prikaži V redu, sicer prikaži Ni v redu. To je dokaj tipična osnovna formula za izračunani stolpec in osnovno predvideva element seznama, ki vsebuje te stolpce: vrednosti za Stolpec1 in Stolpec2 se ne bodo nikoli spremenile brez dogodka Update v elementu seznama.

Tako je, izračunani stolpci se preračunajo le, ko je seznam posodobljen (ali ustvarjen), saj predvidevajo, da so podatki, ki jih izračunate, shranjeni v samem elementu. To ustvari težavo, ko poskušate uporabiti nekaj, kar se spremeni neodvisno od polj elementa, kot je današnji datum.

Zdaj nisem bil v srečanju, kjer so se odločili, da je to način, da bi izračunani stolpci delovali, vendar, če sem moral, da izobraženi ugibati, jaz bi predvideval, da so funkcije na ta način za učinkovitost delovanja. Predstavljajte si, če imate seznam več tisoč elementov, od katerih je vsak vseboval izračunan stolpec, ki potrebuje »živo« posodobitev. To bi pomenilo, da bi morali nekateri mehanizmi, morda posel časovnika, iteriranje skozi vsak element, v katerem je izračunan stolpec vsakih toliko časa, in posodobiti njegovo vrednost. To je lahko zelo davčno glede na učinkovitost delovanja, saj se lahko zaradi večjih uvajanj to delo nenehno izvaja in spreminja stvari. To je samo po mojem mnenju, vendar je precej smiselno, če razmisliš o tem.

Na voljo je nekaj predlogov za podobne rešitve, ki vključujejo ukinjanje SharePointa, da sprejme vrednost »Danes«, tako da najprej ustvarite stolpec z imenom »Danes«, nato pa ga dodate v formulo in jo izbrišete. Vse to je v redu in dobro, vendar ne pozabite, kaj sem rekel o tem, ko so izračunani stolpci posodobljeni. Ta vrednost se bo spremenila le, ko bo element posodobljen, kar pomeni, da bodo vaše vrednosti kmalu nepravilne, zlasti v primeru dnevnega izračuna.

Videl sem druge, ki uporabljajo pametni JavaScript za pisanje vrednosti na stran. to hoteti obdelovati tudi, šele jaz sem zal veliko kategorično zoper stranka scenarij čas to can be avoided.

Izvajanje:

Torej, kaj naj naredim? Izračunani stolpci niso v vprašaju za tako imenovane »spremenljive« funkcije, kot je »Danes«. Morda bi lahko razvili kodo po meri, ki bi to za nas poskrbela, kot je izračunan stolpec, posel časovnika ali načrtovani proces, ki bo na voljo, in posodobili vsak posamezni element, za katerega je treba izvesti ta izračun. To nas je pripeljalo nazaj do težave z učinkovitostjo delovanja, ki sem jo omenil v zadnjem odstavku, poleg tega pa je to krhka rešitev, ki bi bila zelo specifična za določeno spletno mesto/seznam/stolpec. Poleg teh dveh pomislekov bi morali poiskati tudi piflarija, kot sem jaz, ki ve, kako kodi in ga prepričati, da razvije to rešitev za vas. Vendar obstaja še lažji način!

Če imate pravice za ustvarjanje polj in urejanje strani na spletnem mestu ter imate nekaj znanja o XSLT-u in ustvarjanju pogledov, lahko ustvarite predlogo XSL, ki jo lahko dodate v pogled seznama in zvesti izračunate vrednost vsakič, ko je stran zahtevana. Ta scenarij odstrani našo zaskrbljenost glede učinkovitosti delovanja in ne zahteva, da je koda po meri razvita in uvedena prek rešitve.

Popoln. Kako bomo to šIi?

  1. Ustvarite ali izberite polje, ki bo delovati kot naš vir. Vrsta datuma mora biti.

  2. Ustvarite polje, ki bo delovati kot označba mesta za izračunano vrednost.

  3. Obe polji dodajte vrsti vsebine in dodajte to vrsto vsebine na seznam.

  4. Ustvarite pogled seznama, ki vsebuje stolpce vira in označbe mesta.

  5. Prenesite predlogo XSL v knjižnico slogov.

  6. Nastavite lastnost »XSL Link« za spletni gradnik pogleda seznama prek uporabniškega vmesnika.

  7. Uspelo je!

Oglemo si primer uporabe primera in se sprehodimo skozi izvajanje. Stranka si je želela ogledati glavni seznam, ki bi jim povedal, koliko časa je določen element seznama sedel na svojem stanju. Na tem seznamu je vrsta vsebine mesta po meri, izpeljana iz vrste element in dodana na seznam. Na mestu je že bil prejemnik dogodkov, ki zajame vsakič, ko je bilo polje stanja na elementu seznama spremenjeno, in ta datum shrani v stolpec, ki se imenuje »Spremenjeno stanje datuma«. Vse to ožičenje ni potrebno, in se lahko izvede s katero koli datumsko polje (to samo tako se zgodi, to je naša izvedba, vendar vas prosimo, da eksperimentirate). Goli minimum, ki ga potrebujete, sta polje z izvornim datumom in polje označbe mesta za shranjevanje izračuna (več o tem v naslednjem odstavku) dodana na seznam, čeprav vam priporočam, da uporabite stolpce mesta in vrste vsebine mesta, če želite to rešitev znova uporabiti na drugih mestih na spletnem mestu.

Tako imamo datum vira, ki ga lahko v našem izračunu uporabljamo v skladu z današnjim datumom. Zdaj lahko ustvarimo stolpec mesta po meri, ki ga bomo uporabili kot vsebnik za našo izračunano vrednost. V tem primeru sem se odločil uporabiti izračunan stolpec, saj ga ne bo mogoče spremeniti v novih obrazcih ali obrazcih za urejanje elementov, lahko pa ga izberete za prikaz v pogledih, saj ne želimo, da bi uporabniki v ta stolpec vnašati poljubne vrednosti. Lahko vas zmede, zakaj ni prikazana v pogledih itd.

Zdaj, ko imamo stolpec spletnega mesta, ga lahko dodamo v naše vrste vsebine, ki bodo uporabljene na našem seznamu. Nato moramo ustvariti pogled, ki ga bomo pozneje prilagodili z našim XSLT-om. Ustvarite standardni pogled, ki vsebuje stolpec z izvornim datumom in novi izračunani stolpec, ki bo delovati kot označba mesta za izračunano vrednost.

Zdaj je vse na mestu, ki ga bomo zahtevali za podporo našega poročila o zapadlosti po meri. Še vedno pa ustvarjamo našo predlogo XSL, jo prenesete v knjižnico slogov spletnega mesta in jo povežete s pogledom seznama. Predloga XSL, ki jo bomo uporabili, bo vsebovala nekaj običajnih oznak, ki jih je ustvaril SharePoint, za ustvarjanje pogleda, pa tudi lastne oznake po meri, ki se uporabljajo za preglasitev določenih delov tega in izračun naše želene vrednosti za nas.

Dajanje kredita, kjer je treba za plačilo, XSL predloge za tem dejanske izračune sem z uporabo za to rešitev so bili milostno, ki jih "swirch" na forumih MSDN:http://social.msdn.microsoft.com/Forums/en-US/sharepointcustomization/thread/aeda905b-9bc6-40c4-bd22-21306c5cb0d2/

Prenesite seznam slogov XSL (aging.zip), ki sem ga dal skupaj tukaj:https://OneDrive.live.com/?cid=c262e8e2d59a86d9&permissionsChanged=1&id=C262E8E2D59A86D9!104

Če odprete to možnost v svojem priljubljenem urejevalniku besedila, boste videli veliko navadnih oznak XSL v SharePointu za upodabljanje pogledov. Če se boste še naprej pomikali navzdol do vrstice 357, boste videli začetek predlog po meri, ki sem jih dodal v oznako. Prva je predloga »DateDiff«, ki ji sledita »izračun julijanski dan« in »FieldRef_printTableCell_EcbAllowed.Days_x0020_At_x0020_Status«. To so naše tri predloge, ki bodo v naših pogledih iznašla in prikazala naše izračune. Če boste uporabljali različna imena polj, kot so bila določena prej v tem članku, si boste morali ogledati te predloge in zamenjati sklice na druga imena. Ne pozabite, da boste za to želeli uporabiti NOTRANJE ime polja in ne prikazanega imena.

Ko ste zadovoljni, da je predloga pripravljena za uporabo, se premaknite do knjižnice slogov in jo prenesite v mapo »XSL Style Sheets« (Seznami slogov XSL), nato pa kopirajte povezavo navzdol do datoteke. To nam bo omogočilo, da ga pozneje preprosto spremenimo ali pa ga dodamo v različne dele spletnega mesta, kot vas prosimo.

Nato se pomaknite na seznam in izberite pogled, ki ste ga ustvarili prej v tem članku. V meniju »Dejanja mesta« kliknite »Urejanje strani«.

Ukaz za urejanje strani v meniju »Dejanja mesta«

Poiščite spletni gradnik pogleda seznama na strani in odprite meni spletnega gradnika tako, da kliknete majhno puščico navzdol v zgornjem desnem kotu. V tem meniju izberite »Uredi spletni gradnik«.

Ukaz »Uredi spletni gradnik« v meniju spletnega gradnika

Odprl se bo meni spletnega gradnika na desni strani okna brskalnika.

Meni spletnega gradnika

Kliknite + za razdelek »Razno« in poiščite lastnost »XSL Link«.

Lastnost povezave XSL v meniju spletnega gradnika

Prilepite povezavo do datoteke XSL v knjižnico slogov, ki ste jo prej kopirali (to je lahko relativna ali absolutna povezava).

Povezava do datoteke XSL, prilepljena v

Kliknite »V redu«, da shranite spremembe, nato pa kliknite gumb »Ustavi urejanje« na traku »Stran« na vrhu strani.

Gumb »Ustavi urejanje« na zavihku »Stran«

Če je bila vse pravilno konfigurirano, bi zdaj morali videti številke v stolpcu »Dni v stanju«.

Dnevni v stolpcu »Stanje« prikazujejo število

In končno, tukaj je, kako bi bilo videti z nekaj testnih podatkov različnih datumov:

Poročilo o zapadlosti z vzorčnimi podatki

Povzetek:

To je: lepo oblikovan, robusten in bolj zmogljiv način za ustvarjanje poročila o zapadlosti v SharePointu., ki vključuje preprosto izvajanje brez kode. Poleg primera ene uporabe, ki smo ga raziskali tukaj, je bilo na voljo kar nekaj morebitnih aplikacij. Drugi pogost scenarij za to vrsto poročila je, da ga priložite seznamu opravil, tako da si lahko ogledate, koliko časa je od začetka, ko je bilo opravilo ustvarjeno.

Uživajte!

--Justin

Justin Joyce, LANtek

Pripombe

Manjkajoči koraki 8. 10. 2012 3:51 ok sem sledil korakom, vendar mora biti nekaj manjka - kako bo XSL vedeti, kateri datum uporabiti, ali katero polje dodati dni, odkar v? Sovražim, ko so koraki zgrešeni.

Brez kodeksa, dogovorjeno! 30. 8. 2012, 12:12 Strinjam se - Mislim, da to ne šteje kot "brez kode".Zanimivo je, da imam pri nekaterih izvijačih SharePointa delujoč izračunan stolpec, ki uporablja funkcijo Danes ... ne vem, kako ali zakaj, ker tega ne morem narediti znova, vendar je še vedno tam in deluje.

Formula za izračunani stolpec »Dnevi pri stanju«? 2. 5. 2012 7:39 Justin – Kakšna je formula, ki ste jo uporabili za stolpec izračunanega mesta »Dni v stanju« (stolpec označbe mesta)? Je bilo to »=today«?

SharePoint 2007 2. 12. 2011 11:29 Trenutno te rešitve nisem poskusil uporabiti za SharePoint 2007, vendar jo iščem. Žal ni na voljo nobene lastnosti XslLink, ki bi bila na voljo v spletnem gradniku prek uporabniškega vmesnika.

Odlična objava 30. 11. 2011 9:53 Zdravo Great Post.Uporabljam SharePoint 2007.Nimam razdelka Zamika, kot je navedeno zgoraj.Ali imate navodila za konfiguracijo servisnih paketov SP2007? Hvala.

Re: Rešitev brez kode: prikaz dni, odkar je bil element SharePointovega seznama nazadnje spremenjen 11. 10. 2011 8:24 Pozdravljeni, Chris.odlično najdi! Bom si oglejte, kaj ste objavili upa, da pozneje danes in videli, če lahko naredim to rešitev malo bolj robusten.Veseli me, da vam je bila objava všeč, in zelo sem vesel, da ste lahko našli rešitev za evropski datumski format. :) -Justin

Rešitev za evropske oblike zapisov datumov 11. 10. 2011 6:45 Pozdravljeni, Justin, FYI, sem našel rešitev za vprašanje, ki sem ga omenil prej na tej strani;https://sharepointbydummies.wordpress.com/2011/07/13/possible-work-around-to-date-format-issue-sharepoint-2010/

Evropske oblike zapisa datumov 7. 10. 2011 3:59 Pozdravljeni, Justin, To je res dobra rešitev hvala, in samo stvar, ki sem preživel v zadnjih dveh dneh iščejo! Vendar imam nekaj težav z njim in sem upal, da mi boste lahko pomagali.Sem spremenil kodo nekoliko kalkulat število dni, dokler se nekaj ne zgodi, namesto od takrat, s preklopom spremenljivke v zadnji vrstici funkcije "DateDiff"; <xsl:value-of select="$JulianToday - $JulianStartDate"></xsl:value-of> Vendar sem samo lahko, da bi jo kaktusulate razliko pravilno polovico časa. Tako na primer s tem datumom (oblika dd/MM/llll); 12. 30. 2011 Izračuna pravilno, vendar s tem datumom (ista oblika zapisa) 10. 12. 2011 Izračuna, kot da bi bilo 10-dec-2011 namesto 12-Okt-2011.Poskušal sem preprosto preklopiti položaje vrednosti za dan in mesec v spremenljivki "JulianStartDate", kot je ta; <xsl:with-param name="Month" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'yyyyMMdd'),7,2)"/> <xsl:with-param name="Day" select="substring(ddwrt:FormatDateTime(string($StartDate), 1033, 'yyyyMMdd'),5,2)"/> In to popraviti problem z drugim datumom, vendar pa je bilo potem napačno za prvi datum! Poskusil sem tudi spremeniti klice FormatDateTime za uporabo evropskih LCID-jev in različnih sprememb v zadnjem parametru parametra FormatDateTime (npr. ddMMyyyy, MMddyyyy) z ustreznimi prilagoditvami parametrov položaja podniza brez uspeha.Zelo bi bil hvaležen za vsak nasvet, ki ga lahko ponudiš.Hvala Chris

Brez kode 21. 9. 2011 4:27 Jaz don't think to XSL kvalifikator kot "brez kode" rešitev, kot razumevanje XSL jezik ni za vsakogar - vendar ne vključuje programiranje. Poleg tega: Nice rešitev, hvala!

Ali potrebujete dodatno pomoč?

Ali želite več možnosti?

Raziščite ugodnosti naročnine, prebrskajte izobraževalne tečaje, preberite, kako zaščitite svojo napravo in še več.