Я написал статью для SharePointBriefing.com и они поставили его живут сегодня.
Вот дразнилку:
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin
Я написал статью для SharePointBriefing.com и они поставили его живут сегодня.
Вот дразнилку:
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin
Я был работает над проектом, где мне нужно извлекать вложения из формы InfoPath. Есть некоторые хорошие ресурсы для разбора формы InfoPath (которые являются просто XML-файлов, так что на самом деле довольно легко).
В то время как я строил проекта, Я начал загрузки формы InfoPath и сохранив его на мой локальный жесткий диск. Мой код c# чтении непосредственно из этого экземпляра. Однако, формы InfoPath действительно живут внутри в библиотеке форм SharePoint. Я сделал немного половину сердцем поиска, чтобы узнать, как читать его непосредственно из библиотеки и почти сдался, в этом случае я бы сохранить форму в локальный каталог temp и прочитать его оттуда. Однако, Существует не нужно идти через эти обручи, как вы можете прочитать его непосредственно из библиотеки. Этот маленький фрагмент показывает, как:
/// Класс определения вещи здесь, включая:
частные SPFile mySharePointFile; /* Частью SPList */ // Здесь находится более код и внутри метода класса у нас: textReader = Новые функции XmlTextReader(mySharePointFile.OpenBinaryStream()); textReader.WhitespaceHandling = WhitespaceHandling.Нет; textReader.Read(); // Если узел имеет значение во время (textReader.Read()) { |
Они основные бит выше, что мы можем читать InfoPath непосредственно через OpenBinaryStream() вызов метода на SPFile как параметр в конструктор на XmlTextReader. Он прекрасно работает.
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin
У меня есть счет записи решение для клиента, который использует 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 может быть tad нездоровым, Позвольте мне помочь вам исправить с проверка здоровья.
У меня есть процесса утверждения расходов, что мне нужно реализовать с помощью InfoPath в проверке подлинности на основе форм (FBA) окружающей среды с использованием служб форм (веб InfoPath).
Существует две группы утверждения и как работает процесс:
На стороне InfoPath вещи, У меня есть различные разделы, которые скрыть/появляются на основе того, является ли пользователь членом одной из этих групп утверждения.
В среде FBA имя пользователя() функция всегда возвращает пустой, к сожалению. Что я сделал настройки настраиваемого списка под названием «Утверждение групп».
Я не добавлять какие-либо дополнительные столбцы в список.
Когда форма открывается, Она имеет правило, как это:
«Установите значение поля» находится здесь:
В основном это говорю: Запрос утверждения группы настраиваемого списка и фильтр, запрашивающие, глядя на любой строке где Title в значение = «NORDIC».
Если это возвращает любое значение, затем текущий пользователь является членом этой группы. Я знаю, что он содержит значение, потому что длина строки больше нуля.
Закройте петли, защита отдельных элементов в списке Группа утверждения. Во время выполнения, Если текущий пользователь не имеет надлежащей безопасности доступа к этому элементу затем запрос не возвращает его, Длина строки будет равен нулю, и теперь вы знаете, текущий пользователь не является частью этой группы. Вы можете использовать этот факт при необходимости в форме.
Это супер краткая Рецензия. Я являюсь настаивали на время, или я бы обеспечить более подробно.
Я не знаю, как она актуальна, что я нахожусь в среде FBA. Это, вероятно, будет работать в среде не FBA, но я могу представить себе случаи, где это будет полезным.
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin
Я сегодня работает в InfPath форме и побежал против старого друга, «Необработанное исключение при отображении формы System.Xml.XmlException: Неожиданный конец файла при разборе имя произошла".
Это случилось со мной, долгое время назад, и я не знаю, что именно я сделал, чтобы решить ее. Честно говоря, Я думаю, что переход на новый проект и никогда не видел это одно решена (Моя замены пришлось иметь дело с этой головной боли). Помните, что это был дьявол проблемы. Я провел несколько неудачных дней, справиться с ним. С тех пор, Я видел это прийти на форумах MSDN по крайней мере один раз за последний год и действительно не видел ответ для него.
Я ударил его сегодня и к счастью этот раз , Я только что сделал изменения в форму. Я поддерживал, что изменения и проблема ушла. Оказывается, что это можно создать из шаблона с помощью конструктора InfoPath таким образом, что он генерирует ошибку парсинга на стороне сервера форм забора.
В моем случае, Эта проблема была вызвана эти шаги:
Я не знаю, если эти меры вызывают проблемы или, может быть, каким-то образом данные в списке, само по себе является проблемой. Я буду экспериментировать немного и посмотреть, если я могу ногтей downt параметры он это с любой Подробнее.
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin
Я до сих пор живет в мире формы InfoPath и мне нужно было сделать один из этих «small» изменений в форму,, к сожалению, влезает именования, которое я принял с ним две недели назад. Я подумал, «кто-то будет смотреть на эту вещь в год от теперь и говорю, «То, что думал пол? По Jove, его именования не имеет смысла!”
Я понял, что я мог бы создать представление в форме для этого и затем, Снова, понял, что я мог делать что-то вроде это все вместе. Я добавил представление «Заметки разработчика» в форме InfoPath как таковой:
Я настроен форму так, что пользователи не могут получить эту точку зрения и поэтому, он отображается только с клиента InfoPath в режиме конструктора. Теперь я чувствую себя немного привитых против некоторых будущих Неизвестный разработчик, глядя на мою форму и плохие мысли думать обо мне. Тьфу!
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin
Я, кажется, пройти через этапы InfoPath где, из голубой, Я Крафтинг кучу форм. Мои пальцы научиться использовать средство хорошо, и тогда я иду через девять месяцев засухи и должны изучать все заново.
Я нахожусь в середине фазы InfoPath и я создаю форм InfoPath с большим количеством просмотров. Одна вещь, вы, вероятно, заметите, что InfoPath 2007 клиент показывает вид в алфавитном порядке. Это реальная неприятность несколько раз. Мой лучший метод эти дни является цифру на имя представления, таким образом, чтобы они всегда показывать в порядке, в котором я хочу, как показано здесь:
Я желаю что я делал это все вместе.
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin
Я был работает на некоторых форм InfoPath в среде выполнения агента FBA на этой неделе в мох и уроки, Когда я пошел к развертыванию форм в производственной среде с FBA зоны, что имя пользователя() функция не работает. Я использую его для создания уникальных имен файлов.
Колодец, Эта функция не работает в среде выполнения агента FBA (по крайней мере, не из коробки). И, После некоторых размышлений, с помощью имя пользователя в том, что я планировал бы не гарантирует уникальное имя файла в любом случае.
Мое решение было использовать сейчас() Функция и правило, которое срабатывает при загрузке формы. Я назначить имя файла к элементу данных, когда она пуста:
Преимуществом этого подхода является, что имя файла задается только один раз. (Я не показывать его на снимке экрана, но поставить условие на правило только огонь, когда «myFilename» является пустым). Я использовал, чтобы задать имя файла на уровне источника данных. Обычно, Я хотел бы сделать что-то (Бад) Типа того:
Проблема с тем, что, если пользователь открывает форму в понедельник и пользователь Б изменяет его во вторник, Вы закончитесь вверх с двух разных форм, так как два разных пользователей спас его с другим именем пользователя.
Таким образом, как раздражает, как агент FBA может быть в целом и с InfoPath в частности, Это заставило меня переосмыслить небольшой, но очень важные технические детали и подход, что я бы не сделал иначе!
</конец>
Следуй за мной по щебетать на http://www.twitter.com/pagalvin
Существует общий сценарий бизнес, как этот:
Этот пример office.microsoft.com Описывает, как создать отдельный вид"" и Марк весь вид как доступное только для чтения. Это реальные подход, но имеет тот недостаток, что вы эффективно создали две версии всей той же формы и должны теперь держать их в синхронизации вручную. При добавлении поля в представление редактирования, Затем необходимо добавить его в представление нередактируемой также. Со временем, с разными разработчиками, Там может быть некоторое расхождение.
Эта альтернатива может работать лучше в некоторых случаях:
Недостатком этого подхода является, что все поля по-прежнему будет редактирования на экране. Пользователь может получить ложное впечатление, что они на самом деле могут изменить содержание. Можно снизить, поставив в некоторый текст, что форма отключена, возможно большой красными буквами в верхней части страницы.
В одном проекте, Я создал состояние рабочего процесса"" вид. По мере развития процесса, Он будет обновлять особый статус поля, которые способствовали из формы. Когда пользователь открывает форму, "открытой формы" правило автоматически переключается на мнение и пользователь имеет приятный мало резюме статуса.
</конец>
Мы имели развитые формы InfoPath с несколькими представлениями для поддержки новой Прокат / процесс адаптации. Когда компания нанимает нового лица, ИТ-отдел и другие группы необходимо принять меры (Настройка заработной платы, разрешить доступ к соответствующим приложениям, Найдите стол, и т.д.). Мы используем на форме, но различное представление формы для каждого из этих функций.
В этой компании, Большинство людей, участвующих в бизнес-процессе являются ИТ подкованных, Поэтому, когда они доступ к форме, их представление по умолчанию является "меню" Просмотр с кнопками, направить их на их конкретные функции. Однако, нам необходимо упростить вещи для нового сотрудника непосредственным руководителем. Этот человек не должен видеть любого из его связанные вещи. На самом деле, Она должна видеть только одно представление формы и даже не имеют возможность увидеть другие мнения.
В нашем случае, что прямые менеджера счета непосредственно привязаны к форме любезно связаться селектор (что я всегда хотел вызвать средство выбора людей"" по некоторым причинам).
Шаги являются:
1. В режиме конструктора, перейти к инструменты-> Параметры формы-> Открытие и сохранение.
2. Выберите «правила».
3. Создайте новое правило, действия которого является «Перейти для просмотра" и состояние которых использует имя пользователя() функция.
имя пользователя() Возвращает «простой" имя пользователя без домена. Если войти в SharePoint с использованием учетных данных «domainpagalvin», имя пользователя() Возвращает «pagalvin».
Выбор контактов обеспечивает три бита информации для контакта. «AccountID" часть наиболее полезен для этого сценария. Единственное, что делает это даже немного проблема в том, что выбор контактов (в моей среде все равно) Возвращает идентификатор домена и пользователя, как и в «domainpagalvin». Это мешает нам делать условие равенства прямо вперед с AccountID («domainpagalvin») никогда не будет равным имени пользователя() («pagalvin»).
Мы можем обойти это с помощью "содержит" Оператор: AccountID содержит имя пользователя().
Мы можем принять его дальше и pre Пенд напротив имени пользователя домена, жестко() функцию, чтобы получить наши проверка равенства и устранения риска ложный положительный результат на содержит оператор.
Мы бы действительно как автоматически переключить представление для других пользователей на основе членства в группе безопасности их объявление. Например, Когда членом «это аналитика" Группа обращается к форме, автоматически переключиться на вид аналитика ИТ. Нас не было времени для его реализации, но моя первая мысль является создание веб-службы, которая будет иметь метод как «IsMemberOfActiveDirectorySecurityGroup», Передайте имя пользователя() и возвращение обратно true или false. Кто-нибудь есть другие, более умная идея? Есть ли какой-либо функции SharePoint, которые мы можем использовать из InfoPath сделать это определение?
</конец>