Verwendung von Object Queries

Einführung

Für Produkteigenschaften mit Berechnung sowie Produkteigenschaften ohne Berechnung lassen sich für die Typen "Beziehung" und "Tabelle" im Feld "Object Query" Abfragen generieren. Mit diesen Abfragen kann man die Inhalte jedes beliebigen Standard- oder Custom Objects in Salesforce in der Produkteigenschaft anzeigen lassen und auswählbar machen. Die Query ist in mehrere Abschnitte unterteilt und lässt sich sich von sehr einfach bis beliebig komplex gestalten.

Bitte beachten Sie, dass bei Object Queries u.U. sehr große Datenmengen abgefragt werden und wir durch das Salesforce Row Limit eingeschränkt sind. Wir unterstützen derzeit ca. 4 Eigenschaften vom Typ Tabelle oder Relation je Produkt. Kommt es dennoch zu einer Fehlermeldung, passen Sie bitte die Filterkriterien Ihrer Object Queries an, um die Datenmenge zu reduzieren.

Zur besseren Übersicht können Sie Ihre Tabellen nach den Einträgen in den einzelnen Spalten auf- oder absteigend sortieren. Diese Sortierung wird auch für die laufende Quote-Session beibehalten.

Formatierung

Die Object Query ist als String aufgebaut. Für die Eingabe sind erlaubt API-Feldnamen, Leerzeichen, Komma, Pipe und Zeilenumbrüche. Sonstige Sonderzeichen und/oder nicht korrekte API-Feldnamen führen automatisch zu einer Fehlermeldung und verhindern das Einfügen des zugehörigen Produkts.

Syntax

ReihenfolgePrioritätFunktion
Struktur
Hinweis
Beispiel
Erläuterung
1

Pflicht

Auf dieses Objekt bezieht sich die Abfrage.

<Objektname>|

Nur ein Wert gültig

Auspraegung__c|


2Empfohlen, nicht mehr notwendig in appero quote Lightning

Auflistung sämtlicher Felder, die in der folgenden Query abgefragt werden.


<Feldname>|Komma separiertFeld1__c,Feld2__c,Feld3__c|

Sämtliche Felder die in der Abfrage ab 3 verwendet werden, müssen auch in 2 eingefügt werden. Die Felder "Id" und "Name" werden automatisch von Quote hinterlegt und müssen nicht manuell ergänzt werden.

Um die Datenmenge möglichst gering zu halten (Ladezeit) kann die Auswahl bereits an dieser Stelle durch einen Filter eingeschränkt werden, s. unten Tipps zur Verwendung.

3Optional

Kalkulation


<Feldname Kalkulation>|Nur Typ Währung oder ZahlSonderpreis__c|

Betr. Produkteigenschaften mit Berechnung.

Sofern hier ein gültiges Feld zugeordnet ist, ergibt dies bei Produktoptionen mit Berechnung den Wert für die Berechnung angewendet. Der "Wert zur Kalkulation" sf42_quotefx__SF42_calc_Value__c der Produktoption selbst wird dann ignoriert. Der in der Produkteigenschaft hinterlegte Operator (+/-/=) wird auf den Wert des hier gewählten Datensatzes angewandt.

4Optional

Produktfilter

<Feldname Produktfilter>|Relation zu ProduktProduct2Id|Sofern dem der Objekt-Query zugrundeliegenden Objekt eine Relation zum Standardobjekt Produkt zugeordnet ist, filtern sich die in der Produktoption auswählbaren Datensätze auf die Salesforce Id des Produkts der Angebotsposition. Dadurch lässt sich eine Auswahl zielgerichtet auf ein Produkt einschränken.
5Optional

Filter


<Feldname Filter>|Nur Typ Checkbox, AuswahllisteAuswahl__c,aktiv__c|

Variante 1:

einfache Feldnamen zur Anzeige
Diese Option gilt nur für den Typ "Tabelle". Sofern in diesem Abschnitt Felder angegeben sind, werden sie in der Produktoption über der Tabelle angezeigt und ermöglichen eine Filterung der auswählbaren Datensätze. Aktuell werden aber nur Felder vom Feldtyp Checkbox oder Auswahlliste unterstützt.
Für den Typ "Beziehung" hat diese Option keine Auswirkung.

Variante 2:

  • Es gibt die Möglichkeit einen Filter auf Felder an den Objekten Produkt, Account, Kontakt, Opportunity zu setzen, wobei jeweils nur ein Objekt pro Query abgefragt werden kann

  • Die API-Name der referenzierten Felder werden in den neuen Setup-Texten productPropertyQueryAvailableFilterFields_Product/_Opportunity/_Account/_Contact hinterlegt
  • Die Filtermöglichkeiten "=", "-=", "+="  werden unterstützt, s.u. 

  • Syntax:
    [FieldNameOnQueriedObject][filter]{[ObjectToFilterName]@[fieldNameOnObjectToFilter]}

    Beispiel: ProductCode__c={Product@ProductCode}

Variante 3:

Feldnamen mit Verweis auf andere Produktoptionen vom Typ "Tabelle" / "Beziehung"
Verwendung: siehe unten Abhängige Filter zu anderen Produktoptionen.

6Optional

Darstellung


<Feldname Darstellung>|Komma separiertFeld1__c,(Feld3__c)|Für den Typ "Tabelle" kann hier gesteuert werden, welche der in 2 hinterlegten Felder tatsächlich in der tabellarischen Darstellung ausgegeben werden sollen. Wenn diese Option leer bleibt, werden automatisch alle Felder aus 2 in der Tabelle angezeigt. Wenn man den Feldnamen in Klammern schreibt z.B. "(Feld3__c)" dann wird die Spalte in der Tabelle zwar im Editor ausgegeben, im fertigen Angebotsdokument jedoch ausgeblendet.

Für den Typ "Relation" reicht ein einziges Feld. Wenn diese Option leer bleibt, wird automatisch das Feld "Name" in der Auswahlliste angezeigt. Feldnamen in Klammern werden ignoriert.
7OptionalAccount<Feldname Account>|Relation zu AccountAccount__c|Sofern hier eine Relation zum Standardobjekt Account zugeordnet ist, filtern sich die in der Produktoption auswählbaren Datensätze auf die Salesforce Id des Accounts, der an der zugehörigen Opportunity hinterlegt ist. Dadurch lässt sich eine Auswahl zielgerichtet auf den verwendeten Account einschränken.
8Optional

Eigene Labels



<Eigene Labels Darstellung>|Felder aus DarstellungFeld1__c=Titel|Für den Typ "Tabelle" können an dieser Stelle eigene Spaltenüberschriften definiert werden. Gerade wenn die Standardbezeichnungen der Felder zu lang sind, oder eine Übersetzung notwendig ist, kann diese Option sehr hilfreich sein. Sofern diese Option leer bleibt, werden automatisch die Feldbezeichnungen aus Salesforce verwendet
9Optionalload on demand<load on demand>|"true" oder "false"false|

Betrifft nur appero quote Classic:

Sofern dieser Wert leer ist, oder mit "false" hinterlegt, werden die benötigten Datensätze aus dieser Object Query mit Start des Angebotseditors geladen. Mit der Option "true" kann man gerade bei hohen Datenmengen die Ladezeit wesentlich verkürzen, weil dann die Daten erst nachgeladen werden, sobald die Produkteigenschaft angezeigt wird.

WICHTIG: Aktuell lässt sich die Option nur sinnvoll anwenden, wenn in der Objekt Query der "Produktfilter" oder die "Publikation" zugeordnet ist.

10MediaVeloxPublikation<Feldname Publikation>Relation zu PublikationPublikation__c,

Diese Option kann nur dann verwendet werden, wenn MediaVelox installiert ist.

Sofern die Option gesetzt ist, filtern sich die angezeigten Datensätze auf die Publikation die aus dem ausgewählten Produkt resultiert (am Produkt muss die Relation zur Platzierung befüllt sein).

11MediaVeloxPublikationsgruppe<Feldname Publikationsgruppe>|Relation zu PublikationsgruppePublikationsgruppe__c|

Diese Option kann nur dann verwendet werden, wenn MediaVelox installiert ist.

Sofern die Option gesetzt ist, filtern sich die angezeigten Datensätze zusätzlich zur Publikation auch auf die Publikationsgruppe.

12MediaVeloxPlatzierung<Feldname Platzierung>|Relation zu PlatzierungPlatzierung__c|

Diese Option kann nur dann verwendet werden, wenn MediaVelox installiert ist.

Sofern die Option gesetzt ist, filtern sich die angezeigten Datensätze zusätzlich auf die Platzierung die aus dem ausgewählten Produkt resultiert (am Produkt muss die Relation zur Platzierung hinterlegt sein).

13MediaVeloxAnzeigenformat<Feldname Anzeigenformat>Relation zu AnzeigeformatFormat__c

Diese Option kann nur dann verwendet werden, wenn MediaVelox installiert ist.

Sofern die Option gesetzt ist, filtern sich die angezeigten Datensätze zusätzlich auf das Anzeigenformat welches aus dem ausgewählten Produkt resultiert (am Produkt muss die Relation zum Anzeigenformat hinterlegt sein)

Das zweite Element der Objektabfrage, die Auflistung aller in der Abfrage verwendeten Felder, kann für appero quote Lightning entfallen.

Eine derart reduzierte Objektabfrage erzeugt allerdings eine Fehlermeldung bei der Verwendung von appero quote Classic.



Tipps zur Verwendung

Um die Leistung der Tabelle zu verbessern, werden im Produkt-Detail-Dialog nur noch 30 Datensätze gleichzeitig gerendert. Enthält die Tabelle mehr als 30 Datensätze, wird der Benutzer über einen Hinweis aufgefordert, die Suche zu verfeinern.

Minimumkonfiguration

Wenn eine Object Query nur aus dem Objektnamen besteht, werden automatisch die Felder "Id" und "Name" geladen und das Feld "Name" zur Anzeige verwendet. Gerade bei der Darstellung einfacher Objekte in Relationen, kann das sehr hilfreich sein.

Nicht benötigte Optionen

Natürlich kann es vorkommen, dass man in der Object Query manche Optionen nicht benötigt, in diesem Fall reicht es den Wert zwischen beiden Pipes einfach leer zu lassen, Beispiel "||". Da es manchmal auch viele Pipes sein können, lohnt sich das "Mitzählen". Es empfiehlt sich, je Pipe eine neue Zeile zu beginnen, um eine bessere Übersichtlichkeit zu gewährleisten.

Datenmengen optimieren

Oftmals kann es Filterkriterien geben, die ggf. schon beim Laden der Daten sinnvoll wären um die Datenmenge und damit die Ladezeit einer Produkteigenschaft zu reduzieren. Das kann ein Status sein, oder auch ein Recordtype. Dies lässt sich sehr einfach realisieren, wenn man bei Punkt 2 "Feldnamen" schon einen Filter einsetzt. In dem Beispiel StageName='Prospecting' würden schon beim Laden der Daten nur alle Opportunity-Datensätze geladen werden, die mit dem gefilterten Wert übereinstimmen. Generell gilt, dass eine Tabelle nur max. 200 Datensätze lädt, für genauere Ergebnisse muß die Tabellenanzeige ggf. im Editor über das Suchfeld eingeschränkt werden.

Wichtig: Filter auf den Feldtyp String und Id müssen in appero quote Classic immer mit einfachen Anführungszeichen umschlossen sein. Filter auf Datumswerte und Zahlen benötigen diese nicht.

Anzeige im Angebotseditor

Die ermittelten Werte werden im Produkt-Detail-Dialog in Form einer Dropdown-Liste (Typ Beziehung) oder als Tabelle abgefragt:

Abhängige Filter zu anderen Produktoptionen

Häufig besteht die Anforderung, dass ein selektierter Wert einer Produktoption vom Typ "Table" / "Relation" als Filterkriterium für eine andere Object Query angewendet werden soll. Dies lässt sich über den Abschnitt 5 (Filter) ergänzen.

Beispiel

Die erste Produkteigenschaft bietet über die Object Query eine tabellarische Darstellung der verfügbaren Accounts:

Account|Name,Id

In der zweiten Abfrage sollen nur diejenigen Kontakte angezeigt werden, die zum in der ersten Abfrage ermittelten Account gehören. Hierzu wird unter 5. auf die ID der ersten Query und das zu referenzierende Feld, in diesem Fall die AccountID verwiesen.

Contact|Name,Id,AccountId|||AccountId={Id:property1Id}

Konfiguration

Es gibt vier verschieden Möglichkeiten, den Filter zu setzen, eindeutig, ausschließend, ergänzend und als Vorbelegung. Eine Übersicht der verschiedenen Funktionen und die zugehörige Syntax finden Sie hier:


Verwendung
Syntax
Beispiel
Erklärung
1Dynamischer eindeutiger Filter

=

Beispiel Abschnitt 5:

<Feldname>={<Feldname Object Query weiterer Produktoption>:<Salesforce Id der weiteren Produktoption>}

Id={PreisRubrik__c:a0q9E000001Zq5WQAS}

Die Option ermittelt den exakten Feldwert der verknüpften Produktoption und nutzt diesen als Filterwert für das angegebene Feld der eigenen Object Query. Es werden also nur Datensätze angezeigt, die dem exakten Filterkriterium entsprechen

2Dynamischer ausschliessender Filter

-=

Beispiel Abschnitt 5:

<Feldname>-={<Feldname Object Query weiterer Produktoption>:<Salesforce Id der weiteren Produktoption>}

Id-={PreisRubrik__c:a0q9E000001Zq5WQAS}

Die Option ermittelt den exakten Feldwert der verknüpften Produktopionen, nutzt diesen jedoch als eindeutigen Filter auch im Vergleich von exakten leeren Werten

3Dynamischer ergänzender Filter

+=

Beispiel Abschnitt 5:

<Feldname>+={<Feldname Object Query weiterer Produktoption>:<Salesforce Id der weiteren Produktoption>}

Id+={PreisRubrik__c:a0q9E000001Zq5WQAS}

Die Option ermittelt den exakten Feldwert der verknüpften Produktoptionen, nutzt diesen jedoch als Zusatzfilter. Damit werden Datensätze mit leerem Wert auf das gefilterte Feld dennoch angezeigt.

4Dynamische Vorbelegung

:

Beispiel Abschnitt 5:

<Feldname>:{<Feldname Object Query weiterer Produktoption>:<Salesforce Id der weiteren Produktoption>}

Id:{PreisRubrik__c:a0q9E000001Zq5WQAS}

Die Option nutzt den exakten Feldwert lediglich zur Vorbelegung des ersten gefundenen Datensatzes in der Liste, ohne jedoch die Datensatzanzahl einzuschränken.

Vorbelegung einer weiteren Produkteigenschaft 

Bei einigen Produkteigenschaften können Sie über das Feld “Vorbelegter Wert”/ sf42_quotefx__SF42_PreassignedValue__c über eine Variable auf den selektierten Wert einer anderen Produkteigenschaft vom Typ Tabelle/Relation zugreifen und damit Ihre Produkteigenschaft dynamisch vorbelegen. Möglich ist dies für die Eigenschaftstypen:

  • Text/ Textbereich
  • Dropdown/Multipicklist
  • Datum
  • Zahl/ Basismenge

Beispielkonfiguration

Produkteigenschaft 1, Typ: Tabelle
Id: xyz
Query: Account|Id,Name,Industry

Produkteigenschaft 2,  Typ: Text
Id: abc
Vorbelegter Wert: {xyz:Industry}

Ergebnis: Die zweite Produkteigenschaft vom Typ Text ist mit dem in der ersten Tabelle selektieren Wert in der Spalte "Industry" vorbelegt.