Monthly Archives: Azaroaren 2007

MOSS esaten dit Nire zutabea izena erreserbatuta dago edo erabileran … Baina ez da

UPDATE 12/04/07: Ikusi this Microsoft KB (http://support.microsoft.com/kb/923589) Informazio lotutako.

Benetan, bihurtzen da da, baina 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, baina azken emaitza hau da::

  • 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. Hori dela eta, "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, Izan ere,, 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"). Nonbait, lerro zehar, bat 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, Hala ere,, remained but in the "_Hidden" group. If someone knows better, please let me know via e-posta 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.

</amaiera>

Vía OM pertsonalizatua zerrenda Datu oraina (edo, Yet Another OM Datu Displayor [YACC bezalako, baina beste])

Gaur egun, 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."

Galdera zutabea sortu ahal izango dira, ezabatu eta berriro sortu ingurumena eta beste batean, so I knew it wasn’t a reserved name. Hala eta guztiz ere, Liteke, besterik gabe, ez dut aurkitu zutabean edonon da SharePoint estandarra Erabiltzaile interfaze bidez gune bildumako gune edozein unetan.

Argitaratu nuen MSDN foroak hemen eta indomitable du Andrew Woodward adierazi dit objektuaren azpiko eredu datuak norabidean.

Off nintzen codeplex Tresna batzuk me lagunduko luke OM azpiko datuak sartu peer aurkitzeko eta laguntza arazoak aurkitzeko me.

Hainbat Tresna saiatu naiz, eta oso fresko eta interesgarria izan dituzte, baina azkenean, the UI wasn’t good enough for my purpose. I’m not criticizing them by any means, baina argi eta garbi tresna-arduradunek ez dute nire arazoa kontuan beren UI sortu dute :). Most people seem to be investing a fair amount of time and effort in creating workstation / bezeroa aplikazio eskaintzen duten zuhaitz aldiz, right-click context menus and so forth. These are nice and all, baina lan handia da, goi-de-la-line erabiltzaileak esperientzia hori ere oso malguak sortzeko.

Beharrezko dut erantzun bat arazo honen. Gertatu zait gune bilduma zutabeen gune osoa dut balute Ohiko zerrendan sartu dela, Iragazi izan dut, ordenatzeko sortu eta aldiz ustezko existitzen diren zutabe hau aurkitu me lagunduko luke (horrek egin, Horretaz). I went ahead and did that and an hour or two later, gune izan da nire zutabe guztiak biltzen dituzten zerrenda pertsonalizatu bat kargatzen, sorting and so forth. I found my answer five minutes later.

Eta denean behar bezala hartu ditut, mundu, I think I will decree that all SharePoint tools providers must seriously consider surfacing their object model data in a custom list. That way, Boterea daukat inola ere nahi dut bilaketa- (mugatutako, jakina, estandarra SharePoint ezaugarri).

SharePoint Designer Workflow pertsonalizatua Ekintza — Behaketa buruz <Eremu Tie diseinatzailea Mota =”StringBuilder” … />

Just behaketa azkar bat dagoela bi definizio horien arteko aldea oso garrantzitsua da:

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

versus:

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

SPD hau bezalako ikuskizunak lehen:

image

bigarrenak, berriz, hau bezalako erakusten bitartean:

image

Ez nago ziur zein lagungarriak diren pantaila-argazki hauek, baina horiek egiteko ahalegina egiten dut ikusi ahal izateko you

Behaketa hau da,: StringBuilder Onartu kate bat eraiki nahi duzu (jakina,) Elkarrekin katea datuak nahasketa eta workflow by literalak (via the "Add Lookup" ezkerreko behe-botoia). When you use the Add Lookup button, it inserts a token in the form "[%token%]". When SharePoint invokes your custom action, (C # nire kasuan kodea), SharePoint pasatzen du, token-bera, not the value of the token. If you use the default designer type (-Bigarren mota), Zabaldu eta SharePoint-token-token pasatzen da zure ekintza benetako balioa.

StringBuilder = BAD, lehenetsi diseinatzaile mota = ONA.

Jakina, 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 (horrek bide da, hain zuzen, posta elektronikoa ekintza gai dinamiko bat sortu nahi du bat, baina hori beste blog sarrera gai bat da, Har har).

<amaieran />

Workflow aktibatzea goiztiarra — Ez-mediku irtenbide bat

UPDATE: Ikusi MSDN eztabaida hau, batez ere, azken sarrera: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. It describes a condition that may short circuit this whole thing. Laburbilduz, izan bezain sinplea izan daiteke gisa hartzeko, gutxienez eremu bat derrigorrezkoa.

Dokumentuan liburutegi onartzen zortzi eduki mota behar dut.

I have a SharePoint Designer workflow that wants to calculate and assign a "reminder date" by simply subtracting 30 days from another column, "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." (You can read more about this kind of KPI and more substantial drill-down hemen).

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.

This strategy does not work when I upload a document.

I upload the document and I am presented with the meta data entry screen. Puntu honetan, I’m already in trouble. SharePoint has already, prematurely from my perspective, fired the workflow. I haven’t had a chance to pick the correct content type nor assign a due date. Aldi berean,, 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. Beraz, … my workflow has fired and when it executed, 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, I select the correct content type, enter the meta data and submit. The pause completes and the workflow proceeds as needed. (Note that in my environment, timer workflow activities from SPD do not work out of the box. You may have the same trouble. Ikusi hemen for more details).

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, but I still don’t like it.

I wrote about this on the MSDN forums here: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1

SharePoint segurtasuna oinarriak Lehen / Ohiko pitfalls saihesteko

UPDATE 12/18/07: Ikusi Paul Liebrand artikuluak kendu edo aldatzea lehenetsia taldearen izen tekniko ondorio batzuk (ikusi bere iruzkina behean bai).

Orokorra:

SharePoint security is easy to configure and manage. Hala eta guztiz ere, 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. (I admit to having this problem myself). This blog entry hopefully provides a useful SharePoint security primer and points towards some security configuration best practices.

Important Note:

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 email me. I’ll make corrections post haste.

Fundamentals:

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
  • Document libraries
  • 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 (see below).

Security administrators lost in a sea of group and user listings can always rely on these axioms to manage and understand their security configuration.

Common Pitfalls:

  • Group names falsely imply permission: Kutxa Out, 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 (adibidez). This would not be a good idea, jakina,, 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" lotura. 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.
  • Groups membership does not vary by site (I.E. it is the same everywhere the group is used): Consider the group "Owner" and two sites, "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, I might access the People and Groups links via the HR site, 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. Izan ere,, I’m removing her from the global Owners group. Hilarity ensues.
  • Failing to name groups based on specific role: 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, I should have created two new groups: "HR Owners" and "Logistics Owners" and assign sensible permission levels for each and the minimum amount required for those users to do their job.

Other Useful References:

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 Tags:

Azkarra eta erraza: Sortu Datu Ikusi Web Taldea (DVWP)

Badago informazio handia aberastasuna WSS da 3.0 Datuak ikusi Web Taldea (DVWP) on the web from several sources. Hala eta guztiz ere, 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" seriea da aurre egiteko.

Jarraitu urrats hauei datu ikuspegi web parte sortzeko (DVWP). They are based on an "Announcements" web zati, baina gehienetan zerrendak aplikatuko.

  1. Sortu Deialdiak web parte eta gehitu gune bat.
  2. Ireki SharePoint Designer horretan gunea.
  3. Ireki gunearen default.aspx.
  4. Select the Announcements web part and right-click.
  5. Testuinguru menuan, select "Convert to XSTheT Data View".

SharePoint Designer jakinarazten dizu web gune hau, gaur egun, bere definizio-gune batetik pertsonalizatuak. Hau da, ez du zertan txarra, baina inplikazio garrantzitsuak (errendimendua, berritzea, beste batzuk) which are beyond the scope of this little "Quick and Easy" sarrera. To get more information on this subject, Bi liburu gomendatzen dut hemen baita zure gogoko Internet bilaketa.

Berretsi egiten duzula behar bezala:

  1. Itxi eta berriro ireki web nabigatzailea (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" menuan.
  3. Tresna panela eskuinera irekitzen du.
  4. Panel du bere jaurtiketa ohiko aukeretatik, hau aldatu:
image

“Ezin da zerrenda eskema zutabe jabetza SharePoint zerrendatik” — deskribapena / lan-arounds

Aste honetan, erreproduzitu, azkenik dugu arazo bat izan da urruneko erabiltzaile berri: Zerrenda edukiak esportatzeko excel saiatu zuen, gauzak lanean hasteko badirudi, baina gero, Excel irekiko luke errore bat: "Cannot get the list schema column property from the SharePoint list". She was running office 2003, windows XP and connecting to MOSS.

Internets bilatu dut eta espekulazio batzuk, baina ez du ezer ikusi 100% definitive. Hence, post honetan.

Arazoa: Ikuspegi esportatu Excel duten data bat dauka (data = zutabean datu mota).

Zer Gurekin lan egin: Convert the date to a "single line of text". Gero, bihurtzeko bueltan data.

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

Bug hau bota itzal handi bat, datu-mota baino gehiago bezeroaren kontuan, beraz, bila itzazu Microsoft, behin betiko erantzun bat dugu, eta ea argitaratzeko eta eguneratzeko dut hemen hurrengo denbora epe labur euren erantzun ofiziala eta informazio Hotfix zuzenketa batera.

Beste erreferentziak:

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

<amaiera>

Nire blog Harpidetu.

Technorati Tags: ,

Azkarra eta sinplea: Bidali mezu elektroniko bat hiperesteka kapsulatuak dituzten SharePoint Designer workflow-tik

Behin edo bitan hilabete, Norbaitek mezu foro galdera bat: "How do I include hyperlinks to URL’s that are clickable from a SharePoint Designer email?"

Iruzkin gabe aurkezten: (ondo, Egia esan, ez da gehiago irudi ondoren duzu):

image

Becky Isserman honela sortu lagungarria azalpen nola elementu bati esteka bat txertatzeko email buruzko: 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

New oharra: SharePoint Designer Workflow Extensions (katea manipulatzeko funtzio)

UPDATE: Ikusi hemen nire pentsamenduak proiektu honi buruzko merkaturatzea: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Izan dut nire lanpetuta Codeplex proiektua Gaur egun, katea manipulazioa luzapenak emateko fluxuak bideratuta sortutako lan SharePoint Designer bidez.

Ikusi hemen xehetasunetarako:

Proiektua hasiera: http://www.codeplex.com/spdwfextensions

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

Bertsioa 1.0 barne hartzen du, honako ezaugarri berriak:

Funtzioa Deskribapena (berean ez bada ere. funtzio garbia)
Num-sarrerak() Returns the number "entries" in a string as per a specified delimiter.

Adibidez: Num-entries in a string "a,b,c" with delimiter "," = 3.

Sarrera() Returns the nth token in a string as per a specified delimiter.
Luzera String.Length
Ordeztu() String.Replace()
Dauka() String.Contains()
Returns the word "true" or the word "false".
Izan ezik:(hasteko) String.Substring(hasteko)
Izan ezik:(hasteko,luzera) String.Substring(hasteko,luzera)
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".

A BDC runtime error azaldu

BDC errore bat eragin nuen aste honetan duten manifiesta bera interfazearen eta in 12 hive log exekuzio at.

Lehen, Erabiltzaile interfaze agertu:

Ezin izan da aurkitu eremuak Identifier balore guztiak txertatu behar bezala exekutatu SpecificFinder MethodInstance baten izena-rekin … Ziurtatu sarrerako parametroak dute Erakunde honetarako definitutako Identifier behin lotutako TypeDescriptors.

Hemen pantaila jaurtiketa bat:

clip_image001

Era berean, ezin dut eragin mezu hau agertzen 12 hive log izango at (using my patented high-tech-don’t-try-this-at-home "mysterious errors" metodoa):

11/14/2007 09:24:41.27 w3wp.exe (0x080C) 0x0B8C SharePoint Portal Server Business Data 6q4x High Exception in BusinessDataWebPart.OnPreRender: System.InvalidOperationException: Identifier balioa ”, Mota ”, baliogabea da. Expected Identifier value of Type ‘System.String’. Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Entity.FindSpecific at(Objektu[] subIdentifierValues, LobSystemInstance lobSystemInstance) Microsoft.SharePoint.Portal.WebControls.BdcClientUtil.FindEntity at(Entitate entitate, Objektu[] userValues, LobSystemInstance lobSystemInstance) Microsoft.SharePoint.Portal.WebControls.BusinessDataItemBuilder.GetEntityInstance at(Ikusi desiredView) Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.GetEntityInstance at() Microsoft.SharePoint.Portal.WebControls.BusinessDataDetailsWebPart.SetDataSourceProperties at()

Inguruan bilatuko dut eta, hainbat lead aurkitu en MSDN forum, but they weren’t enough for me to understand what I was doing wrong. I watched a webcast by Ted Pattison nire enpresa izan squirreled kanpoan zerbitzari batean, eta etorri zen nire arazoa konturatzen.

Nire ADF en, SQL datu-base bat naiz orokorrak gisa konektatzen:

            <De la Propiedad Izena="RdbCommandText" Mota="System.String">
              <![CDATA[
                AUKERATU
                      , CARRIER_ID, EFFDT, DESCR, EFF_STATUS, TAXPAYER_ID, NETWORK_ID, FRT_FORWARD_FLG, ALT_NAME1, ALT_NAME2, LANGUAGE_CD,
                      HERRIALDEA, ADDRESS1, ADDRESS2, ADDRESS3, ADDRESS4, Hiria, NUM1, NUM2, HOUSE_TYPE, ADDR_FIELD1, ADDR_FIELD2, ADDR_FIELD3,
                      COUNTY, Herrialdea, POSTAL, GEO_CODE, IN_CITY_LIMIT, COUNTRY_CODE, TELEFONOA, EXTENSION, Faxa, LAST_EXP_CHK_DTTM, FREIGHT_VENDOR,
                      INTERLINK_DLL, TMS_EXCLUDE_FLG
                 (nolock)
                NON
                  (Leas <> 'Partekatu') eta
                  (jaistea(CARRIER_ID) >= Txikiagoa(@ MinID)) eta
                  (jaistea(CARRIER_ID) <= Txikiagoa(@ MaxId)) eta
                  (jaistea(DESCR) Txikiagoa LIKE(@ InputDescr))
                ]]>
            </De la Propiedad>

Nintzen emandako SQL bat DBA pertsona naiz eta eman dela ulertzeko bat bereziak view they created just for me. The unique key there is CARRIER_ID.

Hona hemen erroreen dut sartu da:

      <Identifikadore>
        <Identifikatzeko Izena="CARRIER_ID" TYPENAME="System.String" />
        <Identifikatzeko Izena="DESCR" TYPENAME="System.String" /> 
</Identifikadore>

Nonbait, lerro zehar, Kudeatzen nuen neure burua nahastu esanahia baino gehiago <Identifikadore> and added DESCR even though it’s not actually an identifier. I took DESCR out of the identifiers set and presto! Lan egin zuen guztia.

I hope this saves someone some grief 🙂

Technorati Tags: , , ,