Category Archives: InfoPath 2007 // Сервер Forms Server

Урахування регістру порівняння в InfoPath

Я написав статтю для SharePointBriefing.com і вони терплять це живий сьогодні.

Ось тизер:

image

Перевірити його.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati:

Швидкий удар: Читання InfoPath XML безпосередньо з SPListItem в SharePoint

Я був роботи над проектом, де мені потрібно витягувати вкладення з форми InfoPath. Є деякі хороші ресурси для розбору форм InfoPath (які є лише XML-файли, так що це насправді досить легко).

Хоча я був створення проекту, Я почав, завантаживши форми InfoPath і зберігши її в мій місцевий жорсткий диск. Мій код c# читав безпосередньо з цього екземпляра. Однак, форм InfoPath дійсно живуть всередині форми бібліотеці SharePoint. Я трохи пошуку half серцем щоб дізнатися як це читати безпосередньо з бібліотеки і ледве не віддав, При цьому я б зберегти форму до локальної папки temp і читати його звідти. Однак, немає необхідності їхати через ці обручі, як ви можете прочитати його безпосередньо з бібліотеки. Цього невеликого фрагмента показує як:

/// Клас визначення речі тут, у тому числі:
приватні Файл SPFile mySharePointFile; /* Частиною SPList */
// Більше кодексу йде тут і всередині метод класу у нас:
XmlTextReader textReader;
textReader = нові XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Жоден;

textReader.Read();

// Якщо вузол має значення

під час (textReader.Read())
{

.. і т. д і т. д...

Вони ключові трохи вище є, що ми можемо прочитати InfoPath безпосередньо через на OpenBinaryStream() метод закликати на файл SPFile як параметр в конструктор на XmlTextReader. Він чудово працює.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati:

Програмним шляхом вилучення вкладення з форми InfoPath (Зокрема свої імена!)

У мене є рішення про витрати запис для клієнта, який використовує InfoPath і робочого процесу. В одній точці під час процесу затвердження, Мені потрібно для отримання електронної пошти, який має все, що гарні InfoPath дані, а також вкладення себе так, що (зітхання) хтось може прийняти ці дані та вручну re-key в застосунку бази даних Oracle.

Це не дуже важко отримати у або розібрати форм InfoPath. Я не знаю, як поводитися з вкладень, Однак. Після години або двох колупатися Інтернет (вічність!) Я знайшов цю статтю: http://support.microsoft.com/kb/892730

Вона забезпечує зручний код, щоб витягувати вкладення з вузла у вигляді. (Потрібно знайти вузол і все, що, але це просто розбору XML).

Я знаю, що вкладення кодуванням base64 і спочатку я пішов по шляху зі всього витягу в base64 даних, декодування його і його збереження. Однак, Я швидко зрозумів, що я не знаю, як отримати ім'я файлу, сама, поки я не знайшов вищезазначених статті.

Я насправді виявили, що досить рано, але я був відкладений з її роздвоєння особистості. З одного боку, у статті * каже * це добре для InfoPath 2007. Ще, код та інструкції є все про Visual Studio 2003 і посилання на InfoPath 2003.

Нижній рядок, код, що в статті умови, працює добре для мене (до цих пір). Я можу отримати мій форми InfoPath, Я може проаналізувати його, Можна знайти й декодувати вкладення, і я знаю своє ім'я. Що більше можемо один Запитайте свого життя?

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati: ,,

Якщо ви турбуєтеся, що середовища SharePoint може бути трохи нездорову, Дозвольте мені допомогти вам виправити, що з перевіркою справності.

Керуючий затвердження груп з InfoPath в FBA середовищі

У мене є рахунок процес затвердження, що мені потрібно впровадити використанням InfoPath у автентифікації на основі форм (FBA) середовища, за допомогою служб форм (веб-InfoPath).

Є дві групи затвердження і процес працює наступним чином:

  • Користувач заповнює звіту про витрати та подає її для затвердження.
  • Що викликає повідомлення електронної пошти до першого рівня затверджувача групи.
  • Першого рівня затверджувача розглядає і затверджує або відхиляє звіт.
  • Якщо перший рівень людини затверджує його, система повідомляє другого рівня затверджувач.

На боці InfoPath речей, У мене є різні розділи, які з'являються сховати/засновані на те, чи користувач є членом однієї з цих груп затвердження.

В умовах FBA ім'я користувача() завжди повертає порожній, на жаль. Те, що я зробив настроєно за настроюваним списком під назвою «Групами схвалення».

Я не додавати будь-які додаткові стовпці до списку.

Коли форма відкриється, вона має правило наступним чином:

image

"Установити значення поля", тут:

image

Це в основному говорять: Запит затвердження Група настроюваним списком та фільтр надсилання запитів, дивлячись для будь-якого рядки де значення заголовок = "СКАНДИНАВСЬКИЙ".

Якщо це повертає будь-яке значення, потім поточний користувач є членом цієї групи. Я знаю, він містить значення тому, що довжина рядка більше за нуль.

Закрити петлі, забезпечення окремих елементів у списку груп затвердження. Під час роботи, Якщо поточний користувач не має відповідних безпеки доступ до цього пункту, то запит не повернеться, довжина рядка, будуть дорівнюють нулю, і тепер ви знаєте, поточного користувача не є частиною цієї групи. Цей факт можна використовувати, якщо необхідно у формі.

Це супер короткий письмовий звіт. Я впевнений, цейтнот або я хотів би представити більш докладно.

Я не знаю, як відповідні це, що я в FBA середовищі. Це, можливо, буде працювати добре у середовищі FBA, але я можу собі уявити випадків, де це було б корисно.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati: ,

InfoPath // Одним із пояснень "вийнятки при наданні форму System.Xml.XmlException: Неочікуваний кінець файлу час аналізу ім'я сталася. “

Я працював над InfPath формі сьогодні і зіткнулися з старий друг, "Вийнятки при наданні форму System.Xml.XmlException: Неочікуваний кінець файлу час аналізу ім'я сталася."

Це трапилося зі мною довгий час тому, і я не знаю, що точно, що я зробив, щоб вирішити її. Чесно, Я думаю, що я був перехід до нового проекту і ніколи не бачив цього вирішені (мій замін доводилося мати справу з цієї головний біль). Я пам'ятаю це диявол проблема. Я провів кілька невдалих днів справу з ним. З тих пір, Я бачив це прибути на MSDN форумах принаймні один раз протягом останнього року і ніколи не бачив відповіді за це.

Я вдарив його сьогодні і на щастя на цей раз , Я просто вніс зміни до форми. Я підтримали, що зміна і проблема пішов. Виявляється, що це можливо для створення від шаблону за допомогою InfoPath Designer таким чином, що вона генерує Помилка аналізу на стороні сервера форм забору.

У моєму випадку, проблема була викликана такі дії.:

  1. Додати новий елемент до джерела даних як текстового поля.
  2. Відпустіть його форму.
  3. Змінити його відображення в випадаючому списку.
  4. Розкажіть зі спадного списку тягнути його значення з настроюваним списком SharePoint.

Я не знаю, якщо ці кроки викликати проблеми або, може бути, так чи інакше дані у списку, сама є проблемою. Я збираюся трохи поекспериментувати і подивитися, якщо я можу нігтів downt він параметрів цього з будь-якої більш докладно.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati:

Вбудувати розробник відзначає, усередині форми InfoPath

Я все ще живуть у світі форм InfoPath, і мені потрібно, щоб один з цих "малих" змін до форми,, на жаль, перерви іменуванні я прийняв з ним два тижні тому. Я подумав про себе, "хтось збирається дивитися на те, що на рік і сказати, ' Що думав Пол? Оглянуто Jove, його іменуванні немає сенсу!”

Я зрозумів, що я міг би створити подання у формі для цього і потім, Знову, зрозумів, що я міг були робити щось на зразок цього все, уздовж. Подання «Розробник записки», додане до форми InfoPath як такої:

image

Мною було настроєно у формі, так що користувачі не можуть отримати до цього подання і, отже,, це видно тільки з клієнтом InfoPath у режимі конструктора. Тепер я відчуваю себе трохи Прищеплені проти деяких майбутніх невідомий розробник, дивлячись на мою форму і мислення поганих думок про мене. Тьху!

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati:

Керування InfoPath переглядів

Я, здається, проходити через фази InfoPath де, ясного, Я впевнений, crafting купу форм. Мої пальці, дізнатися, як використовувати засіб добре, і тоді я пройти через дев'ять місяців посухи і вивчити її знову і знову.

Я перебуваю в середині InfoPath фази і я створюю форм InfoPath з великою кількістю переглядів. Одна річ, ви напевно помітили, що в тому, що InfoPath 2007 клієнт показує переглядів за алфавітом. Це реальною неприємністю кілька разів. Мій найкращий метод у ці дні є prepend номер на ім'я подання, так що вони завжди показувати у порядку, я хочу, як показано тут:

image

Шкода, що я робив це весь час.

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati:

Форма InfoPath послуги, Форми на основі автентифікації (FBA) і унікальні імена

Я був роботи на деякі форми InfoPath на цьому тижні в MOSS в середовищі FBA і дізнався, Коли я підійшов до розгортання форм на виробничому середовищі з послугами FBA зони, що ім'я користувача() функція функція не працює. Я використовував його для створення унікальні імена.

Ну, Ця функція не працює в середовищі FBA (по крайней мере, не з коробки). І, після деяких роздумів, за допомогою імені користувача в тому, як я планував б не мати гарантований унікального імені файлу у будь-якому випадку.

Моє рішення було використовувати в даний час() функції та правила, що пожежі на завантаження форми. Я призначити ім'я файлу даних-елементом при пусте:

image

image

Перевага такого підходу полягає в тому, що ім'я файлу встановлено лише один раз. (Не показувати в знімок екрану, але покласти умова потрібно тільки вогонь, коли "myFilename" пусте правило). Я використав, щоб встановити ім'я файлу на рівні джерело даних. Зазвичай, Зробити щось (Поганий) Ось так:

image

Проблема в тому, що якщо в понеділок відкриття форми користувачем A і B зміни його у вівторок, в кінцевому підсумку з двома різними формами так як дві різні користувачі зберегли його з іншого користувача імена.

Так, як дратує, як FBA може бути в цілому і з InfoPath зокрема, Він змусив мене переосмислити невеликий, але дуже важливий технічних деталей і підхід, який я б не зробити інакше!

</кінець>

Підписатися на мій блог.

Йди за мною на Twitter в http://www.twitter.com/pagalvin

Бірки Technorati:

Швидкий і простий: Зробити це форма InfoPath тільки для читання (InfoPath утворює послуг в MOSS)

Існує загальний сценарій бізнес, як це:

  • Заповнення користувачем форми InfoPath.
  • Надсилає форму.
  • Стартує тривалої робочий процес.
  • Під час виконання робочого процесу, Ми не хочемо нікого змінити вміст форми.

У цьому прикладі office.microsoft.com описує як створити окремий вигляд"" і позначити весь погляд, лише для читання. Це є працездатним підхід, але має недолік, що ви ефективно створив дві версії весь ж форми і повинен тепер забезпечити їх синхронізацію вручну. Якщо поле додається до подання для редагування, Ви повинні додати до незмінюваних зору, як добре. З часом, з різними розробниками, Там можуть бути деякі розбіжність.

Ця альтернатива може працювати краще, в деяких випадках:

  • Додавання нового поля до форми, називається "IsEditable".
  • Встановити значення за замовчуванням для true.
  • Просувати його під час публікування МОСС.
  • Робочого циклу, встановіть значення IsEditble на false.
  • Повернутися до форми.
  • Додати правило, що "при відкрити форму", вимкнути ваш кнопки "Зберегти" при IsEditable є помилковим.

Недолік цього підходу, що всі поля як і раніше буде можна редагувати на екрані. Користувач може отримати помилкове враження, що вони дійсно можуть змінити зміст. Ви можете пом'якшити це, поставивши якийсь текст, що вигляді відключена, Можливо, у великі червоні літери у верхній частині сторінки.

В одному проекті, Я створив на "стан робочого циклу" подання. Як прогресувала робочого циклу, Це буде оновлювати особливий статус поля, які дослужився із форми. Коли користувач відкрив у формі, "Відкрити форму" правило автоматично переключився подання та користувач мав nice мало статус резюме.

</кінець>

Підписатися на мій блог.

Переключення подання подання на основі Ідентифікатор користувача у формі InfoPath

Ми мали розвиненою InfoPath форми з кількома поданнями для підтримки нового Прокат / процес-інтернат. Коли компанія наймає новою людиною, відділ інформаційних технологій та інші групи потрібно вжити (Настроювання заробітної плати, Дозволити доступ до відповідних програм, Знайдіть на обслуговування, д). Ми використовуємо на формі, але інше подання форми для кожного з цих функцій.

У цій компанії, Більшість людей, що беруть участь в бізнес-процесу, ІТ підкований, тому, коли вони отримати доступ до форми, їх подання за промовчанням є "меню" Перегляд за допомогою кнопки, яка направляти їх певну функцію. Однак, нам необхідно спростити речі для нових прокат безпосередній керівник. Ця людина не повинні бачити будь-якої з ІТ пов'язані речі. Насправді, вона повинна переглянути лише одне подання, форми і навіть не параметр, щоб побачити інші переглядів.

У нашому випадку, що прямі, керівника обліковий запис безпосередньо пов'язана з форми люб'язно надані до засіб вибору контактів (який я завжди бажаючі називати "люди палітра" з різних причин).

Кроки є наступні:

1. У режимі конструктора, Виберіть сервіс-> Параметри форми-> Відкриття та збереження.

2. Виберіть "правила".

3. Створити нове правило, дія якої є "Перейти до перегляду" і чий умова використовує ім'я користувача() функція.

ім'я користувача() Повертає «простий" ім'я користувача без домену. Якщо я увійти в SharePoint з даними для "domainpagalvin", ім'я користувача() Повертає "pagalvin".

Контактна селектор надає три біта інформації контакту. "AccountID" частина є найбільш корисним для цього сценарію. Єдина річ, яка робить це ще трохи проблемою є те, що селекторі контактів (в моєму оточенні все одно) Повертає домену та користувача Ідентифікатор, як і в "domainpagalvin". Це заважає нам робити прямий рівності умову з AccountID ("domainpagalvin") ніколи не буде дорівнює ім'я користувача() ("pagalvin").

Ми може обійти це, використовуючи до "містить" Оператор: AccountID містить ім'я користувача().

Ми можемо прийняти його далі і pre панда жорстко домену перед ім'я користувача() функцію, щоб отримати наші рівності виїзду і виключити ризик помилкове спрацьовування на що містить оператор.

Ми б дійсно як автоматичне переключення подання для інших користувачів на основі їх оголошення групи безпеки членство. Наприклад, Коли член "це аналітика" Група отримує доступ до форми, автоматичне переключення до подання ІТ аналітика. У нас не було часу для його здійснення, але моя перша думка, щоб створити веб-служби, яка є метод, як "IsMemberOfActiveDirectorySecurityGroup", передати його ім'я користувача() і повернутися назад true або false. Хто-небудь є будь-який інший, більш розумна ідея? Чи є будь-яка функція SharePoint, ми можемо використовувати з InfoPath прийняти таке рішення?

</кінець>

Бірки Technorati: