Месечне архиве: Новембар 2007

MOSS Tells Me My Column Name is Reserved or In Use … But It’s Not

УПДАТЕ 12/04/07: Видети this Microsoft KB (http://support.microsoft.com/kb/923589) for related information.

Заправо, it turns out it is, али 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, but the end result is this:

  • 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 е-маил 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.

</крај>

Тецхнорати Тагс: , ,

ОМ доставе податке Виа прилагођену листу (или, Још један ОМ Подаци Дисплаиор [као иацц, али другачије])

Данас, 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. Међутим, Једноставно нисам могао наћи нигде колону преко стандардне СхареПоинт корисничког интерфејса на било којој локацији у колекцији локација.

Ја постед се МСДН блог овде и несавладиво Ендрју Вудворд истакао ме у правцу основних података објектних модела.

Сам отишао на цодеплек да пронађете неки алати који ће помоћи пеер ме у ОМ основних података и да ми помогну пронађите проблема.

Покушао сам неколико алата и они су били веома кул и занимљиво, али на крају, the UI wasn’t good enough for my purpose. I’m not criticizing them by any means, али јасно са алаткама одлука није проблем имам на уму када су направили свој УИ :). 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, Имам моћ да претражујете било како ја хоћу (ограничен, наравно, стандардном СхареПоинт функцијама).

СхареПоинт Десигнер прилагођени ток посла Акција — Посматрање О <Поље Тип Кравата Дизајнер =”СтрингБуилдер” … />

Само брза запажање да је веома важна разлика између ове две дефиниције:

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

против:

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

Први показује као ово у СПД:

слика

док други показује овако:

слика

Нисам сигуран како помоћи ови снимци екрана су, али сам ставио у настојању да их направи тако да ћете морати да их видели 🙂

Посматрање је ово: СтрингБуилдер вам омогућава да направите ниску (очигледно) мешањем заједно ниски литерале и тока података (via the "Add Lookup" дугме у доњем левом углу). When you use the Add Lookup button, it inserts a token in the form "[%знак%]". When SharePoint invokes your custom action, (Ц # код у мом случају), СхареПоинт пролази сама токен, not the value of the token. If you use the default designer type (Друга врста), СхареПоинт проширује токен и пролази стварну вредност токена за вашу акцију.

СтрингБуилдер = ЛОШЕ, подразумевани тип = добар дизајнер.

Наравно, 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 (који узгред је управо оно што чини да се створи динамичан субјецт за е-акције, али то је тема за другу блогу, је).

<крај />

Превремено Воркфлов Активација — Немедицинских решење

УПДАТЕ: Погледајте ову дискусију МСДН, посебно последњи унос: http://forums.microsoft.com/MSDN/showpost.aspx?postid=2631057&siteid=1. It describes a condition that may short circuit this whole thing. Укратко, то може бити као једноставан као што најмање једно од поља обавезно.

Имам библиотеку докумената који подржава осам типова садржаја.

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." (Можете прочитати више о овој врсти КПИ и више суштинска дрилл-довн овде).

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, али ја и даље не свиђа.

Писао сам о овоме на МСДН форумима овде: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2430725&SiteID=1

СхареПоинт Безбедност Основи Прајмер / Избегавајте уобичајене замке

УПДАТЕ 12/18/07: Погледајте Пола Лиебранд је чланак за неке техничке последица уклањања или мењања подразумеваних имена групе (види свој коментар испод, као и).

Преглед:

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.

Основи:

За потребе овог прегледа, постоје четири основна аспекта безбедности: Корисници / групе, сецурабле објекти, нивое дозвола и наслеђивање.

Корисници и групе разбити на:

  • Појединачни корисници: Повукао из активног директоријума или створио директно у СхареПоинт.
  • Групе: 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" на одређени сецурабле објекта.

Сецурабле објекти разбити на најмање:

  • Сајтови
  • Библиотеке докумената
  • Појединачне ставке у листама и библиотекама докумената
  • Фолдери
  • Разни БДЦ подешавања.

Постоје други објекти сецурабле, али добијате слику.

Нивое дозвола: Скуп зрнастог / low level access rights that include such things as create/read/delete entries in lists.

Наслеђе: 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.

Корисници и групе односе се на објекте преко сецурабле нивоима дозвола и наслеђа.

Најважнијих безбедносних правила да би се схватило, евер 🙂 :

  1. Групе су једноставно колекције корисника.
  2. Групе су глобални унутар колекције локација (и.е. не постоји таква ствар као што је група дефинисана на нивоу локације).
  3. Назив групе не издржи, група не, у себе и, have any particular level of security.
  4. Groups have security in the context of a specific securable object.
  5. Можете да доделите различите нивое дозвола у истој групи за сваки објекат сецурабле.
  6. Веб апликација политика адут све ово (види доле).

Безбедносне администратори изгубљени у мору групе и корисничке уносе могу увек ослонити на ових аксиома да управљају и разумели своју безбедносну конфигурацију.

Уобичајене замке:

  • Група имена лажно имплицира дозволу: Оут оф тхе бок, 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" група не може да допринесе уопште, али само чита (на пример). This would not be a good idea, очигледно, јер би било веома збуњујуће.
  • Групе нису дефинисани на нивоу локације. 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.
  • Групе чланство не зависе од локације (и.е. она је свуда иста група се користи): 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, Можда ћу приступ људи и група линкова преко ХР сајту, 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" и доделите разумне нивое дозвола за сваког и минималног износа потребног за оним корисницима да раде свој посао.

Остале Корисни Референце:

Уколико сте направили овај је далеко:

Please let me know your thoughts via the comments or email me. If you know other good references, молим те исти!

Тецхнорати Тагс:

Брзо и лако: Креирате дата сегмент Виев Веб (ДВВП)

Постоји богатство од великог информација о складиłтење орушја 3.0 Подаци Погледај Веб сегмент (ДВВП) 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" серија да се тиме позабави.

Следите ове кораке да креирате дата део приказа веб (ДВВП). They are based on an "Announcements" Веб сегмент, већ примењује на већини листа.

  1. Креирање веб Обавештења део и да га додате на сајту.
  2. Отворите сајт у СхареПоинт Десигнер.
  3. Отворите дефаулт.аспк на сајта.
  4. Select the Announcements web part and right-click.
  5. Из контекст менија, select "Convert to XSLT Data View".

СхареПоинт Десигнер вас обавештава да овај сајт се сада прилагођене од свог сајта дефиниције. То није нужно лош, али постоје битне импликације (перформансе, упграде, други) 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. Панел се променила од својих уобичајених постављених опција за ово:
слика

“Не могу добити попис имовине шеме колоне из СхареПоинт листе” — опис / заобилазне

Ове недеље, смо коначно репродуковати проблем који је пријављен од стране удаљеног корисника: Када је покушала да извози садржај листе у Екцел, ствари би било да почну да раде, али онда це се појавити за Екцел грешку: "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, овај пост.

Проблем: Извоз у Екцел приказ који садржи датум (датум = тип података у колони).

Шта је радио за нас: 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.

Овај буг је бачена велику сенку података датуму типа у виду клијента, па ћемо да се траже од дефинитивног одговора из Мицрософта, и надам се да ћу писати и ажурирате овде у наредном кратком временском периоду са њиховог званичног одговора и хитних информација.

Остале референце:

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

<крај>

Претплатите се на мој блог.

Тецхнорати Тагс: ,

Брза и једноставна: Пошаљите емаил поруку са уграђеном хипервезу из СхареПоинт Десигнер посла

Једном или два пута месечно, Поруке неко питање форуму: "How do I include hyperlinks to URL’s that are clickable from a SharePoint Designer email?"

Представљен без даљег коментара: (добро, заправо даље постоји коментар после слике):

слика

Беки Иссерман прати користан објашњење о томе како да уградите везу до ставке у е-поруци: 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

Ново издање: СхареПоинт Десигнер Воркфлов Екстензије (стринг манипулације функције)

УПДАТЕ: Погледајте овде за мојим мислима на овај пројекат комерцијализације: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!569.entry

Био сам заузет радом на свом Цодеплек пројекта који је тренутно фокусиран на пружање стринг манипулације проширења токове посла креира преко СхареПоинт Десигнер.

Погледајте овде за више детаља:

Пројекат кући: http://www.codeplex.com/spdwfextensions

Релеасе: https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=spdwfextensions&ReleaseId=8280

Верзија 1.0 обухвата следеће нове функције:

Функција Опис (ако не и исто као Нето функција.)
Број ставки-() Returns the number "entries" in a string as per a specified delimiter.

На пример: Num-entries in a string "a,Б,Ц" with delimiter "," = 3.

Улазак() Returns the nth token in a string as per a specified delimiter.
Дужина Стринг.Ленгтх
Заменити() Стринг.Реплаце()
Садржи() Стринг.Цонтаинс()
Returns the word "true" or the word "false".
Субстринг(почетак) Стринг.Субстринг(почетак)
Субстринг(почетак,дужина) Стринг.Субстринг(почетак,дужина)
ТоУппер() Стринг.ТоУппер()
ТоЛовер() Стринг.ТоЛовер()
СтартсВитх() Стринг.СтартсВитх()
Returns the word "true" or the word "false".
ЕндсВитх() Стринг.ЕндсВитх()
Returns the word "true" or the word "false".

БДД Рунтиме Еррор објаснио

Сам изазвао грешку БДЦ ове недеље да се манифестује на корисничком интерфејсу и 12 Дневник кошница у рунтиме-.

Прво, Овај се појавио у корисничком интерфејсу:

Није могуће пронаћи поља да додате све вредности идентификатор правилно извршавање СпецифицФиндер МетходИнстанце са Име … Уверите се улазни параметри су ТипеДесцрипторс повезане са сваким идентификатора дефинисаног за овај ентитет.

Ево снимак екрана:

цлип_имаге001

Такође може изазвати ову поруку да се појави у 12 Дневник кошница по вољи (using my patented high-tech-don’t-try-this-at-home "mysterious errors" метод):

11/14/2007 09:24:41.27 w3wp.exe (0к080Ц) 0x0B8C SharePoint Portal Server Business Data 6q4x High Exception in BusinessDataWebPart.OnPreRender: Систем.ИнвалидОператионЕкцептион: Идентификатор вредност ”, типа ”, је неважећи. Expected Identifier value of Type ‘System.String’. на Мицрософт.Оффице.Сервер.АпплицатионРегистри.МетадатаМодел.Ентити.ФиндСпецифиц(Објекат[] субИдентифиерВалуес, ЛобСистемИнстанце лобСистемИнстанце) на Мицрософт.СхареПоинт.Портал.ВебЦонтролс.БдцЦлиентУтил.ФиндЕнтити(Ентитетски ентитет, Објекат[] усерВалуес, ЛобСистемИнстанце лобСистемИнстанце) на Мицрософт.СхареПоинт.Портал.ВебЦонтролс.БусинессДатаИтемБуилдер.ГетЕнтитиИнстанце(Погледај десиредВиев) на Мицрософт.СхареПоинт.Портал.ВебЦонтролс.БусинессДатаДетаилсВебПарт.ГетЕнтитиИнстанце() на Мицрософт.СхареПоинт.Портал.ВебЦонтролс.БусинессДатаДетаилсВебПарт.СетДатаСоурцеПропертиес()

Ја око тражили и нашли неке трагове у МСДН форуму, but they weren’t enough for me to understand what I was doing wrong. I watched a webcast by Тед Паттисон да моје компанија скуиррелед је далеко на серверу и схватио мој проблем.

У мом АДФ, Ја сам повезивање са СКЛ базом података као што је приказано:

            <Имовина Име="РдбЦоммандТект" Тип="Систем.Стринг">
              <![ЦДАТА[
                СЕЛЕЦТ
                      , ЦАРРИЕР_ИД, ЕФФДТ, Десцр, ЕФФ_СТАТУС, ТАКСПАИЕР_ИД, НЕТВОРК_ИД, ФРТ_ФОРВАРД_ФЛГ, АЛТ_НАМЕ1, АЛТ_НАМЕ2, ЛАНГУАГЕ_ЦД,
                      ЗЕМЉА, Аддресс1, Адреса2, АДДРЕСС3, АДДРЕСС4, ГРАД, Бр1, Бр2, ХОУСЕ_ТИПЕ, АДДР_ФИЕЛД1, АДДР_ФИЕЛД2, АДДР_ФИЕЛД3,
                      ОКРУГ, ДРЖАВНА, ПОШТАНСКЕ, ГЕО_ЦОДЕ, ИН_ЦИТИ_ЛИМИТ, ЦОУНТРИ_ЦОДЕ, ТЕЛ, ПРОДУЖЕЊЕ, ФАКС, ЛАСТ_ЕКСП_ЦХК_ДТТМ, ФРЕИГХТ_ВЕНДОР,
                      ИНТЕРЛИНК_ДЛЛ, ТМС_ЕКСЦЛУДЕ_ФЛГ
                 (нолоцк)
                ГДЕ
                  (СЕТИД <> 'Схаре') и
                  (снизити(ЦАРРИЕР_ИД) >= Нижи(@ МинИД)) и
                  (снизити(ЦАРРИЕР_ИД) <= Нижи(@ МакИд)) и
                  (снизити(Десцр) КАО ниже(@ ИнпутДесцр))
                ]]>
            </Имовина>

Био сам под условом да из СКЛ дБА особе и ја дао да схвате да је посебан view they created just for me. The unique key there is CARRIER_ID.

Овде је грешка сам увео:

      <Идентификатори>
        <Идентификовати Име="ЦАРРИЕР_ИД" ТипеНаме="Систем.Стринг" />
        <Идентификовати Име="Десцр" ТипеНаме="Систем.Стринг" /> 
</Идентификатори>

Негде дуж линије, Успео сам да се мешају у смислу <Идентификатори> and added DESCR even though it’s not actually an identifier. I took DESCR out of the identifiers set and presto! Све је радила.

Надам се да ово чува неко неки бол 🙂

Тецхнорати Тагс: , , ,