Am scris un articol pentru SharePointBriefing.com şi l-au pus vii astăzi.
Aici este un teaser:
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Am scris un articol pentru SharePointBriefing.com şi l-au pus vii astăzi.
Aici este un teaser:
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Eu am fost de lucru pe un proiect în care am nevoie pentru a extrage ataşări la un formular InfoPath. Există unele resurse bune pentru parsarea formularele InfoPath (care sunt doar fişierele XML, Deci, este de fapt destul de uşor).
În timp ce am fost construirea proiectului, Am inceput prin descărcarea un formular InfoPath şi a-l salva pentru meu hard disc. Codul c# meu a fost citit direct din acest exemplu. Cu toate acestea, formularele InfoPath sunt într-adevăr trăiesc în interiorul o bibliotecă de formulare SharePoint. Am făcut jumătate suflet un deget mic cercetare pentru a afla cum să citiţi-l direct din bibliotecă şi aproape renunţat, în acest caz aş avea salvate formularul la o temp sincer locale şi citit-o de acolo. Cu toate acestea, nu este nevoie pentru a merge prin aceste cercuri ca să puteţi citi direct la Biblioteca. Acest mic fragment Arată cum:
/// Definiţia clasa de lucruri aici, inclusiv:
privat SPFile mySharePointFile; /* Parte dintr-o SPList */ // Codul de mai multe merge aici şi în interiorul unei metode din clasa avem: TextWriter = noi XmlTextReader(mySharePointFile.OpenBinaryStream()); textReader.WhitespaceHandling = WhitespaceHandling.Nici unul; textReader.Read(); // În cazul în care nodul are valoare în timp ce (textReader.Read()) { |
Ei cheie pic mai sus este că putem citi InfoPath direct prin OpenBinaryStream() metoda de apel SPFile ca parametru de la constructorul pe XmlTextReader. It works mare.
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Am o soluţie de intrare de cheltuieli pentru un client care valorifică InfoPath şi fluxul de lucru. La un moment dat în timpul procesului de aprobare, Am nevoie pentru a genera un e-mail care are toate bune date InfoPath, precum şi ataşamente ei înşişi astfel încât (suspin) cineva poate să ia că datele şi manual re-cheie într-o aplicaţie de baze de date Oracle.
Nu este foarte greu pentru a obţine la sau analiza formularul InfoPath. Nu ştiu cum să se ocupe de ataşamente, cu toate acestea. După o oră sau două de poking în jurul Internet (o eternitate!) Am gasit acest articol: http://support.microsoft.com/kb/892730
Acesta oferă unele cod la îndemână pentru a extrage atasat la un nod în formă. (Tu liniştit nevoie pentru a găsi nodul şi că toate, dar asta e doar analiză XML).
Ştiu că Atasamentul este base64-codificate şi am mers iniţial calea doar extragerea datelor base64, decodare-l şi de economisire. Cu toate acestea, Am dat seama repede nu ştiam cum să obţineţi numele de fişier în sine, până când am găsit articolul anterior.
Am avut de fapt constatat că destul de devreme, dar am fost pus în afara de sa personalitate split. Pe de o parte, articolul * spune * este bun pentru InfoPath 2007. Încă, cod şi instrucţiunile sunt toate despre Visual Studio 2003 şi trimiterile la InfoPath 2003.
Linie de fund, codul acest articol cu condiţia este de lucru bine pentru mine (până în prezent). Pot obţine meu formular InfoPath, Eu pot analiza l, Pot găsi şi decoda ataşarea şi ştiu numele său. Ce mai se poate cere de la o viata?
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Dacă sunteţi îngrijorat de faptul că mediul de SharePoint poate fi un pic nesănătoase, a permite eu ajutor tu fix care cu un control de sănătate.
Eu am un proces de aprobare cheltuieli care am nevoie pentru a pune în aplicare folosind InfoPath în o autentificare formulare bazate (HAMBURG) mediu folosind servicii de formulare (Web bază InfoPath).
Există două grupuri de aprobare şi procesul funcţionează în felul:
Pe partea de InfoPath de lucruri, Am diferite secţiuni care ascunde/apar bazate pe dacă utilizatorul este un membru al una dintre acele grupuri de aprobare.
Într-un mediu FBA numele de utilizator() funcţia întoarce întotdeauna necompletat, din păcate. Ceea ce am făcut este configurat un o listă particularizată numit "Grupuri de aprobare".
Nu adăuga orice coloane suplimentare la lista.
Când se deschide formularul, ea are o regula ca aceasta:
"Valoarea unui câmp" este aici:
Acest lucru este practic spune: Interogare aprobarea grup particularizat lista şi filtru care interogare prin căutarea pentru orice rând în cazul în care titlul pe valoare = "NORDIC".
Dacă care returnează nici o valoare, apoi utilizatorul curent este un membru al acelui grup. Ştiu că acesta conţine valoarea pentru lungime de şir este mai mare decât zero.
Închide bucla de fixare elementele individuale din lista de grupuri de aprobare. La run-time, Dacă utilizatorul curent nu are securitate acces la acel articol apoi interogarea nu va reveni, şir de lungime va fi zero şi acum ştiţi utilizatorul curent nu este parte a grupului. Puteţi utiliza faptul că este necesar în forma.
Aceasta este o scrie-up super scurtă. Eu sunt presat de timp sau mi-ar oferi mai multe detalii.
Nu ştiu cât de relevantă este că eu sunt într-un mediu FBA. Acest lucru ar lucra, probabil, bine într-un mediu non-FBA, dar îmi pot imagina cazurile în care acest lucru ar fi util.
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Am fost de lucru pe o formă de InfPath astăzi şi a fugit împotriva un vechi prieten, "Excepție netratată prestărilor de forma System.Xml.XmlException: Neaşteptate sfârșit de fișier în timp ce parsarea numele s-a produs."
Acest lucru sa întâmplat cu mine mult timp în urmă şi nu ştiu ce exact am făcut pentru a rezolva. Sincer, Cred că a fost trecerea la un nou proiect şi văzut niciodată acest lucru rezolvat (înlocuiri meu a trebuit să se ocupe cu acea durere de cap). Îmi amintesc a fost un diavol de o problemă. Mi-am petrecut câteva zile fără succes de-a face cu ea. De atunci, Am văzut acest lucru veni pe MSDN forumuri cel puţin o dată anul trecut şi văzut niciodată într-adevăr un răspuns pentru el.
L-am lovit azi şi din fericire de data asta , Am făcut doar o schimbare pentru a forma. Am susţinut că schimbare şi problema a plecat. Se pare că este posibil pentru a crea o de şablon utilizând InfoPath Designer într-un mod care genereaza o eroare de interpretare pe partea de server de forme de gard.
În cazul meu, problema a fost cauzată de aceşti paşi:
Nu ştiu dacă aceste etape provoca o problemă sau, poate,, într-un fel datele din lista în sine este o problemă. Am de gând să experimenteze un pic şi a vedea dacă am putea unghii downt el parametrii de acest lucru cu orice detaliu.
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Eu încă mai locuiesc în formulare InfoPath lume şi am nevoie pentru a face una din aceste "mici" modificări la un formular care, din păcate, pauze o convenţie de denumire am adoptat cu el două săptămâni în urmă. M-am gândit la mine, "cineva se întâmplă să se uite la acest lucru un an de acum şi să spună, "Ce gândeam Paul? De Jove, lui convenţie de denumire nu are sens!”
Am dat seama că ar putea crea o vizualizare formular pentru acest lucru şi apoi, din nou, dat seama că am putut făcut ceva de genul asta toate-a lungul. Am adăugat o vedere de "Dezvoltator note" formular InfoPath ca atare:
Am configurat forma astfel încât utilizatorii nu pot ajunge la acel şi, prin urmare,, este doar vizibile cu clientului InfoPath în Vizualizare proiect. Acum mă simt un pic inoculat împotriva unor viitoare dezvoltator necunoscut privindu-mi forma și gândire gândurile rele despre mine. Pfiu!
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Am par să treacă prin fazele InfoPath în cazul în care, din senin, Eu sunt crafting o grămadă de forme. Degetele mele învăţa cum să utilizaţi instrumentul bine şi apoi mă duc prin secetă nouă luni şi trebuie să-l înveţe peste tot din nou.
Eu sunt în mijlocul unei faze de InfoPath şi eu sunt crearea de formulare InfoPath cu o mulţime de opinii. Un lucru veţi observa, probabil, este că InfoPath 2007 clientul prezinta opinii în ordine alfabetică. Aceasta este o adevarata pacoste unele ori. Tehnica mea cel mai bun in aceste zile este să adauge un număr de nume de vizualizare, astfel încât acestea să arate întotdeauna în ordine vreau, după cum este ilustrat aici:
Mi-aş dori eu au fost fac asta tot timpul.
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Am fost de lucru pe unele formulare InfoPath în această săptămână în MOSS într-un mediu FBA şi învăţat, Când m-am dus pentru a implementa formularele pentru un mediu de producţie cu o FBA zona care numele de utilizator() funcţia de funcţia nu funcţionează. Am fost folosind-o pentru a genera nume unic.
Bine, Această funcţie nu funcţionează într-un mediu FBA (cel puțin, nu din cutie). Şi, la reflecţie, folosind numele de utilizator în modul în care am avut planificate nu ar avea garantat un nume unic în nici un caz.
Soluţia mea a fost de a folosi acum() funcţia şi o regulă care incendii pe încărcarea formularului. Atribuie numele de fişier pentru a element de date atunci când este gol:
Avantajul acestei abordări este că numele fişierului este setată o singură dată. (Eu nu-l arate în ecran shot, dar pune o condiţie regulă de la foc numai atunci când "myFilename" este necompletat). Am folosit pentru a seta numele fişierului la nivelul de sursă de date. De obicei, Mi-ar face ceva (rău) aşa:
Problema cu asta este că, dacă utilizatorul A deschide formularul luni şi utilizator B se schimbă pe marţi, veţi termina cu două forme diferite din doi utilizatori de diferite se salva cu nume de utilizator diferit.
Deci, ca enervant ca FBA poate fi în general şi cu InfoPath în special, a făcut-mi re-cred că un mic, dar foarte importante detalii tehnice şi abordări care nu aş fi făcut altfel!
</scop>
Urmaţi-mă pe Twitter, la http://www.twitter.com/pagalvin
Este un scenariu de afaceri comune ca acest:
Acest exemplu office.microsoft.com descrie cum se creează o vizualizare separată"" şi marca întreaga Vezi ca doar-în-citire. Aceasta este o abordare funcţional, dar are dezavantajul că vă eficient creat două versiuni tot de aceeaşi formă şi trebuie acum să le păstreze în sincronizare manual. Dacă adăugaţi un câmp editabil Vezi, apoi trebuie să adăugaţi aceasta la vizualizarea nu este editabil, precum şi. În timp, cu dezvoltatorii de diferite, pot exista unele divergenţe.
Această alternativă ar putea să funcţioneze mai bine, în unele cazuri:
Dezavantaj la această abordare este că toate câmpurile vor fi încă editabil pe ecran. Utilizatorul îşi poate accesa o falsa impresie că ei de fapt pot modifica conţinutul. Tu care pot atenua prin punerea în text că formularul este dezactivat, eventual, litere mari rosu peste partea de sus a paginii.
Într-un singur proiect, Am creat o stare de"flux de lucru" Vezi. Fluxul de lucru progresat, Acesta va actualiza câmpurile statut special care a fost promovat la forma. Când utilizatorul deschide formularul, "Deschideţi formularul" regula automat trecut la că Vezi şi utilizatorul a avut un statut frumos mic rezumat.
</scop>
Am avut o dezvoltat un formular InfoPath cu mai multe vizualizări pentru a sprijini o locație nouă / procesul de pe-internat. Când compania angajeaza persoana noi, departamentul IT şi alte grupuri trebuie să ia măsuri (parametrizaţi salarizare, permite accesul la aplicaţii corespunzătoare, Localizaţi un birou, etc). Vom folosi pe forma, dar o opinie diferită de forma pentru fiecare dintre aceste funcţii.
La această societate, cele mai multe dintre persoanele implicate în procesul de afaceri eşti IT-savvy, asa ca atunci cand au acces la forma, vizualizarea lor implicită este un meniu"" Vezi cu butoane care le direct la funcţia lor specifice. Cu toate acestea, avem nevoie de a simplifica lucrurile pentru noi de inchiriat directe manager. Această persoană nu ar trebui să vedeţi orice de IT chestii legate de. de fapt, ea ar trebui să vedeţi doar o vizualizare a formularului şi nu au chiar o opţiune pentru a vedea alte vizualizări.
În cazul nostru, care directă a managerului de cont este direct legat de formă curtoazie de un selectorul de contact (care am sunt întotdeauna doresc să numim "oameni selectorul de" pentru un motiv oarecare).
Paşii sunt după cum urmează:
1. În modul proiectare, du-te la Tools-> Opţiuni formular-> Deschiderea şi salvarea.
2. Selectaţi "reguli".
3. Crearea unei reguli noi ale căror acţiune este "comutare pentru a vizualiza" şi ale căror condiţie pârghii numele de utilizator() funcţia.
userName() Întoarce "simplu" numele de utilizator fără domeniu. Dacă eu log în SharePoint cu acreditări de "domainpagalvin", userName() Întoarce "pagalvin".
Selectorul de contacte oferă trei biţi de informaţii pentru un contact. "AccountID" porţiune este cel mai util pentru acest scenariu. Singurul lucru care face acest lucru chiar şi un pic de provocare este că selectorul de contact (în mediul meu oricum) Întoarce Identificatorul de domeniu şi de utilizator, ca în "domainpagalvin". Aceasta ne împiedică de la a face un afecţiune egalitatea de drept-înainte de AccountID ("domainpagalvin") niciodată nu este echivalent cu nume de utilizator() ("pagalvin").
Putem obţine în jurul acest folosind "conţine" operatorul: AccountID conţine nume de utilizator().
Putem lua it suplimentare şi pre-Comitatul pend un domeniu greu codificate în faţa numele de utilizator() funcţia de a obţine noastre selectare egalitatea şi elimina riscul de fals pozitivă pe conţine operatorului.
Vom avea cu adevărat ca să comuta automat Vezi pentru alt users bază on lor membru al grupului de securitate AD. De exemplu, atunci când un membru al "IT Analytics" Grupa accesează formularul, comuta automat la vizualizarea de analiză IT. Nu am avut timp să pună în aplicare, dar primul meu gând este de a crea un serviciu web care ar avea o metodă ca "IsMemberOfActiveDirectorySecurityGroup", să-l daţi numele de utilizator() şi a reveni înapoi adevărat sau fals. Oricine are orice alte, idee geniala mai multe? Există orice funcţie de SharePoint noi puteţi pârghie de InfoPath să facă determinarea?
</scop>