Schnell & Einfach: Erstellen Sie einen Ordner und ordnen einen Content-Type (Oder, Haben Sie Ihre KPIs und Essen sie auch)

Um ein KPI-Problem zu umgehen Ich schrieb hier, Ich habe einige Tests und entdeckt, dass KPI Arbeit gegen Ordner mit Meta-Daten auf die gleiche Weise, dass sie gegen Dokumente arbeiten oder Listenelemente. Ich bewies es heraus, indem Sie einen neuen Inhaltstyp erstellen basierend auf den Ordner Content-Type und dann ein paar Felder hinzugefügt. Ich habe einige Indikatoren und bewies mir, die KPIs erwartungsgemäß. Das war die erfreuliche Nachricht. Es ist nicht perfekt, Da die Drilldown-Sie von bekommen ist der KPI gegen die Ordner nicht genau was Sie wollen. Das ist zu viel ein Nachteil in meinem Fall nicht, weil 1) die Endbenutzer nicht besser wissen und 2) die Drill-Down geht in einen Ordner. Klicken sie den Namen des Ordners, und sie sind das Element. Es ist zwei Klicks statt einer, Das ist nicht das Ende der Welt.

Diese flossen schön mit der Arbeit, die ich tat. Ich erstelle einen Ordner für jedes Dokument, die hochgeladen wird. Dies geschieht über einen Ereignisempfänger. Als Folge, Es ist ein Stück Kuchen zu halten die des übergeordneten Ordners Meta-Daten synchron mit den KPI-gesteuerte Meta-Daten aus der Datei selbst, da die Installateure bereits vorhanden ist. This allows me to have my KPI’s and eat them too 🙂

Ich änderte die Ereignissenke, um den Ordner hinzuzufügen, und legen Sie dann diesen neuen Ordner Content-Type auf meine benutzerdefinierten Inhaltstyp KPI-freundliche. Dieses Stück Code hat den trick:

 SPFolderCollection SrcFolders = targetWeb.GetFolder("Dokumente").Unterordner;
  SPFolder AddedFolder = srcFolders.Add(Eigenschaften.ListItem.ID.ToString());
  SPContentTypeId KpiCT = Neu SPContentTypeId("0x0120002A666CAA9176DC4AA8CBAA9DC6B4039F");
  addedFolder.Item["Content-Type-ID"] = kpiCT;
  addedFolder.Item.Update();

Die eigentliche Inhaltstyp-ID suchen, Ich dieses Inhaltstyps über Websiteeinstellungen abgerufen und kopieren/einfügen es aus der URL wie gezeigt:

Bild

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags: ,

Schnell und einfach: Holen Sie sich die SPFolder ein SPListItem in einen Ereignisempfänger

Ich hasse es zugeben, aber ich kämpfte mit diesem einen Tag. Mein Ereignisempfänger muss ein Feld von seinem übergeordneten Ordner aktualisieren. Das bisschen zeigt wie es:

Privat privatevoid UpdateParentFolder(SPItemEventProperties Eigenschaften)
{

SPFolder ThisItemFolder = Eigenschaften.ListItem.File.ParentFolder;
thisItemFolder.Item["ZZ Genehmigungsstatus"] = "Good news, Alle!";
thisItemFolder.Item.Update();


} // UpdateParentFolder

In diesem Fall, Ich arbeite mit einer Dokumentbibliothek und die Eigenschaften kommen aus einem ItemAdded-Ereignis.

Der Trick ist, dass Sie die SPFolder des Elements direkt aus dem Element selbst nicht (dh. Eigenschaften.ListItem.Folder ist null). Stattdessen, das Listenelement zugeordneten Datei gehen Sie und bekommen Sie die Datei Ordner.

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags:

Noch ein weiteres Ereignisempfänger Debuggen Trick

Ich bin sicher, dass ich nicht die erste Person, die mit diesem kommen. Jedoch, Ich habe nicht bemerkt, dass jemand einen Trick, wie dies zu veröffentlichen, da ich begann nahe Aufmerksamkeit auf der Gemeinschaft im Juli. Also, Ich dachte, ich würde es post, diese schnelle und einfache Debug-Tipp.

Ich arbeite gerade an einen Ereignisempfänger, die damit begonnen, diese Fehler in der 12 Bienenkorb:

Fehler beim Laden und Ausführen des Ereignisempfängers Conchango.xyzzyEventReceiver in xyzzy, Version = 1.0.0.0, Kultur = Neutral, PublicKeyToken = Blahbalhbalh. Weitere Informationen finden sich unter. : Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

Ich wusste nicht, wo ich dieser Bug eingeführt hatte, weil ich, zu viele Dinge in einem mein Code/bereitstellen/Test-Zyklen getan hatte.

Ich habe versucht Diese Lösung zu meiner Pdb dort mit der Hoffnung, dass SharePoint erhalten 12 Bienenkorb würde die Stapelüberwachung anzeigen, aber kein Glück. Ich weiß nicht, ob es möglich ist, und wenn jemand tut, Bitte lassen Sie mich wissen 🙂

Ich weiß, dass es möglich ist Schreiben Sie Ihren eigenen Log-Meldungen zu den 12 Bienenkorb. Ehrlich gesagt, Ich wollte etwas ein wenig weniger beängstigend und schneller zu implementieren.

Es fiel mir ein, dass ich zumindest einige grundlegende Ablaufverfolgungsinformationen bekommen konnte, durch Abfangen und Auslösen von generische Ausnahmen wie folgt:

  versuchen {
    UpdateEditionDate(Eigenschaften);
  }
  fangen (Ausnahme e)
  {
    werfen Neu Ausnahme("Dispatcher, UpdateEditionDate(): Ausnahme: [" + e.ToString() + "].");
  }

Dies zeigte sich der 12 auf diese Weise Bienenstock:

Fehler beim Laden und Ausführen des Ereignisempfängers Conchango.xyzzyEventReceiver in xyzzy, Version = 1.0.0.0, Kultur = Neutral, PublicKeyToken = Blahblahblah. Weitere Informationen finden sich unter. : Verteiler, UpdateEditionDate(): Ausnahme: [NullReferenceException-System.: Objektverweis nicht auf eine Instanz eines Objekts festgelegt. bei Conchango.xyzzyManagementEventReceiver.UpdateEditionDate(SPItemEventProperties-Eigenschaften) bei Conchango.xyzzyManagementEventReceiver.Dispatcher(SPItemEventProperties-Eigenschaften, String eventDescription)].

Das gab mir alle Details, die ich brauchte, um dieses besondere Problem aufzuspüren und ich erwarte, dass es geht viel weiter verwenden.

</Ende>

Onnieren Sie meinen Blog ab!

Sonntag Funny: “NICHT FÜR DEN EXPORT”

Zurück um 1998, Das Unternehmen arbeitete ich damals erhielt einige Mittel um ein neues e-Commerce-Produkt erstellen. Wir hatten die ganze Bandbreite der geschäftlichen Anforderungen zu erfüllen. Es musste schnell sein, einfach für Endbenutzer, auffällige, mehrsprachig, usw.. Traurig zu sagen, Ich habe wahrscheinlich nicht wie eine ehrgeizige Arbeit seit den stürmischen Tagen zu erreichen.

Diese Bemühungen datiert vorab Microsoft.NET. Einfache Vanille ASP war immer noch etwas neues (oder zumindest sehr fremd meine Firma). "Brick and mortar" Unternehmen waren zum Scheitern verurteilt. Verurteilt! Dies ist zu sagen, dass es Arbeit wegweisend war. Nicht Hadron Collider Pionierarbeit, aber für uns in unserer kleinen Welt, Es war Arbeit wegweisende.

Wir waren verrückt beschäftigt. Wir machten Mini POC fast jeden Tag, herauszufinden, wie man den Zustand in einem naturgemäß zustandslosen Medium erhalten, herauszufinden, mehrsprachige Ausgaben, Sicherheit auf Zeilenebene. Wir hatten sogar ein Vokabular, grundlegende Begriffe zu definieren erstellen (Ich bevorzugte Zustand permanenten aber aus irgendeinem Grund, die peinliche "nennt" gewann den Tag).

Wie wir wurden wahnsinnig dieses Produkt erfinden, die Marketing- und sales-Leute waren dort versuchen, es zu verkaufen. Irgendwie, Es gelang ihnen, die sie unser Albtraum-Szenario zu verkaufen. Obwohl wir waren entwerfen und implementieren eine Enterprise-Lösung, wir nicht wirklich erwarten, dass den ersten Kunde, jeden letzten Feature zu verwenden, die wir in den Produkt-Day-Zero eingebaut. Dieser Kunde benötigte mehrsprachigen, eine radikal andere Benutzeroberfläche aus dem "standard" System, aber mit der gleichen Geschäftslogik. Multi-Sprache war in diesem Fall besonders schwer, Da wir immer konzentrierte sich auf Spanisch oder Französisch, aber in diesem Fall, Es war Chinese (die Double-Byte Character set und erforderliche spezielle Behandlung gegeben, die Technologie, die wir verwendet).

Schneller Vorlauf bin ein paar Monate und ich auf ein Northwest-Airlines-Flug nach Peking. Ich habe also damit beschäftigt, für diese Reise, die ich fast keine Ahnung was es ist, dorthin zu gehen. Ich hatte ein Buch einmal darüber, wie ein Amerikaner war seit mehreren Jahren in China und hatte die Sprache gelernt zu lesen. Eines Tages, er war Fuß die Stadt und einige Leute nach dem Weg gefragt. Das Gespräch ging etwas:

  • Amerikanische: "Könnten Sie mir sagen wie man zu erhalten [XX] Straße?"
  • Chinesisch: "Tut mir leid, Wir sprechen nicht Englisch".
  • Amerikanische: "Oh, auch spreche ich Mandarin." und er fragte sie wieder in der chinesischen, aber deutlicher (so gut er konnte).
  • Chinesisch: Sehr höflich, "Tut mir leid, Wir sprechen nicht Englisch".

Das Gespräch ging auf wie die für Bit und der Amerikaner gaben die Frustration. Wie er sie verlassen werde, hörte er einen Mann im Gespräch mit anderen, "Ich könnte geschworen haben, dass er fragte nach dem Weg zum [XX] Straße."

Ich hatte ein paar Bits und Stücke von anderen China-in Verbindung stehenden Quasi-information und "hilfreiche Tipps" abgeholt:

  • Eine koreanische co-worked sagte mir, die ich brauchte, um der chinesischen vorsichtig sein, da "sie versuchen würde, mich betrinken und nutzen Sie" im Sinne der Druck auf mich in schlechte geschäftliche Entscheidungen.
  • Wir durften nicht zu fahren Autos (Es gab einige Verwirrung, ob dies eine benutzerdefinierte, ein gesetzliches Erfordernis oder nur die Client-Regel).
  • Gab es besondere Vorschriften für das gehen durch den Zoll.
  • Wir durften nicht amerikanisches Geld für alles verwenden.
  • Du sollst nicht Tipps zu verlassen. Es ist eine Beleidigung, wenn Sie tun.

Und schließlich, Ich hatte relativ frische Erinnerungen der Tiananmen-Massaker. Als ich im College war., Ich erinnere mich, in Echtzeit Usenet-Postings wie die Welt entsetzt zusah.

Kurz gesagt, Ich war sehr nervös. Ich war nicht gerade Normal nervös in dem Sinne, das ich eine Lösung liefern war, die Größenordnungen komplizierter als alles war, was ich je zuvor gemacht hatte. Ich war auch besorgt über versehentlich brechen einer Regel, die mich in Schwierigkeiten bringen könnte.

Ich bin auf diesem 14 Flugstunden und obwohl es Businessclass war, 14 Stunden ist eine verdammt lange Zeit. Es gibt nur so viele Möglichkeiten, sich durch die Lektüre zu unterhalten, Abspielen von Filmen oder spielen mit dem magnetisierten Besteck. Auch ein wirklich gutes Buch ist schwer zu lesen für mehrere Stunden lang.

Schließlich, Ich begann zu lesen das Verpackungsmaterial auf ein Stück Software, die ich Hand-mit mir an den Client trug, Netscape-Webserver. Ich lese die Hard-und Software-Anforderungen, die marketing-Kurzinfo, Blick auf das schöne Bild und plötzlich, Ich NULL auf der riesigen "nicht für den EXPORT in" Warnung, etwas 128 Bit-Verschlüsselung. Ich stopfte Feld zurück in meine Tragetasche, Warnung nach unten (als ob das würde geholfen haben) und versuchte, Visionen zu halten Midnight Express Out of my head.

Rückblick auf es jetzt, Ich hätte besorgt, Wenn überhaupt, Wenn ich den USA Links, nicht als ich nach China kam 🙂 Nichts Ungewöhnliches ist passiert und ich halte das immer noch für die beste und unvergesslichste Geschäftsreise, die ich je gemacht habe.

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags: ,

Lösung: SPQuery sucht nicht Ordner

Letzte Woche war ich Umsetzung einer "entwickelt" Lösung für einen Client, der BDC und SPQuery verwendet und lief in einige Schwierigkeiten bei der Verwendung von SPQuery gegen eine Dokumentbibliothek mit Ordnern. Fazit: "rekursive zuweisen" die Ansicht-Attribut der Abfrage.

Mein Szenario:

  • Am Montag, Ich ein Dokument uploaden und geben Sie einige Metadaten.
  • In der folgenden Woche, Ich hochladen ein neues Dokument. Ein Großteil dieses neue Dokument-Metadaten basiert auf das Dokument, das ich am Montag hochgeladen (Wir nennen das "master-Dokument").
  • Wir haben eine Web-Service-Fassade erstellt, die eine BDC-freundliche Schnittstelle zu der Liste bereitstellt, so dass Benutzer problemlos das Montag-Dokument über eine Titelsuche finden können.
  • Eine Datenspalte BDC bietet eine benutzerfreundliche Oberfläche. (Dies ist Teil von meinem Versuch mit BDC für ein freundlicher Nachschlagefeld).

Der letzte BDC Fassade Service verwendet eine Abfrage wie folgt für die Suche:

 // U2U Tool zur Unterstützung bei der Erstellung dieser CAML-Abfrage verwendet.
      oQuery.Query =
        "<Wo>";

      If (titleFilter.Length > 0)
        oQuery.Query  =
          "  <Und>";

      oQuery.Query  =
        "    <Und>" +
        "      <GEQ>" +
        "        <FieldRef Name =  "DocumentId" />" +
        "        <Werttyp =  "Text">" + minId + "</Wert>" +
        "      </GEQ>" +
        "      <Leq>" +
        "        <FieldRef Name =  "DocumentId" />" +
        "        <Werttyp =  "Text">" + maxId + "</Wert>" +
        "      </Leq>" +
        "    </Und>";

      If (titleFilter.Length > 0)
        oQuery.Query  =
          "    <Enthält>" +
          "      <FieldRef Name =  "Title" />" +
          "      <Werttyp =  "Text">" + titleFilter + "</Wert>" +
          "    </Enthält>" +
          "  </Und>";
      oQuery.Query  =
        "</Wo>";

Während der Anfangsphase der Entwicklung, Dieses wirkten groß. Jedoch, wir eingeführt Ordner in das Verzeichnis, einige Probleme zu lösen und plötzlich, Mein BDC-Farbauswahl würde nicht keine Ergebnisse zurück.. Ich verfolgt dies daran, dass der SPQuery nie zu keinem Ergebnis würde. Wir verwendeten Ordner in erster Linie um mehrere Dateien mit demselben Namen hochgeladen werden, aber mit verschiedenen Meta-Daten zu ermöglichen. Beim Hochladen der Datei, Wir erstellen Sie einen Ordner auf das Listenelement-ID basiert, und verschieben Sie dann die Datei dort (Ich schrieb über die Hier; Wir hatten gemischte Ergebnisse mit diesem Ansatz, aber im großen und ganzen, Es funktioniert gut). Der Benutzer zum Erstellen von Ordnern und in der Tat interessieren nicht, verstehen Sie nicht wirklich, dass es keine Ordner. Wir haben alle Ansichten auf der Bibliothek zum Anzeigen der Elemente ohne Rücksicht auf Ordner konfiguriert..

Ich traf dieses doppelt so die technische Umsetzung entwickelt und löste es anders bei jedem problem. Zum ersten Mal, Ich war nicht den CONTAINS-Operator in der Abfrage verwenden.. Ohne ein CONTAINS-operator, Ich konnte das Problem lösen, indem Sie die Ansicht auf das SPQuery-Konstruktor angeben. Statt mit dem Standardkonstruktor:

SPList oList = Web.Listen["Dokumente"];

SPQuery oQuery = Neu SPQuery();

Ich habe stattdessen einen Konstruktor, der eine Ansicht angegeben:

SPList oList = Web.Listen["Dokumente"];

SPQuery oQuery = Neu SPQuery(oList.Views["Alle Dokumente"]);

Dass das Problem gelöst und ich fing an, meine Ergebnisse zu erhalten.

Ich habe dann den CONTAINS-Operator in die Mischung und es brach wieder. Es stellt sich heraus, dass den CONTAINS-operator, soweit ich das beurteilen kann, funktioniert nicht mit dem Blick auf die gleiche Weise wie die eine einfachere GEQ / LEQ-Operatoren. Ich habe einige Suche und erfuhr, dass die Abfrage ViewAttributes zum "Rekursiv" gesetzt werden muss, wie in:

oQuery.ViewAttributes = "Umfang = "Recursive"";

Das löste das Problem für CONTAINS. Tatsächlich, Dies auch meine ursprünglichen Suche Problem gelöst und ich hatte die rekursive angegeben Attribut das erste Mal, Ich möchte nicht in die Frage erneut ausgeführt haben.

Die Tatsache, die dass eine Ansicht basierenden SPQuery für einige Operatoren funktioniert (GEQ/LEQ) und andere nicht (ENTHÄLT), gepaart mit der Tatsache, die KPIs scheinen nicht zu wirken überhaupt mit Ordner-haltigen Dokument Bibliotheken führt mich zu glauben, dass SPQuery einige Probleme Orthogonalität hat.

Besonderer Dank:

  • Die guten Leute auf U2U und ihre Abfragetool.
  • Michael Hoffer groß "Learning by doing" Blog-post, Kommentare und Antworten.

</Ende>

Onnieren Sie meinen Blog ab!

MOSS KPI-Fehler? Liste Anzeige auf Dokumentbibliothek mit Ordnern gebunden

UPDATE 02/29/08: Ich löste dieses Problem durch einen Ordner erstellen und dann einen Inhaltstyp auf den Ordner hat die Meta-Daten brauche ich für die KPIs zuweisen. Ich beschrieben, dass hier ein wenig ausführlicher.

Wir haben eine technische Lösung umgesetzt, wo Benutzer Dokumente in einer Dokumentbibliothek hochzuladen. Ein Ereignisempfänger erstellt ein Verzeichnis und verschiebt die Datei in diesem Verzeichnis (mit Hilfe einer Technik ähnlich, was ich über schrieb Hier). Wir haben erfolgreich navigiert, um die mögliche Probleme verursacht durch Ereignisempfänger, die hochgeladene Dateien umbenennen (vor allem, weil Benutzer nie ihr Dokument durch Klicken auf "neu starten" aber stattdessen erstellen Sie die Dokumentation lokal und dann hochladen).

Die Meta-Daten für diese Dokumente beinhaltet einen ja/keine Websitespalte namens "Urgent" und eine andere Websitespalte namens "Status". Wir brauchen eine Geschäftsanforderung zu erfüllen, die den Prozentsatz der "Urgent zeigt" Dokumente mit dem Status "Pending" ist.

Dies ist in der Regel einfach zu tun und beschriebenen etwas sehr viel auf der SharePoint-Beagle mit vielen der Screenshots, wenn Sie interessiert sind.

In aller Kürze, Ich habe Folgendes:

  • Erstellen Sie eine Ansicht auf die Doc-Bibliothek namens "Pending".
  • Konfigurieren Sie die Ansicht, um die Ordnerstruktur ignorieren.
  • Erstellen einer KPI-Liste.
  • Erstellen Sie einen Indikator in der Liste, die auf die Doc-Lib und dass zeigt "Pending" Ansicht.

Das funktioniert einfach nicht. Der KPI zeigt mein Ziel (zB. fünf dringende Dokumente) aber zeigt immer die tatsächliche Anzahl der urgent-Dokumente als 0 (null). Paradoxerweise, Wenn Sie einen zu den Details Drilldown, Es zeigt die fünf dringende Dokumente in der Liste. Ich habe ein sehr einfaches Szenario mit zwei Dokumente, ein in einen Ordner und eine nicht. Hier ist der Screenshot:

Bild

Der obige Screenshot zeigt deutlich gibt es zwei Dokumente in der Ansicht jedoch den Wert"" ist eine. Die CamlSchema"" leeres Dokument-Id ist im Root-Ordner und das andere ist in einen Ordner namens "84".

Es scheint mir, dass, obwohl Sie eine Ansicht angeben, der KPI nicht zu Ehren der "alle Elemente ohne Ordner anzeigen" einstellen und stattdessen, beschränkt sich auf den Stammordner.

Wenn ich mich irre, Bitte schickt mir eine Mail oder einen Kommentar hinterlassen.

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags:

SPD Workflow “Sammeln von Daten von einem Benutzer”: Ändern der generierten Vorgang: Maske

Ich arbeite an einem Projekt, die fünf verschiedenen SharePoint Designer Workflows verwendet, einige Zulassungen Dokument behandeln. SPD stellt die "Sammeln von Daten von einem Benutzer" Aktion so, dass wir den Benutzer für verschiedene Bits von Informationen auffordern können, z. B., ob sie es genehmigen, einige Kommentare und vielleicht fragen, was sie zum Abendessen die andere Nacht hatte.

Die Formen sind vollkommen funktionsfähig. Sie sind an einer Aufgabenliste als Inhaltstyp gebunden.. Sie sind 100% systemgenerierte. Dies ist ihre Stärke und Schwäche. Wenn wir mit dem Standardformular leben können, dann sind wir gut zu gehen. Jedoch, Wir haben nicht zu viel Steuern wie SPD Form erstellt. Wenn wir nicht das Standardverhalten wie, Wir müssen zu verschiedenen Tricks, um es zu greifen (zum Beispiel, Festlegen der Priorität einer Aufgabe).

Ich brauchte, um einen Link auf diese Aufgabe-Formen bereitzustellen, die die Eigenschaften der Ansicht geöffnet (DispForm.ASXP) des zugehörigen Elements"" in einem neuen Fenster. Dies bietet ein-Klick-Zugriff auf die Meta-Daten des entsprechenden Elements. Dies ist, was ich meine:

Bild

Zum Glück, Wir können dies und es ist nicht sehr schwer. Im großen und ganzen, Starte SPD, Navigieren Sie zu dem Verzeichnis, das die Workflowdateien Häuser und öffnen Sie die ASPX-Datei, die Sie ändern möchten.. Dies sind nur klassische XSL Transform Anweisungen und wenn Sie mit itemstyle.xsl, über mucked habe, Suche oder anderen XSL-Szenarien, Das wird leicht für Sie sein. Tatsächlich, Ich fand es im Allgemeinen einfacher, da das generierte Formular etwas leichter im Vergleich zu einem Webpart Suche Folgen ist (oder die Alptraum CWQP).

Natürlich, Es ist eine große Falle. Workflow-Editor von der SPD erwartet Vollzugriff auf die Datei. Sie verändern, SPD wird gerne Ihre Änderungen geben überschreiben das Recht der Umstände festgelegt. Ich habe zwei schnelle Tests um zu sehen, wie schlimm diese bekommen könnte. Beide setzen voraus, dass Sie einen gültigen SPD Workflow gefertigt habe, der die "Sammeln von Daten von einem Benutzer verwendet" Schritt.

Test 1:

  • Ändern Sie die ASPX-Datei von hand.
  • Testen Sie es (Stellen Sie sicher, dass die Änderungen ordnungsgemäß gespeichert wurden und nicht nichts brechen).
  • Öffnen Sie den Workflow und fügen eine unabhängige Aktion hinzu (wie "Log Geschichte").
  • Speichern Sie den workflow.

Ergebnis: In diesem Fall, SPD nicht die Form neu zu erstellen.

Test 2:

  • Das gleiche wie #1 außer direkt ändern Sie die "Sammeln von Daten von einem Benutzer" Aktion.

Ergebnis: Dies erstellt das Formular von Grund auf neu, überschreibt Ihre Änderungen.

Abschliessende Hinweise:

  • Mindestens zwei SPD-Aktionen erstellen Formulare wie dieses: "Daten von einem Benutzer sammeln" und "Weisen Element zu tun". Beide dieser Aktionen’ Formulare können manuell geändert werden.
  • Ich konnte meinen Link zu dispform.aspx weil erzeugen, in diesem Fall, das Verknüpfen-Element hat immer seine ID in dem entsprechenden Punkt URL eingebettet. Ich konnte es zu extrahieren und erstellen Sie anschließend eine <ein href> auf der Grundlage von die Einklick Meta-Daten-Access-Funktion bereitgestellt.. Es ist unwahrscheinlich, dass Ihre URL dieser Regel folgt. Möglicherweise gibt es andere Möglichkeiten die Kennung des zugehörigen Elements aber ich habe nicht die Brücke überqueren, also ich weiß nicht, ob auf die andere Seite der Kluft Ruft.
  • Ich habe nicht untersuchen, aber ich wäre nicht überrascht, wenn es eine Art von Vorlage-Datei in gibt der 12 Bienenkorb, die ich ändern könnte, um zu beeinflussen, wie die SPD Standardformulare generiert (wie wir Sie Benachrichtigungsvorlagen ändern können).

</Ende>

Onnieren Sie meinen Blog ab!

Technorati Tags: ,

Sind “Unbekannter Fehler” Nachrichten wirklich besser als einen Stack-Trace?

Ich las von Madhur Blog-Post zum Aktivieren Sie Stapel Ablaufverfolgung zeigt und nun frage ich mich: Warum wir nicht immer zeigen einen Stack-trace?

Wer kam mit dieser Regel und warum wir es folgen?

Endanwender werden wissen, dass etwas nicht stimmt in jedem Fall. Mindestens mit einen Stack-Trace, Sie können die Steuerelement-Printscreen drücken., Kopieren/Einfügen in eine e-Mail und senden sie es an. Dass würde deutlich verringern, Zeit und Aufwand benötigt, um das Problem zu lösen.

</Ende>

Technorati Tags:

Sonntag (Peinlich) Lustig: “Mein Name ist Paul Galvin”

Eine Reihe von Jahren, Mein Chef hat mich gebeten, einige Nutzer auf ein Produkt namens Ergebnisse trainieren. Ergebnisse ist ein Endbenutzer reporting-tool. Es ist etwa analog zu SQL Server Reporting Services oder Crystal. Zum Zeitpunkt, Es wurde entwickelt, um auf grünen Röhren ausgeführt (zB. Wyse 50 Terminal) verbunden mit einem Unix-Rechner per telnet.

Mein Standard Antwort auf jede Frage, die mit beginnt "können Sie … " "Ja" und das ist, wo der Ärger begann.

Der Kunde war ein Chemieunternehmen, in Süd-Kalifornien und hatte gerade eine große ERP-Implementierung basierend auf eingewickelt Die QAD MFG/PRO. Der Umsetzungsplan fordert jetzt Training macht Anwender das Produkt Ergebnisse.

Ich war kein großer Benutzer dieses Werkzeugs und hatte sicherlich noch nie jemand vor ausgebildet. Jedoch, Ich hatte eine Reihe von anderen Schulungen durchgeführt und war schnell auf den Beinen, So war ich nicht allzu besorgt. Dennis, der echte Vollzeit Ergebnisse-Ausbilder, hatte mir seine Schulungsunterlagen gegeben. Rückblick auf es jetzt, Es ist wirklich ziemlich absurd. Ich wusste nicht, das Produkt gut, hatte nie formell darauf ausgebildet und sicherlich nie gelehrt hatte, es. Was habe ich training jemand drauf?

Dinge zu komplizieren, logistisch, Ich wurde gebeten zu gehen und jemand in Chicago im Rahmen eines vor dem Verkauf Engagements auf dem Weg zu erfüllen. Der Plan war, aus New Jersey fliegen, Geh nach Chicago, eine Stunde lang mit Aussicht auf treffen und dann weiter nach California.

Gut, Ich habe nach Chicago und der Verkäufe Kerl in meinem Team hatte einige Fehler gemacht und noch nie bestätigt das Treffen. Also, Ich auftauchte und die Aussicht war nicht da. Prima. Ich packen und verlassen und weiter nach CA. Irgendwo während dieses Prozesses, Ich feststellen, dass der Client zu lernen, ist weniger als 24 Stunden vor meiner Ankunft, dass "Paul Galvin" lehrt die Klasse, nicht Dennis. Der Kunde liebt Dennis. Sie wollen wissen, "Wer diese Person Paul Galvin ist?" "Warum sollten wir ihm vertrauen?" "Warum sollten wir für ihn bezahlen?" Dennis offensichtlich nicht abonnieren Sie meinen "Geben Sie früh schlechte Nachrichten" Philosophie. Prima.

Ich komme am Flughafen und irgendwie unglaublich dumm, Ich habe mein Gepäck überprüft.. Ich habe es nach LAX, aber mein Gepäck nicht. Für mich, Verlust von Gepäck ist ein viel wie durchlaufen die sieben Stadien der Trauer. Schließlich mache ich es zum hotel, mit kein Gepäck, müde, hungrig und tragen meine (jetzt, sehr faltig) Business-Anzug. Es dauert eine lange Zeit von Newark Reisen — nach O' Hare — an einen client — zurück nach O' Hare — und schließlich nach LAX.

Schließlich befinde ich mich im Hotelzimmer sitzen, kaute auf Snickers bar, erschöpft und versuchen, die Energie, um durch das Training Material erneut zu scannen, so dass ich nicht wie eine komplette Ass vor der Klasse aussehen zu Trommeln. Dies war ein bisschen ein Tiefpunkt für mich zur Zeit.

Ich wachte am nächsten Tag, habe mein Bestes zu glätten, mein Anzug, so dass ich nicht aussehen wie Willy Loman einen schlechten Tag und führte sie an den Client. Wie so oft der Fall ist, Sie war persönlich nett, höflich und sehr angenehm. Dies stand in krassem Gegensatz zu ihr sehr böse e-Mails/Voicemails vom Vortag. Sie führt mich über 3 Meilen durch Gebäude nach Gebäude um ein aufgeschnittener off Bereich in einem riesigen chemischen Lager wo wir die Klasse für die nächsten drei Tage führen. Die 15 oder 20 Studenten bauen langsam, die meisten ihnen noch erwartet, Dennis.

Ich beginnen immer meine Schulungen durch die Einführung von selbst, einige Hintergrundinformationen zu geben und meine Kontaktinformationen auf der weißen Tafel schreiben. Wie ich sage, "Guten Morgen, Mein Name ist Paul Galvin", Ich schreibe meinen Namen, e-Mail und Telefon Nummer oben auf der weißen Tafel in großen Buchstaben so, dass jeder es klar sehen kann. Ich wende mich die Tatsache, dass ich Dennis vertrete und ich ihnen versichere, dass ich ein geeigneter Ersatz bin, usw.. Ich habe alle mir kurz sagen, ihren Namen und was sie aus der Klasse zu erreichen, sodass ich Dinge auf ihre speziellen Anforderungen anpassen können, wie ich entlang gehen wollen. Die üblichen Sachen.

Wir, das einpacken und starten Sie den Projektor. Ich gehe in meine Kontaktinfos zu löschen und … Ich hatte es in dauerhafte Markierung geschrieben.. Ich war so verlegen. In meinem inneren Auge, Es sah so aus: Gibt es diese "Paul Galvin" Person, Last-Minute-Ersatz für unsere geliebten Dennis. Er ist ein zerknittertes Business-Anzug und unrasiert tragen. Er hat gerade seinen Namen riesigen Buchstaben auf unsere weiße Tafel in geschrieben. permanent marker. Was für ein Anblick!

Alles endete glücklich, jedoch. Dies war ein Chemieunternehmen, Letztendlich. A grizzled erfahrener Mitarbeiter zog etwas aus dem Regal und, wahrscheinlich im EPA-Richtlinien, deaktiviert das board. Ich es geschafft, bleiben 1/2 Tag vor der Klasse während des Kurses und sie gaben mir einen guten Überblick am Ende. Dies festigte meine "Pinch hitter" Ruf in meinem Unternehmen. Mein Gepäck kam am ersten Tag, So war ich viel mehr vorzeigbar Tage zwei und drei.

Als ich das rote Auge nach Hause nahm, Ich war "Lessons learned" betrachten.. Es gab viel zu betrachten. Kommunikation ist der Schlüssel. Änderungen im Plan Kunden empfehlen. Überprüfen Sie nicht immer Ihr Gepäck am Flughafen, ob Sie es vielleicht vermeiden können. Bringen Sie Ersatzteile "stuff" für den Fall, dass Sie überprüfen Sie Ihr Gepäck und es macht es nicht. Ich denke, die wichtigste Lektion habe, die ich gelernt, jedoch, war dies: Testen Sie immer eine Markierung in der unteren linken Ecke des eine weiße Tafel vor dem Schreiben, in riesigen Buchstaben, "Paul Galvin".

</Ende>

Technorati Tags: ,

Perspektiven: SharePoint-vs. der Large HadronCollider

Aufgrund einiger Spinner, die United Airlines Flüge habe ich in der Mitte der 90er Jahre, Ich landete irgendwie mit einem Angebot "unbenutzte Meilen umwandeln" in rund einem Dutzend kostenlose Magazin-Abonnements. Das ist, wie ich am Ende Scientific American Magazin abonnieren.

Als software / Menschen beraten, Wir begegnen vielen schwierigen geschäftlichen Anforderungen in unserer Karriere. Die meisten der Zeit, Wir lieben diese Anforderungen und in der Tat, Es ist wahrscheinlich, warum wir denken, dass diese Karriere die besten der Welt. Ich frage mich gelegentlich genau das, was in der Welt ich mit mir selbst getan haben würde, wenn ich zu einem anderen Zeitpunkt in der Geschichte geboren worden. Wie schrecklich wäre es zu verpassen, die Art der Arbeit erhalte ich jetzt tun, zu dieser Zeit und Ort der Weltgeschichte? Ich denke: ziemlich schrecklich.

In den Jahren, einige der Anforderungen konfrontiert habe wurden extrem schwierig zu erfüllen. Komplexe SharePoint-Zeug, Aufbau Web Frameworks basierend auf Web-Friendly Technology Verarbeitung, komplexe BizTalk-Orchestrierungen und dergleichen. Wir können alle (Hoffentlich) stolz auf unsere Karriere zurückblicken und sagen, "Ja, Das war ein hartes zu lösen, aber am Ende ich Pwned dieser Dreckskerl!" Noch besser wäre es, noch mehr interessante und lustige Herausforderungen erwarten.

Ich persönlich denke, dass mein Lebenslauf, in dieser Hinsicht, ist ziemlich tief und ich bin ziemlich stolz darauf (Obwohl ich weiß, meine Frau wird nie verstehen, 1/20 davon). Aber diese Woche, Ich las einen Artikel über die Large HadronCollider in meinem Scientific American Magazin und hatte einen der seltenen demütigende Momente, wo ich, dass trotz meiner "Riese erkannte," Status in gewissen Kreisen oder wie tief ich glaube, meine gut Erfahrung, in völlig unterschiedlichen Welten gibt es wahre Riesen.

Die Leute auf das LHC-Team haben einige wirklich heiklen Fragen verwalten. Betrachten Sie den Mond. Ich glaube nicht wirklich viel über dem Mond (Obwohl ich es sehr skeptisch gewesen, da habe ich gelernt, dass es die Erdrotation verlangsamt, die auf lange Sicht eine gute Sache für uns Menschen sein kann). Aber, Das LHC-Team muss sich Sorgen machen. Der LHC-Messgeräte sind so empfindlich, dass diese durch des Mondes beeinflusst werden (Earth-Rotation-Slowing-and-eventually-Killing-All-Life) Schwerkraft. Das ist ein Heck einer Anforderung erfüllen — korrekte Messungen trotz des Mondes Einmischung zu produzieren.

Ich grübelte dieser Frage, wenn ich diesen Satz zu lesen: "Die erste Ebene erhalten und Analyse von Daten aus nur eine Teilmenge der Detektor-Komponenten, von denen es vielversprechende Ereignisse basierend auf isolierten Faktoren z. B. ob herausgreifen kann wurde eine energetische Myon entdeckt fliegt raus in einem großen Winkel von der Achse des Balkens." Wirklich … ? Ich Spiele nicht in diesem Art Sandbox und nie wird.

Das nächste Mal bin ich mit einigen Freunden, Ich möchte einen Toast auf die guten Leute, die Arbeiten an dem LHC zu erhöhen, hoffen sie nicht erfolgreich wiegen das Higgs-Boson Teilchen und verfluchen den Mond. Ich schlage vor, dass Sie das gleiche tun. Es wird ziemlich der Toast sein 🙂

</Ende>

Technorati Tags: