ארכיון קטגוריה: InfoPath 2007 // שרת טפסים

מכה מהירה: קריאה InfoPath XML ישירות מ- SPListItem ב- SharePoint

. הייתי עובד על פרויקט שבו אני צריך לחלץ קבצים מצורפים טופס InfoPath. ישנם כמה מקורות טובים עבור פרישת טפסי InfoPath (אילו הם רק קבצי XML, אז זה בעצם די קל).

בזמן שבניתי לפרוייקט, התחלתי להוריד טופס InfoPath באופן שמירתו לכונן הקשיח המקומי שלי. קוד c# שלי קראתי ישירות מתוך מופע זה. עם זאת, הטפסים של InfoPath ממש חיים בתוך ספריית טפסים של SharePoint. חצי לב קצת חיפוש כדי לגלות איך לקרוא אותה ישירות מספריית ואני כמעט ויתרתי, ובמקרה הייתי צריך לשמור את הטופס ספריה זמנית מקומית, לקרוא את זה משם. עם זאת, אין צורך לעבור דרך החישוקים כפי שאתה יכול. לקרוא את זה ישירות מספריית. מקטע קטן זה מראה איך:

/// הגדרת מחלקה דברים כאן, כולל:
פרטי SPFile mySharePointFile; /* חלק SPList */
// קוד נוסף מופיע כאן ועלינו בתוך שיטה של הכיתה:
XmlTextReader textReader;
textReader = חדש XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.אף אחד;

textReader.Read();

// אם הצומת יש ערך

תוך כדי (textReader.Read())
{

. וכן הלאה וכן הלאה...

אנשי מפתח קצת לעיל הוא כי אנחנו יכולים לקרוא את InfoPath ישירות באמצעות OpenBinaryStream() שיטת לקרוא SPFile כפרמטר לבנאי-XmlTextReader. זה עובד נהדר.

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

תגיות טכנורטי:

באופן תוכניתי חילוץ קבצים מצורפים טפסים של InfoPath (כולל שמות שלהם!)

יש לי פתרון הזנת הוצאות עבור לקוח זה ממנף את InfoPath של זרימת העבודה. בשלב מסוים במהלך תהליך האישור, אני צריך ליצור הודעת דואר אלקטרוני המכילה את כל הנתונים של InfoPath טוב, כמו גם את הקבצים המצורפים עצמם כך (אנחה) מישהו יכול לקחת נתונים אלה, באופן ידני להקליד אותו מחדש לתוך יישום מסד הנתונים של Oracle.

. זה לא קשה מאוד להשיג או לנתח את הטופס של InfoPath. לא ידעתי איך להתמודד עם הקבצים המצורפים, עם זאת. אחרי שעה או שעתיים של לרחרח את האינטרנט במלואו (נצח!) מצאתי את המאמר הזה: http://support.microsoft.com/kb/892730

זה לספק קוד שימושי לחלץ את הקובץ המצורף מצומת בטופס. (אתה עדיין צריך למצוא את הצומת וכל זה, אבל זה רק ניתוח XML).

אני יודע כי הקובץ המצורף הוא מקודד base64, במקור הלכתי במורד השביל של חילוץ רק נתוני base64, פענוח זה ושמירתה. עם זאת, אני הבנתי מהר. לא ידעתי איך להשיג את שם הקובץ עצמו עד שמצאתי את המאמר הנ.

היה למעשה גיליתי שזה די מוקדם, אך נדחה על ידי שלה פיצול אישיות. מצד אחד, המאמר * אומר * זה טוב עבור InfoPath 2007. עדיין, הקוד וההוראות הם הכל על Visual Studio 2003 הפניות ל- InfoPath 2003.

השורה התחתונה, הקוד כי סעיף בתנאי עובד טוב בשבילי (עד כה). אני יכול להשיג את הטופס של InfoPath שלי, יוכלו לנתח את זה, אני יכול למצוא, לפענח את הקובץ המצורף ואני יודע את שמו. מה עוד אפשר לבקש על חייו של כל אחד?

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

תגיות טכנורטי: ,,

אם אתה דואג כי סביבת SharePoint שלך עשוי להיות מעט לא בריא, . תן לי לעזור לך לתקן את זה עם צ'ק בריאות.

ניהול קבוצות אישור עם InfoPath סביבה FBA

. יש לי תהליך אישור ההוצאות שאני צריך ליישם את השימוש ב- InfoPath באימות טפסים המבוססים (FBA) סביבה באמצעות שירותי טפסים (InfoPath מבוסס אינטרנט).

ישנן שתי קבוצות אישור ועובד התהליך כזה:

  • המשתמש ממלא דוח הוצאות, שולח אותו לאישור.
  • זה מעורר דואר אלקטרוני לקבוצת המאשר ברמה הראשונה.
  • המאשר הראשון ברמת דעת, שמאשר או דוחה את הדו ח.
  • אם האדם ברמת הראשון אישר את זה, המערכת מודיעה המאשר ברמה השנייה.

בצד של InfoPath של דברים, יש לי חלקים שונים המופיעים הסתר/בהתבסס על אם המשתמש הוא חבר של אחת מקבוצות אלה אישור.

סביבה FBA שם המשתמש() הפונקציה מחזירה תמיד ריק, למרבה הצער. מה שעשיתי הוא להגדיר רשימה מותאמת אישית בשם "אישור קבוצות".

לא להוסיף עמודות נוספות לרשימה.

כאשר הטופס נפתח, יש חוק כזה:

image

"קביעת הערך של שדה" נמצא כאן:

image

זה אומר בעצם: השאילתה הרשימה המותאמת אישית קבוצתית אישור וכי מסנן שאילתה על-ידי מחפש כל שורה היכן הערך של הכותרת = "נורדיק".

אם זה מחזיר ערך כלשהו, לאחר מכן המשתמש הנוכחי הוא חבר בקבוצה זו. אני יודע שהוא מכיל ערך זה כי אורך המחרוזת הוא גדול מאפס.

סגור את הלולאה נאבטח את הפריטים הבודדים ברשימה אישור קבוצה. בזמן ריצה, אם המשתמש הנוכחי אין אבטחה מתאימות גישה לפריט הזה ואז השאילתה לא להחזיר אותו, יהיה מחרוזת באורך אפס, עכשיו אתה יודע המשתמש הנוכחי הוא לא חלק מהקבוצה. באפשרותך להשתמש בעובדה כנדרש בטופס.

זה טרמפ סופר קצר. אני לחוצה בזמן או יספק לי יותר פרטים.

אני לא יודע עד כמה זה רלבנטי שאני בסביבה FBA. זה בטח יעבוד טוב בסביבה הלא-FBA אבל אני יכול לדמיין מקרים שבהם זה יהיה שימושי.

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

תגיות טכנורטי: ,

InfoPath // הסבר אחד עבור "חריג בעת עיבוד טופס System.Xml.XmlException: בסוף הקובץ לא צפוי במהלך ניתוח מבנה טקסט שם אירעה. “

אני עובד על טופס InfPath היום, נתקלה ידיד ותיק, "מצב חריג בעת עיבוד טופס System.Xml.XmlException: בסוף הקובץ לא צפוי במהלך ניתוח מבנה טקסט שם אירעה."

זה קרה לי לפני הרבה זמן ואני לא יודעת מה בדיוק עשיתי כדי לפתור את זה. בכנות, אני חושב כי היה כבר מעבר פרוייקט חדש, מעולם לא ראיתי את זה לפתור (החלפות שלי נאלץ להתמודד עם כאב ראש). אני זוכר שזה היה השטן של בעיה. ביליתי מספר ימים לא הצליחו להתמודד עם זה. מאז, ראיתי את זה לעלות על פורומים MSDN לפחות פעם אחת בשנה האחרונה, לא ממש ראיתי תשובה על זה.

פגעתי בו כיום, למרבה המזל. הפעם , בדיוק עשיתי שינוי הטופס. . חזרתי השינוי והלך הבעיה. מסתבר שזה אפשרי ליצור מתבנית באמצעות InfoPath מעצב כך מוליד שגיאת ניתוח מבנה מנשר בצד שרת הטפסים של הגדר.

במקרה שלי, הבעיה נגרמה על ידי הפעולות הבאות:

  1. הוסף רכיב חדש למקור נתונים שדה טקסט.
  2. זרוק אותו על גבי הטופס.
  3. לשנות את התצוגה זה לתוך הרשימה הנפתחת.
  4. ספר הנפתחת רשימה כדי למשוך את הערכים שלו מרשימת SharePoint מותאמות אישית.

. אני לא יודע אם הצעדים הללו לגרום לבעיה או אולי, איכשהו הנתונים ברשימה עצמה היא בעיה. אני הולכת להתנסות קצת ולראות אם אני יכול. לדפוק downt פרמטרים הוא זה עם פרטים נוספים.

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

תגיות טכנורטי:

להטמיע הערות מפתח בתוך הטפסים של InfoPath

אני עדיין חי בעולם טפסי InfoPath והייתי צריך לבצע אחד מהשינויים האלה "קטן" בטופס זה, למרבה הצער, שובר מוסכמה שאימצתי עם זה לפני שבועיים. חשבתי לעצמי, "מישהו עומד לבחון את הדבר הזה שנה עכשיו ולומר, "מה חשב פול? יופיטר, המוסכמה שלו לא הגיוני!”

הבנתי כי אני יכול ליצור תצוגה על גבי טופס בשביל זה, ואז, שוב, הבנתי כי אני יכול לעשות משהו כזה לאורך כל הדרך. הוספתי "פיתוח הערות" נוף אל הטופס של InfoPath ככזה:

image

הגדרתי את הטופס כך שמשתמשים לא יכולים לקבל תצוגה זו ולכן, . זה רק גלויה עם הלקוח InfoPath בתצוגת עיצוב. . עכשיו אני מרגיש קצת חוסנו נגד איזה יזם לא ידוע בעתיד מסתכל לי טופס, לחשוב מחשבות רעות עליי. אוף!

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

תגיות טכנורטי:

ניהול תצוגות של InfoPath

אני מצליח לעבור שלבים InfoPath איפה, כרעם ביום בהיר, אני אני crafting חבורה של טפסים. האצבעות שלי ללמוד כיצד להשתמש בכלי טוב, ואז לעבור את הבצורת בתשעת החודשים ויש ללמוד את זה שוב.

. אני באמצע שלב InfoPath, אני יוצר טפסי InfoPath עם הרבה צפיות. דבר אחד שודאי הבחנת זה של InfoPath 2007 הלקוח מציג תצוגות אלפביתי. . זה מטרד אמיתי כמה פעמים. הטכניקה הכי טובה שלי בימים אלה היא גם לצרף מספר על שם התצוגה כך שהם תמיד מוצגים לפי הסדר שאני רוצה, כפי שמוצג כאן:

image

הלוואי שאני עושה את זה כל הזמן.

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

תגיות טכנורטי:

שירותי טופס של InfoPath, טפסים מבוסס אימות (FBA) שמות קובץ ייחודי

אני כבר עובד על כמה טפסים של InfoPath השבוע ב- MOSS בסביבת FBA ולמדתי, כשהלכתי לפרוס הטפסים על סביבת הייצור עם FBA אזור זה שם המשתמש() פונקציית הפונקציה אינה פועלת. השתמשתי בזה כדי ליצור שמות קבצים ייחודיים.

. טוב, התפקיד הזה לא עובד בסביבת FBA (לפחות, לא מחוץ לקופסה). ו, על השתקפות, באמצעות שם המשתמש והסיסמה כפי שתכננתי לא יש מובטח שם קובץ ייחודי בכל מקרה.

הפתרון שלי היה להשתמש עכשיו() תפקוד ואת כלל שיורה על טעינה של הטופס. להקצות את שם הקובץ כדי רכיב נתונים כאשר הוא ריק:

image

image

היתרון של גישה זו היא כי שם הקובץ מוגדר רק פעם אחת. (אני לא מראה את זה במסך ירה, אבל לשים תנאי החוק לפתוח באש רק כאשר "myFilename" הוא ריק). נהגתי להגדיר את שם הקובץ ברמת מקור נתונים. בדרך כלל, שאני אעשה משהו (רע) כמו זה:

image

הבעיה עם זה היא כי, אם משתמש א' פותח את הטופס ביום שני ומשנה המשתמש B זה ביום שלישי, תגיעו עם שתי צורות שונות מאז שני משתמשים הציל אותה עם שמות משתמשים שונים.

כל כך, מציק ככל FBA ניתן באופן כללי עם InfoPath בפרט, זה גרם לי לחשוב מחדש על פרט טכני קטן אך חשוב מאוד ואת הגישה. זה מה שהייתי עושה אחרת!

</קצה>

מנוי על הבלוג שלי.

עקוב אחרי הטוויטר ב http://www.twitter.com/pagalvin

תגיות טכנורטי:

מהיר ופשוט: להפוך של טופס InfoPath לקריאה בלבד (InfoPath יוצר שירותים ב- MOSS)

יש תרחיש עסקי נפוץ כמו זה:

  • המשתמש ימלא טופס InfoPath.
  • שליחת טופס.
  • תהליך זרימת העבודה ארוכות-בעיטות מחוץ.
  • בעת הפעלת זרימת העבודה, אנחנו לא רוצים שמישהו כדי לשנות את התוכן של הטופס.

דוגמה זו office.microsoft.com מאמר זה מתאר כיצד ליצור תצוגה"נפרד" לסמן את כל התצוגה לקריאה בלבד. זו היא גישה מעשית אבל החיסרון כי אתה ביעילות יצירת שתי גרסאות כולו באותו הטופס, עליך עכשיו לסנכרן אותם באופן ידני. אם תוסיף שדה התצוגה ניתן לעריכה, לאחר מכן עליך להוסיף אותו בתצוגה שאינה ניתנת לעריכה גם כן. לאורך זמן, עם מפתחים שונים, תיתכן סטייה כלשהי.

חלופה זו יכול לעבוד טוב יותר במקרים מסוימים:

  • הוסף שדה חדש לטופס שנקרא "IsEditable".
  • מוגדר לערך ברירת המחדל, נכון.
  • לקדם את זה בעת פרסום מוס.
  • בתהליך העבודה, הגדר את הערך של IsEditble ל- false.
  • לחזור לטופס.
  • הוספת כלל אשר "בעת פתיחה של הטופס", בטל שלך שמור על כפתור כאשר IsEditable היא שקר.

החיסרון לגישה זו הוא כי כל השדות עדיין יהיה ניתן לעריכה על המסך. המשתמש יכול לקבל רושם מוטעה כי הם יכולים בעצם לשנות תוכן. באפשרותך לצמצם את זה על ידי הצבת טקסט כי הטופס אינו זמין, אולי באותיות אדומות לרוחב החלק העליון של הדף.

בפרוייקט אחד, יצרתי מצב זרימת עבודה'" תצוגה. ככל שזרימת העבודה התקדמה, זה לעדכן את השדות מצב מסוים זה היה קודם מהטופס. כאשר המשתמש פתח את הטופס, "הטופס פתוח" כלל אוטומטית החלפת תצוגה לבין המשתמש שיש מצב סיכום קטן נחמד.

</קצה>

מנוי על הבלוג שלי.

מתג תצוגה תצוגה המבוססת על זיהוי המשתמש בטופס של InfoPath

היינו פיתח טופס InfoPath עם תצוגות מרובות כדי לתמוך שוכרים חדשים / תהליך בפנימייה. כאשר החברה שוכר אדם חדש, מחלקת ה-IT, קבוצות אחרות צריכים לנקוט בפעולה (בצע כיוונון למשכורות, לאפשר גישה ליישומי המתאים, לאתר שולחן, ועוד). אנו משתמשים על טופס אבל מבט שונה על הטופס עבור כל אחת מהפונקציות האלה.

בחברה הזאת, רוב האנשים המעורבים בתהליך העסקי הם IT-פקחות, אז כאשר הם ניגשים לטופס, תצוגת ברירת המחדל שלהם היא "תפריט" הצג עם לחצנים לכוון אותן על תפקידם ספציפי. עם זאת, היינו צריכים לעשות את הדברים פשוטים למנהל הישיר של העובד החדש. אדם זה לא צריכה לראות שדברים קשורה של זה. למעשה, היא צריכה לראות תצוגה אחת בלבד של הטופס, אפילו לא יש אפשרות לראות תצוגות אחרות.

במקרה שלנו, זה ישיר לחשבון המנהל קשור ישירות הטופס באדיבות צור קשר עם בורר (אשר אני תמיד רוצה להתקשר "בורר האנשים" מסיבה כלשהי).

השלבים הם כדלקמן:

1. במצב עיצוב, ללכת על כלי-> אפשרויות טופס-> פתיחה ושמירה.

2. בחר "כללים".

3. יצירת כלל חדש פעולה אשר הוא "להחליף כדי להציג" שמצבם ממנף את שם המשתמש והסיסמה() פונקציה.

שם משתמש() החזרת התם"" שם המשתמש ללא המחשבים. אם יומן הרישום ל- SharePoint עם אישורי "domainpagalvin", שם משתמש() מחזירה "pagalvin".

בורר קשר מספק שלוש פיסות מידע של איש קשר. "קוד תיק לקוח" החלק השימושי ביותר עבור תרחיש זה. הדבר היחיד שעושה את זה אפילו קצת של אתגר זה בורר קשר (בסביבה שלי בכל מקרה) מחזירה את מזהה המשתמש והתחום, כמו "domainpagalvin". זה מונע מאתנו לעשות בתנאי שוויון ישר קדימה מאז קוד תיק לקוח ("domainpagalvin") לעולם לא תהיה שווה את שם המשתמש() ("pagalvin").

אנחנו יכולים לעקוף את זה בעזרת "מכיל" אופרטור: קוד תיק לקוח מכיל שם משתמש().

אנחנו יכולים לקחת אותה עוד יותר, pre-המתנה תחום קשיח לפני שם המשתמש() הפונקציה מקבל הצ'ק שלנו שוויון ולחסל את הסיכון של חיובי כוזב על מכילה אופרטור.

היינו ממש כמו לעבור אוטומטית תצוגה עבור משתמשים אחרים בהתבסס על החברות בקבוצת האבטחה שלהם לספירה. לדוגמה, כאשר חבר "זה ניתוח" קבוצת מכירות ניגשת אל הטופס, להחליף באופן אוטומטי בתצוגה זה ניתוח. לא היה לנו זמן כדי ליישם את זה, אבל המחשבה הראשונה שלי היא ליצור שירות אינטרנט שתהיה שיטה כמו "IsMemberOfActiveDirectorySecurityGroup", תעביר את שם המשתמש והסיסמה() ולחזור בחזרה אמת או שקר. ? האם מישהו אחר, עוד רעיון חכם? האם יש כל פונקציה SharePoint שאנחנו יכולים למנף את מ- InfoPath כדי להפוך את הנחישות?

</קצה>

תגיות טכנורטי: