Arkib Kategori: InfoPath 2007 // Borang Server

Hit Pantas: Membaca InfoPath XML Terus Dari SPListItem di SharePoint

Saya telah mengusahakan satu projek di mana saya perlu cabutan lampiran dari satu bentuk InfoPath. Terdapat beberapa sumber yang baik untuk menghuraikan bentuk-bentuk InfoPath (yang hanya fail XML, jadi ia sebenarnya agak mudah).

Walaupun saya telah membina projek, Saya mula dengan memuat turun borang untuk InfoPath dan menyimpannya ke hard drive saya tempatan. Kod c# saya membaca terus dari contoh yang. Walau bagaimanapun, Borang-borang InfoPath benar-benar hidup di dalam sebuah SharePoint borang-borang Perpustakaan. Saya melakukan sedikit separuh hati mencari untuk mengetahui bagaimana untuk membaca terus dari Perpustakaan dan hampir berputus asa, di mana saya telah disimpan dalam bentuk ke direktori temporer tempatan dan membacanya dari situ. Walau bagaimanapun, tidak perlu untuk pergi melalui gegelang tersebut kerana anda boleh membaca terus dari Perpustakaan. Cebisan kecil ini menunjukkan bagaimana:

/// Barangan definisi Kelas sini, termasuk:
swasta SPFile mySharePointFile; /* Sebahagian daripada SPList an */
// Kod More pergi di sini dan di dalam satu kaedah kelas yang kita ada:
XmlTextReader textReader;
textReader = baru XmlTextReader(mySharePointFile.OpenBinaryStream());

textReader.WhitespaceHandling = WhitespaceHandling.Tiada;

textReader.Read();

// Jika nod mempunyai nilai

manakala (textReader.Read())
{

... dan sebagainya dan sebagainya...

Mereka bit utama di atas adalah bahawa kita boleh membaca InfoPath secara langsung melalui OpenBinaryStream yang() Kaedah menyeru SPFile di sebagai parameter kepada pengeluar di XmlTextReader. Ia berkesan hebat.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Technorati Tags:

Programatik Mengekstrak Lampiran Dari Borang InfoPath (Termasuk nama-nama mereka!)

Saya mempunyai penyelesaian kemasukan perbelanjaan untuk pelanggan yang memanfaatkan InfoPath dan aliran kerja. Pada satu ketika semasa proses kelulusan, Saya perlu untuk menjana e-mel yang mempunyai semua data InfoPath baik serta lampiran diri mereka supaya (mengeluh) seseorang boleh mengambil data dan secara manual semula kunci ke dalam aplikasi pangkalan data Oracle.

Ianya tidak sukar untuk mendapatkan atau menghuraikan bentuk InfoPath. Saya tidak tahu bagaimana untuk mengendalikan lampiran, Walau bagaimanapun. Selepas satu jam atau dua poking sekitar internet dalam (lamanya satu!) Saya mendapati artikel ini: http://support.microsoft.com/kb/892730

Ia menyediakan beberapa kod yang berguna untuk cabutan lampiran dari nod dalam bentuk. (Anda masih perlu untuk mencari nod dan semua yang, tetapi itu hanya parsing XML).

Saya tahu bahawa lampiran adalah base64-dikodkan dan saya asalnya turun jalan hanya mengekstrak data yang base64, decoding dan menyimpannya. Walau bagaimanapun, Saya cepat sedar yang saya tidak tahu bagaimana untuk mendapatkan nama fail itu sendiri sehingga saya mendapati artikel yang dinyatakan di atas.

Saya sebenarnya telah mendapati bahawa agak awal, tetapi saya telah ditangguhkan oleh perpecahan personaliti yang. Dalam satu tangan, Artikel * berkata * ia adalah baik untuk InfoPath 2007. Namun, kod dan arahan semua tentang Visual Studio 2003 dan rujukan kepada InfoPath 2003.

Bottom line, kod yang artikel yang diperuntukkan adalah bekerja dengan baik bagi saya (setakat ini). Saya boleh mendapatkan borang InfoPath saya, Saya boleh menghurai ia, Saya boleh mencari dan menyahkod lampiran dan saya tahu namanya. Apa yang lebih boleh satu tanya hidup seseorang?

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Technorati Tags: ,,

Jika anda bimbang bahawa persekitaran SharePoint anda boleh menjadi anak lelaki yang tidak sihat, izinkan saya membantu anda menetapkan bahawa dengan pemeriksaan kesihatan.

Urusan Kumpulan Kelulusan dengan InfoPath dalam Persekitaran FBA

Saya mempunyai proses kelulusan perbelanjaan yang saya perlukan untuk melaksanakan menggunakan InfoPath dalam bentuk pengesahan berdasarkan (FBA) persekitaran menggunakan perkhidmatan bentuk (InfoPath berasaskan web).

Terdapat dua kumpulan kelulusan dan proses kerja-kerja seperti ini:

  • Panduan mengisi laporan perbelanjaan dan mengemukakan untuk kelulusan.
  • Yang mencetuskan e-mel untuk Kumpulan pegawai peringkat pertama.
  • Pelulus peringkat pertama Ulasan dan meluluskan atau menafikan laporan.
  • Jika orang peringkat pertama meluluskannya, sistem mengumumkan Pelulus peringkat kedua.

Di sebelah InfoPath perkara-perkara, Saya mempunyai bahagian berbeza yang Sembunyi/muncul berdasarkan sama ada pengguna adalah ahli salah satu daripada Kumpulan kelulusan tersebut.

Dalam persekitaran FBA nama pengguna() fungsi sentiasa kembali kosong, sedih. Apa yang saya lakukan adalah sediakan satu senarai tersuai dipanggil "Kumpulan kelulusan".

Saya tidak menambah apa-apa tiang tambahan kepada senarai.

Bilakah borang membuka, Ia mempunyai peraturan seperti ini:

image

"Tetapkan nilai padang bola" boleh di sini:

image

Ini pada dasarnya mengatakan: Pertanyaan senarai tersuai kelulusan Kumpulan dan penapis yang tanya oleh mencari mana-mana baris di mana nilai milik = "NORDIC".

Jika sebarang nilai pulangan yang, maka pengguna semasa ini merupakan ahli kumpulan tersebut. Saya tahu ia mengandungi nilai itu kerana kepanjangan tali adalah lebih besar daripada sifar.

Tutup Lingkaran dengan mendapatkan item individu dalam senarai kelulusan Kumpulan. Pada jangka masa, Jika pengguna semasa tidak mempunyai akses keselamatan yang sesuai dengan item itu kemudian pertanyaan tidak akan kembali, panjang tali akan menjadi sifar dan sekarang anda tahu pengguna semasa ini bukan sebahagian daripada kumpulan tersebut. Anda boleh menggunakan fakta seperti yang diperlukan di dalam borang.

Inilah penulisan super ringkas. Saya berasa tertekan dengan masa atau saya akan membekalkan lebih terperinci.

Saya tidak tahu bagaimana relevan itu adalah bahawa saya dalam persekitaran FBA. Ini mungkin akan bekerja baik dalam persekitaran yang bebas-FBA tetapi saya boleh bayangkan kes di mana ini akan berguna.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Technorati Tags: ,

InfoPath // Satu Penjelasan untuk "pengecualian tak dikendali apabila memberikan System.Xml.XmlException bentuk: Akhir yang tidak dijangka fail sementara Nama parsing telah berlaku. "

Saya telah bekerja di merupakan InfPath hari ini dan berlari terhadap seorang sahabat lama, "Pengecualian tak dikendali apabila memberikan System.Xml.XmlException bentuk: Akhir yang tidak dijangka fail sementara Nama parsing telah berlaku. "

Ini berlaku kepada saya dahulu dan saya tidak tahu apa yang sebenarnya saya lakukan untuk menyelesaikannya. Secara jujur, Saya berfikir bahawa saya telah beralih kepada projek baru dan tidak pernah melihat satu ini diselesaikan (penggantian saya terpaksa berhadapan dengan sakit kepala yang). Saya ingat ia adalah syaitan yang masalah. Saya menghabiskan masa selama beberapa hari tidak berjaya yang berurusan dengannya. Sejak itu, Saya telah melihat ini muncul di forum MSDN sekurang-kurangnya sekali sepanjang tahun lepas dan tidak pernah benar-benar melihat jawapan untuknya.

Saya menghentamnya hari dan nasib baik buat masa ini , Saya hanya telah membuat perubahan kepada bentuk. Saya disokong keluar perubahan tersebut dan masalah pergi. Ia ternyata bahawa ia adalah mungkin untuk membuat satu daripada template yang menggunakan Reka bentuk InfoPath dalam apa-apa cara bahawa ia menghasilkan Ralat Hurai pada sisi server bentuk pagar.

Dalam kes saya,, masalah ini adalah disebabkan oleh langkah-langkah ini:

  1. Menambah elemen yang baru untuk sumber data sebagai medan teks.
  2. Menjatuhkannya ke dalam bentuk.
  3. Menukar paparan itu ke dalam satu senarai drop-down.
  4. Memberitahu dalam senarai drop-down untuk menarik nilai-nilai dari senarai tersuai SharePoint.

Saya tidak tahu jika langkah-langkah tersebut menyebabkan masalah atau mungkin, entah bagaimana data dalam senarai itu sendiri adalah masalah. Saya mahu sedikit eksperimen dan melihat jika saya boleh kuku downt dia parameter ini dengan lebih terperinci apa-apa.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Technorati Tags:

Benamkan Nota Pemaju Di dalam Borang InfoPath anda

Saya masih hidup di InfoPath Borang dunia dan saya perlu membuat satu daripada perubahan "kecil" kepada bentuk yang, malangnya, rehat konvensyen penamaan yang aku pakai dengan dua minggu yang lalu. Saya berfikir kepada diri saya sendiri, "Seseorang itu akan melihat perkara ini tahun dari sekarang dan berkata, 'Apa yang Paul berfikir? Oleh Jove, konvensyen penamaan itu tidak masuk akal!"

Saya sedar bahawa saya boleh mencipta satu paparan di dalam borang ini dan kemudian, sekali lagi, menyedari bahawa saya mungkin telah melakukan sesuatu seperti ini sepanjang. Saya menambah "Pemaju Nota" pemandangan ke borang InfoPath Justeru:

image

Saya telah menkonfigurasi bentuk supaya pengguna tidak dapat melihat itu dan oleh itu, Ia hanya boleh dilihat dengan pelanggan InfoPath dalam reka bentuk paparan. Sekarang saya merasa sedikit inoculated terhadap sesetengah pemaju tidak diketahui pada masa hadapan yang melihat saya borang dan pemikiran pemikiran buruk tentang saya. Phew!

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Technorati Tags:

Urusan InfoPath Views

Saya seolah-olah untuk pergi melalui fasa di mana InfoPath, tiba-tiba, Saya saya kerajinan sekumpulan borang. Jari-jari saya belajar bagaimana untuk menggunakan alat yang baik dan kemudian saya pergi melalui sembilan bulan kemarau dan perlu belajar sekali lagi.

Saya di tengah-tengah fasa InfoPath dan saya mewujudkan bentuk InfoPath dengan banyak pandangan. Satu perkara yang anda mungkin notis adalah bahawa InfoPath yang 2007 klien menunjukkan pemandangan dalam susunan abjad. Ini adalah satu gangguan yang sebenar beberapa kali. Teknik terbaik saya hari ini adalah untuk menyambung nombor kepada nama paparan agar mereka sentiasa menunjukkan dalam susunan yang saya mahu, seperti yang ditunjukkan di sini:

image

Saya harap saya telah usahakan ini sepanjang.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Technorati Tags:

InfoPath Borang Sevices, Borang Pengesahan Berasaskan (FBA) dan Nama Fail unik

Saya telah bekerja pada beberapa InfoPath membentuk minggu ini di MOSS dalam persekitaran FBA dan belajar, apabila saya pergi untuk menggunakan borang yang persekitaran pengeluaran dengan zon FBA bahawa nama pengguna() fungsi fungsi tidak berfungsi. Saya telah menggunakan ia untuk menjana nama fail yang unik.

Well, yang berfungsi tidak bekerja dalam persekitaran yang FBA (sekurang-kurangnya, tidak keluar dari kotak). Dan, apabila refleksi, menggunakan nama pengguna dengan cara yang saya telah merancang tidak akan dijamin nama fail yang unik dalam apa jua keadaan.

Penyelesaian saya adalah untuk menggunakan kini() fungsi dan peraturan yang kebakaran pada loading borang. Saya Tetapkan nama fail untuk data elemen bila ianya kosong:

image

image

Kelebihan pendekatan ini adalah bahawa nama fail diset sekali sahaja. (Saya tidak menunjukkan ia dalam pukulan skrin, tetapi meletakkan syarat pada peraturan hanya api apabila "myFilename" adalah kosong). Saya digunakan untuk menetapkan nama fail pada peringkat sumber data. Biasanya, Saya akan melakukan sesuatu (buruk) seperti ini:

image

Masalah dengan itu adalah bahawa jika pengguna A membuka bentuk pada hari Isnin dan B pengguna berubah pada hari Selasa, anda akan berakhir dengan dua bentuk yang berbeza sejak dua pengguna yang berbeza disimpan dengan nama pengguna yang berbeza.

Jadi, sebagai menjengkelkan sebagai FBA boleh secara umum dan dengan InfoPath khususnya, ia membuatkan saya memikirkan semula butiran teknikal kecil tetapi benar-benar penting dan pendekatan yang saya tidak akan melakukan sebaliknya!

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

Technorati Tags:

Cepat mudah dan: Buat Borang InfoPath an Baca Sahaja (InfoPath Borang Perkhidmatan di MOSS)

Terdapat senario perniagaan yang sama seperti ini:

  • Pengguna mengisi borang InfoPath.
  • Mengemukakan borang.
  • Proses aliran kerja lama berjalan bermula.
  • Walaupun kerja sedang berjalan, kita tidak mahu sesiapa sahaja untuk mengubah kandungan bentuk.

Ini contoh office.microsoft.com menerangkan bagaimana untuk mencipta "Paparan berasingan" dan menandakan pandangan keseluruhan sebagai baca-sahaja. Ini adalah satu pendekatan yang boleh digunakan tetapi mempunyai kelemahan anda dengan berkesan mencipta dua versi keseluruhan bentuk sama dan mesti sekarang pastikan mereka disegerakkan secara manual. Jika anda menambah bidang ke paparan disunting, anda mesti menambah kemudian ia ke paparan-editable serta. Dari masa ke masa, dengan pemaju yang berbeza, Terdapat beberapa perbezaan.

Alternatif ini mungkin kerja yang lebih baik dalam beberapa kes:

  • Menambahkan bidang baru dalam bentuk yang dipanggil "IsEditable".
  • Menetapkan nilai lalai untuk benar.
  • Menggalakkan apabila menerbitkan MOSS.
  • Dalam aliran kerja, menetapkan nilai IsEditble kepada palsu.
  • Kembali kepada bentuk.
  • Menambah peraturan bahawa "apabila Buka borang", melumpuhkan butang simpan anda apabila IsEditable adalah palsu.

Kelemahan bagi pendekatan ini adalah bahawa semua bidang masih akan diedit pada skrin. Pengguna boleh mendapatkan satu tanggapan yang palsu bahawa mereka benar-benar boleh mengubah kandungan. Anda boleh mengurangkan dengan meletakkan dalam beberapa teks bentuk dinyahdayakan, mungkin dalam huruf besar merah di bahagian atas halaman.

Dalam satu projek, Saya telah mencipta "aliran status" melihat. Kerana aliran tersebut berkembang, Ia akan Kemaskini Terakhir medan status tertentu yang telah dinaikkan pangkat dari bentuk. Bilakah pengguna dibuka borang, "Buka borang" memerintah secara automatik beralih kepada pandangan bahawa dan pengguna mempunyai status ringkasan kecil yang bagus.

</akhir>

Langgan ke blog saya.

Tukar Lihat View Berdasarkan ID Pengguna Dalam Borang InfoPath

Kami telah maju bentuk InfoPath dengan pemandangan pelbagai untuk menyokong sewa baru / proses di Asrama. Bilakah Syarikat mengupah seseorang yang baru, jabatan IT dan kumpulan lain perlu mengambil tindakan (menubuhkan gaji, membolehkan akses kepada aplikasi yang sesuai, mencari meja, dan sebagainya.). Kami menggunakan borang tetapi satu pandangan yang berbeza daripada bentuk bagi setiap fungsi-fungsi itu.

Di syarikat ini, kebanyakan orang yang terlibat dalam proses perniagaan adalah IT-savvy, jadi apabila mereka mengakses bentuk, paparan lalai mereka adalah "menu" Lihat dengan butang yang mengarahkan mereka untuk fungsi tertentu mereka. Walau bagaimanapun, kita perlu memudahkan Pengurus langsung dalam Penyewaan baru. Orang ini tidak akan melihat sebarang IT berkaitan hal-hal. Malah, dia harus melihat hanya satu pandangan dalam bentuk dan tidak mempunyai pilihan untuk melihat pandangan lain.

Dalam kes kami, bahawa akaun pengurus langsung adalah terus terikat kepada bentuk ihsan seorang hubungi pemilih (yang saya selalu ingin memanggil seorang "orang PEMILIH" untuk sebab-sebab tertentu).

Langkah-langkah adalah seperti berikut:

1. Dalam mod reka bentuk, pergi ke Tools -> Borang Opsyen -> Buka dan Simpan.

2. Pilih "peraturan".

3. Mencipta peraturan baru yang tindakan yang "beralih untuk melihat" dan yang memanfaatkan keadaan username() fungsi.

Nama pengguna() pulangan yang "mudah" nama pengguna tanpa domain. Jika saya log masuk ke dalam SharePoint dengan kelayakan "domainpagalvin", Nama pengguna() pulangan yang "pagalvin".

PEMILIH dalam hubungan menyediakan tiga bit maklumat kenalan. "AccountID" bahagian yang paling berguna untuk senario ini. Satu-satunya perkara yang membuat ini walaupun sedikit cabaran adalah yang PEMILIH dalam perhubungan (dalam persekitaran saya juga) mengembalikan domain dan ID pengguna, seperti "domainpagalvin". Ini menghalang kita daripada melakukan dalam keadaan lurus ke hadapan kesaksamaan sejak AccountID ("domainpagalvin") tidak akan sama dengan nama pengguna() ("pagalvin").

Kita boleh mendapatkan sekitar ini menggunakan yang "mengandungi" operator: AccountID mengandungi nama pengguna().

Kita boleh mengambil ia lanjut dan pra-Pend domain berkod keras di hadapan nama pengguna() berfungsi untuk mendapatkan kesaksamaan kami semak dan menghapuskan risiko positif palsu mengandungi operator.

Kita perlu benar-benar seperti pandangan untuk pengguna lain berdasarkan keahlian kumpulan keselamatan iklan mereka secara automatik. Sebagai contoh, Apabila ahli "ia analisis" kumpulan mengakses bentuk, secara automatik Tukar kepada paparan analisis IT. Kami tidak mempunyai masa untuk melaksanakan, tetapi pemikiran pertama saya adalah untuk mencipta sebuah perkhidmatan web yang akan mempunyai kaedah seperti "IsMemberOfActiveDirectorySecurityGroup", lulus nama pengguna() dan memulangkan kembali benar atau palsu. Adakah sesiapa mempunyai apa-apa yang lain, idea lebih bijak? Adakah terdapat sebarang fungsi SharePoint kami dapat memanfaatkan dari InfoPath untuk membuat penentuan bahawa?

</akhir>

Technorati Tags: