Aylıq Arxiv: Noyabr 2007

MOSS Mənim sütun adını qorunur və ya istifadə Yadda edir … Amma bu var

UPDATE 12/04/07: Görmək this Microsoft KB (http://support.microsoft.com/kb/923589) bağlı məlumat üçün.

Faktiki olaraq, o ki çıxır, lakin tricksy MOSS had to make it difficult.

My customer does some development work on his MOSS site over the weekend. It’s a bit of a jumble as to what he actually did, lakin son nəticədə bu:

  • He tries to add a site column called "Quantity" and MOSS replies: "The column name that you entered is already in use or reserved. Choose another name."
  • He attempts to add it to another environment and that works. Ona görə də, "Quantity" is not a reserved name.
  • He tries to find an existing site column named "Quantity" in that site collection. He cannot find it.

I did some research, and even some coding, waxed philosophical and finally found that a column named Quantity did, faktiki olaraq, exist. It was in the "_Hidden" group. Hence, we could not find it via the SharePoint user interface.

How did it get there? I do not know, but I have a theory (or as my wife would call it, "blah blah blah"). Somewhere xətti boyunca, bir fabulous forty template was added and probably activated at a site in the site collection. It was then deactivated (or the site removed). The site column, lakin, remained but in the "_Hidden" group. If someone knows better, please let me know via e-poçt or post in the comments.

SharePoint was telling the truth. It’s hardly worth pointing out that that message is not as helpful as it could be. It would be nice to see that message fork into two different messages in the future: 1) Say that the column name is reserved or it is not. 2) If it’s not reserved, show the site, or at least the group, where the column name is already used.

</son>

Xüsusi siyahısı Via OM müasir Data (və ya, Lakin bir OM Data Displayor [YACC kimi, lakin müxtəlif])

Bugün, I spent a handful of hours tracking down the root cause behind the message "The column name that you entered is already in use or reserved. Choose another name."

Bu sütun yaradıla bilər, bir mühit silinmiş və yenidən yaradıldı, so I knew it wasn’t a reserved name. Lakin, I simply couldn’t find the column anywhere via the standard SharePoint user interface at any site in the site collection.

I posted to MSDN forums here and the indomitable Andrew Woodward pointed me in the direction of the underlying object model data.

I went off to codeplex to find some tools that would help me peer into the underlying OM data and help me locate the trouble.

I tried several tools and they were very cool and interesting but in the end, the UI wasn’t good enough for my purpose. I’m not criticizing them by any means, but clearly the tool-makers didn’t have my problem in mind when they created their UI :). Most people seem to be investing a fair amount of time and effort in creating workstation / client applications that provide tree views, right-click context menus and so forth. These are nice and all, but it’s a lot of work to create a top-of-the-line user experience that is also very flexible.

I really needed an answer to this problem. It occurred to me that if I could get all of the site columns in the site collection into a custom list, I could filter, sort and create views that would help me find this supposedly existing column (which it did, BTW). I went ahead and did that and an hour or two later, had all my site columns loaded into a custom list with grouping, sorting and so forth. I found my answer five minutes later.

If and when I successfully take over the world, I think I will decree that all SharePoint tools providers must seriously consider surfacing their object model data in a custom list. That way, I have the power to search any way I want (constrained, əlbəttə, by standard sharepoint features).

SharePoint Designer Workflow Xüsusi Tədbirlər — Haqqımızda müşahidə <Sahəsində Tie Designer type =”StringBuilder” … />

Bu iki anlayışları arasında çox mühüm fərqlər var ki, yalnız tez müşahidə:

<FieldBind Alan = "InParam1" Designer type = "Simli yarat" Id = "2" Text = "Giriş parametr # 1" />

qarşı:

<FieldBind Alan = "InParam1" Id = "2" Text = "Giriş parametr # 1" />

SPD bu kimi ilk göstərir:

image

Sonuncu bu kimi göstərir isə:

image

I’m not sure how helpful these screen shots are but I put in the effort to make them so you have to view them 🙂

Müşahidə bu: StringBuilder bir string yaratmaq imkan verir (açıq-aydın) string literator və iş data birlikdə qarışdırmaqla (via the "Add Lookup" aşağı sol küncündə 'düyməsinə). When you use the Add Lookup button, it inserts a token in the form "[%mö'cüzə%]". When SharePoint invokes your custom action, (Mənim halda C # kodu), SharePoint simge özü keçir, not the value of the token. If you use the default designer type (ikinci növ), SharePoint simge genişləndirir və fəaliyyət üçün mö'cüzə faktiki dəyəri keçir.

StringBuilder = BAD, default dizayner type = GOOD.

Əlbəttə, that’s not what I really mean. Just don’t try and pass a parameter to your custom action when the designer type = StringBuilder. Use the default designer type and chain a StringBuilder to it up front if you need to build complex strings in your workflow (olan gəlmişkən bir e-poçt fəaliyyət üçün dinamik bir mövzu yaratmaq üçün nə dəqiq nə, amma ki, başqa bir blog giriş üçün bir mövzu var, Har Har).

<Tamamlama />

Vaxtından əvvəl Workflow aktivləşdirilməsi — Qeyri-tibbi Solution

UPDATE: Bu MSDN müzakirə bax, xüsusən son giriş: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. It describes a condition that may short circuit this whole thing. Qısa, məcburi sahələrdə ən azı bir edilməsi kimi sadə ola bilər.

Mən səkkiz məzmun növləri dəstəkləyən sənəd kitabxana var.

I have a SharePoint Designer workflow that wants to calculate and assign a "reminder date" sadəcə çıxarılaraq 30 başqa sütun gün, "due date". This should only happen for one of the content types, "Insurance". The business objective is to produce a KPI that shows two categories of insurance documents: "about to expire" and "expired." (Siz KPI və bu növ daha əhəmiyyətli qazmaq aşağı oxuya bilərsiniz burada).

I have configured the workflow to fire when a new item is created and when an item is modified. The idea is that when an insurance document is uploaded, we calculate a "warning date" based on the expiration date. A pair of views work in connection with a KPI List to highlight these conditions when users hit their home page.

Bu strategiya bir sənəd yüklemek zaman işləmir.

I upload the document and I am presented with the meta data entry screen. Bu noktada, I’m already in trouble. SharePoint has already, vaxtından əvvəl mənim nöqteyi-, fired the workflow. I haven’t had a chance to pick the correct content type nor assign a due date. Eyni zamanda, the workflow does not fire when I hit the submit button at this time. There’s some built-in logic that "believes" that first submit is part of the "create" event. Belə … bu icra zaman mənim iş işdən edib, it was passed default meta data values.

The best work-around I know of is to insert a "pause until" activity in the workflow. I have the workflow pause for 1 minute. While it’s pausing, Mən düzgün məzmun növünü seçmək, enter the meta data and submit. The pause completes and the workflow proceeds as needed. (Mənim mühitdə Qeyd edək ki,, timer workflow activities from SPD do not work out of the box. You may have the same trouble. Görmək burada Daha ətraflı məlumat üçün).

I don’t like "magic delay" work-around. What happens if the user uploads a document and the phone rings and the ensuing conversation outlasts the pause? I can make the pause longer, lakin mən hələ də sevmirəm.

Mən burada MSDN forumlarda bu barədə yazıb: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1

SharePoint Təhlükəsizlik əsasları Primer / Ümumi Pitfalls çəkinin

UPDATE 12/18/07: U mənim qrupu adları aradan qaldırılması və ya değiştirmeyle bəzi texniki nəticələrinin Paul Liebrand məqaləsi bax (aşağıda həmçinin onun comment bax).

Baxış:

SharePoint security is easy to configure and manage. Lakin, it has proven to be difficult for some first-time administrators to really wrap their hands around it. Not only that, I have seen some administrators come to a perfect understanding on Monday only to have lost it by Friday because they didn’t have to do any configuration in the intervening time. (Mən bu problem özümü olan etiraf). This blog entry hopefully provides a useful SharePoint security primer and points towards some security configuration best practices.

Vacib Qeyd:

This description is based on out of the box SharePoint security. My personal experience is oriented around MOSS so there may be some MOSS specific stuff here, but I believe it’s accurate for WSS. I hope that anyone seeing any errors or omissions will point that out in comments or Mənə e-poçt. I’ll make corrections post haste.

Əsas:

Bu icmal məqsədləri üçün, təhlükəsizlik üçün dörd fundamental aspektləri var: Vaxtı / Qruplar, securable obyektləri, icazə səviyyələri və vərəsəlik.

İstifadəçilər və Qruplar to qırmaq:

  • Fərdi istifadəçilər: Active Directory çəkilmiş və ya birbaşa SharePoint ildə yaradılmışdır.
  • Qruplar: Mapped directly from active directory or created in SharePoint. Groups are a collection of users. Groups are global in a site collection. They are never "tied" xüsusi securable obyekt.

Securable obyektləri ən azı qırmaq:

  • Saytlar
  • Document kitabxana
  • Siyahıları və sənəd kitabxana fərdi maddələr
  • Folders
  • Müxtəlif BDC parametrləri.

Başqa securable obyektləri, ancaq şəkil almaq.

Icazə səviyyələri: Dənəvər bir paket / low level access rights that include such things as create/read/delete entries in lists.

Miras: By default entities inherit security settings from their containing object. Sub-sites inherit permission from their parent. Document libraries inherit from their site. So on and so forth.

Istifadəçilər və qruplar icazə səviyyələri və vərəsəlik vasitəsilə securable obyektləri ilə bağlı.

Anlamaq üçün ən əhəmiyyətli Təhlükəsizlik qaydaları, Ever 🙂 :

  1. Qruplar sadəcə istifadəçilər kolleksiyaları var.
  2. Qruplar bir site kolleksiya daxilində qlobal var (i.e. bir site səviyyəsində müəyyən bir qrup kimi bir şey yoxdur).
  3. Qrup adı withstanding deyil, qruplar yoxdur, özləri və, have any particular level of security.
  4. Groups have security in the context of a specific securable object.
  5. Siz hər securable obyekt üçün eyni qrupa müxtəlif icazə səviyyələri təyin edə bilər.
  6. Web proqram siyasəti qozu bütün bu (aşağıya bax).

Qrup və istifadəçi siyahıları bir dəniz məğlub Təhlükəsizlik administratorları həmişə təhlükəsizlik konfiqurasiya idarə etmək və anlamaq üçün bu aksiomatika etibar edə bilərsiniz.

Ümumi pitfalls:

  • Qrupu adları yalan icazə demək: Qutusu həyata, SharePoint defines a set of groups whose names imply an inherent level of security. Consider the group "Contributor". One unfamiliar with SharePoint security may well look at that name and assume that any member of that group can "contribute" to any site/list/library in the portal. That may be true but not because the group’s name happens to be "contributor". This is only true out of the box because the group has been provided a permission level that enables them to add/edit/delete content at the root site. Through inheritance, the "contributors" group may also add/edit/delete content at every sub-site. One can "break" the inheritance chain and change the permission level of a sub-site such that members of the so-called "Contributor" qrup bütün kömək edə bilməz, lakin yalnız oxumaq (məsələn). This would not be a good idea, açıq-aydın, çox şaşırtıcı ola bilərdi.
  • Qruplar bir site səviyyəsində müəyyən deyil. It’s easy to be confused by the user interface. Microsoft provides a convenient link to user/group management via every site’s "People and Groups" keçid. It’s easy to believe that when I’m at site "xyzzy" and I create a group through xyzzy’s People and Groups link that I’ve just created a group that only exists at xyzzy. That is not the case. I’ve actually created a group for the whole site collection.
  • Qruplar üzvlük site asılı olaraq fərqlənə deyil (i.e. hər yerdə qrup istifadə olunur eyni): Consider the group "Owner" və iki saytlar, "HR" and "Logistics". It would be normal to think that two separate individuals would own those sites — an HR owner and a Logistics owner. The user interface makes it easy for a security administrator to mishandle this scenario. If I didn’t know better, Mən HR site vasitəsilə adamların və qrupların links daxil ola bilər, select the "Owners" group and add my HR owner to that group. A month later, Logistics comes on line. I access People and Groups from the Logistics site, add pull up the "Owners" group. I see the HR owner there and remove her, thinking that I’m removing her from Owners at the Logistics site. Faktiki olaraq, I’m removing her from the global Owners group. Hilarity ensues.
  • Xüsusi rol əsasında qrupların adını etməyən: The "Approvers" group is a perfect example. What can members of this group approve? Where can they approve it? Do I really want people Logistics department to be able to approve HR documents? Of course not. Always name groups based on their role within the organization. This will reduce the risk that the group is assigned an inappropriate permission level for a particular securable object. Name groups based on their intended role. In the previous HR/Logistics scenario, Mən iki yeni qruplar yaradılmış olmalıdır: "HR Owners" and "Logistics Owners" və hər biri üçün həssas icazə səviyyələri və onların iş o istifadəçilər üçün tələb olunan minimum məbləği tapşırılsın.

Digər Faydalı istinadlar:

Siz bu yaptıysanız qədər:

Please let me know your thoughts via the comments or email me. If you know other good references, Eyni edin!

Technorati Tags:

Tez və asan: Bir Data View Web Part yarat (DVWP)

Bu WSS böyük informasiya sərvət var 3.0 Data View Web Part (DVWP) on the web from several sources. Lakin, I found it to be surprisingly difficult to find information on this first very basic step. Here is another article in the "quick and easy" onu həll etmək üçün silsilə.

Bir veri görünüşü web hissəsi yaratmaq üçün bu adımları edin (DVWP). They are based on an "Announcements" Web Part, lakin ən siyahıları müraciət.

  1. Bir Elanlar Web Part yaradın və bir site əlavə edin.
  2. SharePoint Designer bu site açın.
  3. Site default.aspx açın.
  4. Select the Announcements web part and right-click.
  5. Kontekstində menyusundan, select "Convert to XSLT Data View".

SharePoint Designer bu saytda indi site anlayışına özelleştirilmiştir bildirir. Bu mütləq pis deyil, amma əhəmiyyətli təsiri var (icra, təkmilləşdirmək, digər) which are beyond the scope of this little "Quick and Easy" giriş. To get more information on this subject, I kitab həm gəlir burada həmçinin sevimli Internet axtarış.

Düzgün bunu təsdiq edir ki,:

  1. Web browser bağlayın və yenidən açın (to avoid accidentally re-posting the original "add a new web part").
  2. Select the web part’s arrow drop-down and choose "Modify Shared Web Part" menudan.
  3. Bu araç, panel doğru açır.
  4. Paneldə öz adi set seçimlərdən bu dəyişib:
image

“SharePoint siyahıdan siyahısı şeması sütun əmlak ala bilmir” — təsviri / iş arounds

Bu həftə, nəhayət, biz uzaq bir istifadəçi tərəfindən ki, bir problem çoxaltmaq: O Excel siyahısına məzmunu ixrac çalıştığımızda, şeyi iş başlamaq görünmesinden, lakin sonra Excel səhv açılır ki,: "Cannot get the list schema column property from the SharePoint list". She was running office 2003, windows XP and connecting to MOSS.

Mən Internets axtarış və bəzi fərziyyələr, lakin heç bir şey gördüm 100% definitive. Hence, Bu yazı.

Problem: Excel üçün ixrac tarix ehtiva (sütunun tarixi = məlumatları növü).

Bizim üçün nə işləyib: Convert the date to a "single line of text". Sonra, tarixi geri çevirmək.

That solved it. It was nice to see that the conversion worked, həqiqətən. It was quite nervous that converting things this way would fail, but it did not.

Bu səhv müştərinin nəzərə tarix data type üzərində böyük kölgə atılan edib, biz Microsoft qəti bir cavab tapmaq üçün olacaq və onların rəsmi cavab və düzeltme informasiya ilə zaman növbəti qısa müddətdə inşallah mən yazmaq lazımdır və burada güncelleyin.

Digər istinadlar:

http://www.kevincornwell.com/blog/index.php/cannot-get-the-list-schema-column-property-from-the-sharepoint-list/

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2383611&SiteID=1

<son>

Blog abunə.

Technorati Tags: ,

Sadə və sadə: SharePoint Designer iş dan əlaqədar hiperlink bir e-poçt göndər

Bir və ya iki dəfə ay, kimsə ismarıclarını Forum sual: "Mən SharePoint Designer e tıklanabilir ki URL köprüler necə daxil edirsiniz?"

Daha comment olmadan təqdim: (yaxşı, faktiki olaraq daha image sonra şərh edir):

image

Becky Isserman e-poçt elementin linki bütünləşdirmək üçün necə yararlı bir izahat ilə aşağıdakı: http://www.sharepointblogs.com/mosslover/archive/2007/11/20/addition-to-paul-galvin-s-post-about-sending-an-e-mail-with-hyperlinks-in-spd.aspx

Yeni buraxılış: SharePoint Designer Workflow Extensions (simli manipulyasiya funksiyaları)

UPDATE: Bu layihə kommersiyalaşdırlmasına haqqında mənim fikirlərimi üçün buraya baxın: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Mən SharePoint Designer vasitəsilə yaradılmışdır hazırda axınları üçün simli manipulyasiya uzantıları təmin yönəlmiş olan mənim Codeplex layihə üzərində işləyir məşğul ola bilərsiniz.

Ətraflı məlumat üçün buraya baxın:

LAYİHƏ Ana səhifə: http://www.codeplex.com/spdwfextensions

Azad: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Variant 1.0 aşağıdakı yeni funksiyalar daxildir:

Funksiyası Təsvir (eyni halda. Net funksiyası)
Say-entries() Sayı "entries qaytarır" in a string as per a specified delimiter.

Məsələn: Num-entries in a string "a,b,c" with delimiter "," = 3.

Giriş() Returns the nth token in a string as per a specified delimiter.
Uzunluq String.Length
Dəyişdirmək() String.Replace()
Ehtiva() String.Contains()
Returns the word "true" or the word "false".
Substring(başlamaq) String.Substring(başlamaq)
Substring(başlamaq,uzunluq) String.Substring(başlamaq,uzunluq)
ToUpper() String.ToUpper()
ToLower() String.ToLower()
StartsWith() String.StartsWith()
Returns the word "true" or the word "false".
EndsWith() String.EndsWith()
Returns the word "true" or the word "false".

Izah A BDC uzunluğu səhv

Mən istifadəçi interfeysi və özü özünü bu həftə BDC səhv səbəb 12 Hive Giriş vaxtında.

Ilk, Bu istifadəçi interfeysi meydana:

Bütün tanıdan Dəyərlər əlavə etmək üçün sahələri düzgün adı ilə bir SpecificFinder MethodInstance icra tapılmadı … Daxil Parameters bu şəxs üçün müəyyən edilmiş hər bir tanıdan ilə bağlı TypeDescriptors emin.

Burada Ekran resmi var:

clip_image001

Mən də bu mesaj görünür səbəb ola bilər 12 Hive Giriş iradə ilə (using my patented high-tech-don’t-try-this-at-home "Sirli səhvlər" üsul):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x High Exception in BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Bu tanıdan dəyər ”, Tipi ”, yalnış. Expected Identifier value of Type ‘System.String’. Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific da(Obyekt[] subIdentifierValues, LobSystemInstance lobSystemInstance) Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity da(Şəxs müəssisənin, Obyekt[] userValues, LobSystemInstance lobSystemInstance) Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance da(Məlumatlarına desiredView) Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance da() Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties da()

Mən ətrafında axtarış və bəzi potensial tapılıb MSDN forum, but they weren’t enough for me to understand what I was doing wrong. I watched a webcast by Ted Pattison ki, şirkət bir server üz squirreled və problem həyata gəlib edib.

Mənim AİF-ci ildə, Kimi bir SQL verilənlər bazası qoşulma alıram:

            <Əmlak Ad="RdbCommandText" Növü="System.String">
              <![CDATA[
                SEÇİN
                      , CARRIER_ID, EFFDT, İndiki tarix, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      ÖLKƏ, Address1, ADDRESS2, ADDRESS3, ADDRESS4, CITY, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COUNTY, DÖVLƏT, Poçt, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFON, MƏSLƏHƏT, Faks, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG
                 (nolock)
                HARADA
                  (SETID <> "Payı") və
                  (aşağı(CARRIER_ID) >= Aşağı(@ MinID)) və
                  (aşağı(CARRIER_ID) <= Aşağı(@ MaxId)) və
                  (aşağı(İndiki tarix) Aşağı kimi(@ InputDescr))
                ]]>
            </Əmlak>

Mən DBA şəxs ki, SQL verilmiş və mən bunun başa düşürəm ki, verilmiş alıram bir xüsusi view they created just for me. The unique key there is CARRIER_ID.

Burada təqdim edilən səhv:

      <Tanımlayıcıları>
        <Müəyyən Ad="CARRIER_ID" TypeName="System.String" />
        <Müəyyən Ad="İndiki tarix" TypeName="System.String" /> 
</Tanımlayıcıları>

Somewhere xətti boyunca, Mən mənası üzərində özümə çaşdırmağa idarə etdi <Tanımlayıcıları> and added DESCR even though it’s not actually an identifier. I took DESCR out of the identifiers set and presto! Bütün işləyib.

I hope this saves someone some grief 🙂

Technorati Tags: , , ,