Штомесячны архіў: Лістапада 2007

MOSS кажа мне мая калонка імя зарэзервавана або выкарыстоўваецца … Але гэта не

АБНАЎЛЕННЕ 12/04/07: Паглядзець this Microsoft KB (http://support.microsoft.com/kb/923589) Дадатковую інфармацыю, звязаную.

На самай справе, аказваецца, што гэта з'яўляецца, але 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, але ў канчатковым выніку гэта:

  • 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. Таму, "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, на самай справе, 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"). Дзе-то ўздоўж лініі, a 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, аднак, remained but in the "_Hidden" group. If someone knows better, please let me know via E-mail 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.

</канец>

Прадстаўленне даных праз спіс OM Карыстальніцкія (або, Яшчэ адзін OM дадзеных Displayor [як YACC, але розныя])

Сёння, 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."

Слупка ў пытанне можа быць створаны, выдаліць і стварыць наноў у іншым асяроддзі, so I knew it wasn’t a reserved name. Аднак, Я проста не мог знайсці калонку ў любым месцы праз стандартны інтэрфейс карыстальніка SharePoint ў любым месцы ў сямействе.

Я адправіў да Форумы MSDN тут і нястрымнай Andrew Woodward паказаў мне ў напрамку зыходных дадзеных аб'ектнай мадэлі.

Я пайшоў, каб CodePlex знайсці некаторыя інструменты, якія дапамаглі б мне зазірнуць у зыходныя дадзеныя OM і дапамагчы мне знайсці праблему.

Я паспрабаваў некалькі інструментаў, і яны былі вельмі крута і цікава, але ў рэшце рэшт, the UI wasn’t good enough for my purpose. I’m not criticizing them by any means, але відавочна, што інструмент-мейкера не было маёй праблемай на ўвазе, калі яны стварылі сваю UI :). Most people seem to be investing a fair amount of time and effort in creating workstation / кліенцкіх прыкладанняў, якія забяспечваюць дрэва праглядаў, right-click context menus and so forth. These are nice and all, але гэта вялікая праца для стварэння топ-оф-лініі карыстацкі досвед, які таксама вельмі гнуткая.

Я сапраўды меў патрэбу ў адказ на гэтае пытанне. Мне прыйшло ў галаву, што калі б я мог атрымаць усе слупкі сайта ў сямействе сайтаў у карыстацкі спіс, Я мог выбіраць, сартаваць і ствараць паданні, якія дапамаглі б мне знайсці гэтага нібыта існуючага слупка (што ён і зрабіў, Дарэчы). I went ahead and did that and an hour or two later, былі ўсе мае калонкі сайт загружаецца ў карыстацкі спіс з групоўкай, sorting and so forth. I found my answer five minutes later.

Калі і калі я паспяхова захапіць уладу над светам, I think I will decree that all SharePoint tools providers must seriously consider surfacing their object model data in a custom list. That way, У мяне ёсць сіла шукаць любое, як я хачу (абмежаваны, вядома, стандартнымі функцыямі SharePoint).

SharePoint Designer Custom Action Workflow — Назіранне аб <Поле рулявы Дызайнер Type =”StringBuilder” … />

Толькі хуткае назіранне, што ёсць вельмі важнае адрозненне паміж гэтымі двума азначэннямі:

<FieldBind Field="InParam1" DesignerType="StringBuilder" Id="2" Text="Input parameter #1"/>

супраць:

<FieldBind Field="InParam1" Id="2" Text="Input parameter #1"/>

Першая паказвае, як гэта ў SPD:

малюнак

а другі паказвае, як гэта:

малюнак

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 🙂

Назіранне гэта: StringBuilder дазволіць вам стварыць радок (відавочна) Разам радковых литералов шляхам змешвання дадзеных і рабочых працэсаў (via the "Add Lookup" кнопку ў ніжнім левым куце). When you use the Add Lookup button, it inserts a token in the form "[%Маркер%]". When SharePoint invokes your custom action, (C # код у маім выпадку), SharePoint перадае маркер-сама, not the value of the token. If you use the default designer type (-Другому тыпу), Разгарнуць SharePoint і перадае маркер-маркер фактычная кошт вашага дзеянні.

StringBuilder = BAD, Па змаўчанні тып дызайнера = добра.

Вядома, 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 (які, дарэчы, менавіта тое, што чалавек робіць для стварэння дынамічнага тэму паведамленні дзеянні, але гэта ўжо тэма для іншай запісы ў блогу, Хар Хар).

<канец />

Заўчасная актывацыя Workflow — Немедыцынскае рашэння

АБНАЎЛЕННЕ: Глядзіце гэты MSDN абмеркавання, Асабліва апошняя запіс: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. It describes a condition that may short circuit this whole thing. In short, гэта можа быць таксама проста, як стварэнне па меншай меры адно з палёў абавязковым.

У мяне ёсць бібліятэка дакументаў, якая падтрымлівае восем тыпаў кантэнту.

I have a SharePoint Designer workflow that wants to calculate and assign a "reminder date" проста адняць 30 дзён з іншага слупка, "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." (Вы можаце даведацца больш аб гэтым выглядзе KPI і больш істотныя дэталізацыі тут).

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.

Гэтая стратэгія не працуе, калі я загрузіць дакумент.

I upload the document and I am presented with the meta data entry screen. У гэты момант, I’m already in trouble. SharePoint has already, заўчасна з майго пункту гледжання, fired the workflow. I haven’t had a chance to pick the correct content type nor assign a due date. У той жа час, 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. Так … мой працоўны звольніў і калі яна выконваецца, 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, Я выбраць правільны тып, enter the meta data and submit. The pause completes and the workflow proceeds as needed. (Звярніце ўвагу, што ў маім асяроддзі, timer workflow activities from SPD do not work out of the box. You may have the same trouble. Паглядзець тут для больш падрабязнай інфармацыі).

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, але я ўсё яшчэ не падабаецца.

Я пісаў пра гэта на форумах MSDN тут: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1

SharePoint асноў бяспекі Першая / Пазбегнуць распаўсюджаных памылак

АБНАЎЛЕННЕ 12/18/07: Глядзіце артыкул Пола Liebrand для некаторых тэхнічных наступстваў выдаліць яго, ці змены назвы групы па змаўчанні (гл. яго каментар ніжэй, а).

Агляд:

SharePoint security is easy to configure and manage. Аднак, 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. (Я прызнаюся, што гэтую праблему самастойна). This blog entry hopefully provides a useful SharePoint security primer and points towards some security configuration best practices.

Важнае заўвага:

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 напішыце мне. I’ll make corrections post haste.

Асновы:

For the purposes of this overview, there are four fundamental aspects to security: users/groups, securable objects, permission levels and inheritance.

Users and Groups break down to:

  • Individual users: Pulled from active directory or created directly in SharePoint.
  • Groups: 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" to a specific securable object.

Securable objects break down to at least:

  • Sites
  • Бібліятэкі дакументаў
  • Individual items in lists and document libraries
  • Folders
  • Various BDC settings.

There other securable objects, but you get the picture.

Permission levels: A bundle of granular / low level access rights that include such things as create/read/delete entries in lists.

Inheritance: 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.

Users and groups relate to securable objects via permission levels and inheritance.

The Most Important Security Rules To Understand, Ever 🙂 :

  1. Groups are simply collections of users.
  2. Groups are global within a site collection (I.E. there is no such thing as a group defined at a site level).
  3. Group name not withstanding, groups do not, in and of themselves, have any particular level of security.
  4. Groups have security in the context of a specific securable object.
  5. You may assign different permission levels to the same group for every securable object.
  6. Web application policies trump all of this (гл. ніжэй).

Адміністратары бяспекі губляюцца ў моры груп і карыстальнікаў, спісы могуць заўсёды спадзявацца на гэтыя аксіёмы, каб кіраваць і разумець іх налады бяспекі.

Найбольш распаўсюджаныя памылкі:

  • Імёны груп ілжыва прадугледжвае дазвол: З скрынкі, 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" group cannot contribute at all, but only read (напрыклад). This would not be a good idea, відавочна, since it would be very confusing.
  • Groups are not defined at a site level. 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" спасылка. 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.
  • Групы сяброўства не залежыць ад сайта (I.E. яна ўсюды аднолькавая група выкарыстоўваецца): Consider the group "Owner" і ў двух месцах, "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, Я мог бы звяртацца да груп людзей і спасылкі праз сайт HR, 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. На самай справе, I’m removing her from the global Owners group. Hilarity ensues.
  • Будучы не ў стане назваць групы, заснаваныя на канкрэтнай ролі: 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, Я бы стварыў дзве новыя групы: "HR Owners" and "Logistics Owners" і прызначыць разумныя ўзроўні дазволаў для кожнага і мінімальную суму, неабходную для тых карыстальнікаў, каб зрабіць іх працу.

Іншыя карысныя спасылкі:

If you’ve made it this far:

Please let me know your thoughts via the comments or email me. If you know other good references, please do the same!

Technorati Тэгі:

Хутка і лёгка: Стварэнне вэб-частка прадстаўлення даных (DVWP)

Існуе мноства карыснай інфармацыі на WSS 3.0 Дадзеныя вэб-частка (DVWP) on the web from several sources. Аднак, 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" Серыя для яе вырашэння.

Выканайце наступныя крокі, каб стварыць вэб-частка прадстаўлення даных (DVWP). They are based on an "Announcements" Вэб-частка, але ставяцца да большасці спісаў.

  1. Стварэнне вэб-часткі аб'явы і дадаць яго на сайт.
  2. Адкрыйце сайт у SharePoint Designer.
  3. Адкрыйце default.aspx сайта.
  4. Select the Announcements web part and right-click.
  5. З кантэкстнага меню, select "Convert to XSLT Data View".

SharePoint Designer паведамляе вам, што гэты сайт у цяперашні час настроены са свайго сайта вызначэнні. Гэта не абавязкова дрэнна, але існуюць сур'ёзныя наступствы (прадукцыйнасць, мадэрнізаваць, іншыя) which are beyond the scope of this little "Quick and Easy" ўступленне. To get more information on this subject, Я рэкамендую абедзве кнігі тут , А таксама вашыя любімыя інтэрнэт-пошуку.

Пацвердзіце, што вы зрабілі гэта правільна:

  1. Зачыніць і паўторна адкрыць вэб-браўзэр (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" з меню.
  3. Панэлі інструментаў адкрывае права.
  4. Панэль змяніўся ад свайго звычайнага набору варыянтаў гэтай:
малюнак

“Не атрымалася атрымаць спіс слупкоў ўласцівасці схемы з спісу SharePoint” — апісанне / абыходныя

На гэтым тыдні, мы, нарэшце, прайграныя праблемы, якія былі зарэгістраваныя аддаленым карыстальнікам: Калі яна паспрабавала экспартаваць змесціва спісу ў Excel, рэчы, здавалася б, пачаць працаваць, але тады Excel будзе ўсплывальнае памылцы: "Cannot get the list schema column property from the SharePoint list". She was running office 2003, windows XP and connecting to MOSS.

Я шукаў у Інтэрнэце і бачыў некаторыя спекуляцыі, але нічога 100% definitive. Hence, гэты пост.

Праблема: Экспарт мэтай Excel, якая змяшчае дату (дата = тып дадзеных слупка).

Тое, што працавала для нас: Convert the date to a "single line of text". Затым, пераўтварыць яго назад у дату.

That solved it. It was nice to see that the conversion worked, на самай справе. It was quite nervous that converting things this way would fail, but it did not.

Гэтая памылка кінута вялізны цень на тып даты на ўвазе кліента, таму мы збіраемся пошуках канчатковага адказу ад Microsoft і, спадзяюся, я выкладу тут і абнавіць у наступным кароткі перыяд часу з іх афіцыйнага адказу і выпраўленне інфармацыі.

Іншыя спасылкі:

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

<канец>

Падпісацца на мой блог.

Хутка і проста: Адправіць ліст з убудаванымі гіперспасылкі канструктар рабочых працэсаў SharePoint

Раз ці два месяцы, Хтосьці публікуе форуме пытанне: "How do I include hyperlinks to URL’s that are clickable from a SharePoint Designer email?"

Прадстаўлены без далейшых каментароў: (добра, На самай справе ёсць ад далейшых каментароў па вобразу):

малюнак

Бэкі Isserman варта з карыснае тлумачэнне аб тым, як ўстаўляць спасылку на пункт у электроннай пошце: 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

Technorati Тэгі: , ,

Новы рэліз: SharePoint Designer Workflow пашырэння (Функцыі працы з радкамі)

АБНАЎЛЕННЕ: Глядзіце тут для маіх думак на камерцыялізацыі гэтага праекта: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Я быў заняты працай над маім Codeplex праект, які ў цяперашні час накіраваны на забеспячэнне пашырэння маніпуляцый са радкамі, працоўныя працэсы, створаныя з дапамогай SharePoint Designer,.

Падрабязнасці см. тут:

Праект дома: http://www.codeplex.com/spdwfextensions

Адпусціце: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Версія 1.0 ўключае ў сябе наступныя новыя магчымасці:

Функцыя Апісанне (калі не такія ж, як. Чыстыя функцыі)
Num-запісы() Returns the number "entries" in a string as per a specified delimiter.

Напрыклад: Num-entries in a string "a,B,З" with delimiter "," = 3.

Ўступленне() Returns the nth token in a string as per a specified delimiter.
Даўжыня String.Length
Замяняць() String.Replace()
Змяшчае() String.Contains()
Returns the word "true" or the word "false".
Падрадок(пачатак) String.substring(пачатак)
Падрадок(пачатак,даўжыня) String.substring(пачатак,даўжыня)
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".

Памылка выканання BDC патлумачыў

Я выклікала BDC памылку на гэтым тыдні, што выявілася ў карыстацкім інтэрфейсе і ў 12 вулей часопіса падчас выканання.

Першы, Гэта з'явілася ў інтэрфейсе карыстальніка:

Не атрымалася знайсці палёў ўставіць ўсе значэння ідэнтыфікатара правільна выканаць SpecificFinder MethodInstance з імем … Пераканайцеся, уведзеных параметраў TypeDescriptors, звязаны з кожнай ідэнтыфікатар, вызначаны для дадзенага аб'екта.

Вось здымак экрана:

clip_image001

Я мог бы таксама Дадзенае паведамленне з'яўляецца ў 12 вулей часопіс па жаданні (using my patented high-tech-don’t-try-this-at-home "mysterious errors" метад):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x High Exception in BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Значэнне ідэнтыфікатара ”, Тыпу ”, з'яўляецца несапраўдным. Expected Identifier value of Type ‘System.String’. на Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific(Аб'ект[] subIdentifierValues, LobSystemInstance LobSystemInstance) на Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity(Entity асобы, Аб'ект[] userValues, LobSystemInstance LobSystemInstance) на Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance(Паглядзець desiredView) на Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance() на Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties()

Я шукаў вакол і знайшоў некаторыя драты ў MSDN форум, but they weren’t enough for me to understand what I was doing wrong. I watched a webcast by Тэд Паттисон што мая кампанія squirreled была далёка на сервер і зразумеў, мая праблема.

На мой ADF, Я падключэннем да базы дадзеных SQL, як паказана:

            <Уласнасць Імя="RdbCommandText" Тып="System.String">
              <![CDATA[
                ВЫБАР
                      , CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, Network_id, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      КРАІНЫ, ADDRESS1, ADDRESS2, Address3, Адрас 4, ГОРАД, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      Акругах, ДЗЯРЖАЎНЫ, ПАШТОВЫ, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, ТЭЛЕФОН, Распаўсюджванне, FAX, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG
                 (NOLOCK)
                ДЗЕ
                  (SETID <> "Доля") і
                  (знізіць(CARRIER_ID) >= Ніжняя(@ MiniD)) і
                  (знізіць(CARRIER_ID) <= Ніжняя(@ MaxId)) і
                  (знізіць(DESCR) Падобныя ніжэйшых(@ InputDescr))
                ]]>
            </Уласнасць>

Я быў пры ўмове, што ад SQL DBA чалавек, і я даў зразумець, што гэта спецыяльны view they created just for me. The unique key there is CARRIER_ID.

Вось я прадставіў памылцы:

      <Ідэнтыфікатары>
        <Ідэнтыфікатар Імя="CARRIER_ID" TypeName="System.String" />
        <Ідэнтыфікатар Імя="DESCR" TypeName="System.String" /> 
</Ідэнтыфікатары>

Дзе-то ўздоўж лініі, Мне ўдалося заблытаць сябе над сэнсам <Ідэнтыфікатары> and added DESCR even though it’s not actually an identifier. I took DESCR out of the identifiers set and presto! Усё гэта працавала.

I hope this saves someone some grief 🙂

Technorati Тэгі: , , ,