Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:im_modifynodecharacs_ad

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

engine:procedures:im_modifynodecharacs_ad [11.01.2016 ] (aktuell)
Zeile 1: Zeile 1:
 +===== im_ModifyNodeCharacs_Ad =====
 +
 +Legt ein neues Merkmal an bzw. modifiziert es. Gelöscht werden können natürlich nur Merkmale, die explizit als löschbar ("​Deletable = 1") angegeben sind.\\ ​
 +
 +Alle Merkmale, die über diese Prozedur angelegt werden, sind löschbar, d.h. "​Deletable"​ wird automatisch auf "​1"​ gesetzt.\\ ​
 +
 +Das Löschen eines Merkmals schlägt fehl, wenn Eigenschaften zu diesem Merkmal in "​NodeProperties"​ vorhanden sind. Das gilt auch, wenn die MerkmalID eine Eigenschaft zu einem rekursiven Merkmal ist, die von einem Element verwendet wird.\\ Ab 5.0.2 werden vor dem Löschen evtl. vorhandene Werte in "​NodeCharacteristicValues"​ (z.B. weil für das Merkmal "​PredefinedValues = 1" konfiguriert war) entfernt (sofern nicht in "​NodeProperties"​ verwendet), um einen "​trigger"​-Fehler zu vermeiden.\\ ​
 +
 +Wenn versucht wird, ein neues Merkmal mit einem "​Ja-Nein"​-Basisfeldtyp anzulegen, wird in jedem Fall "​PredefinedValues"​ auf "​1"​ gesetzt und dafür gesorgt, daß zwei Eigenschaften "​0"​ und "​1"​ zu dem neuen Merkmal angelegt werden.\\ ​
 +
 +Eine Änderung des "​Feld-Typs"​ (-> Parameter "​FieldTypeID"​) ist nur möglich, wenn ...
 +  * der Basis-Feldtyp gleich geblieben ist und "​Length"​ und/oder "​Precision"​ nicht verkürzt werden bzw. falls keine Eigenschaften existieren, die nicht der neuen Länge und Genauigkeit entsprechen oder wenn ...
 +  * vom Basis-Feldtyp "​Zahl"​ bzw. "​Datum"​ auf den Basis-Feldtyp "​Text"​ gewechselt wird und alle Eigenschaften von der Länge her
 +in einen "​string"​ konvertiert werden können (d.h. die maximal erlaubte Anzahl Zeichen beim neuen Feldtyp von bestehenden\\ Daten nicht überschritten wird)\\ ​
 +
 +
 +
 +Anmerkungen:​\\ ​
 +
 +1. Es ist derzeit nicht möglich, die Einstellung "​Recursive"​ auf "​1"​ zu setzen oder zu ändern ("​Recursive"​ wird quasi nicht beachtet; wenn beim Anlegen einens neuen Merkmals "​1"​ übergeben wird, gibt die Prozedur "​-500"​ zurück !).\\ 2. Die "​UnitID"​ eines bestehenden Merkmals kann nicht geändert werden !\\ 3. Die "​PredefinedValues"​-Einstellung kann problemlos von "​1"​ auf "​0"​ geändert werden. Umgekehrt ist das nur dann erlaubt, wenn zum Merkmal nicht schon mehr als 100 Werte existieren. Dieses Limit kann aber durch den "​Settings"​-Eintrag "​MaxNumberOfValuesAllowedForPredefinedConfigChange"​ erhöht werden (auf maximal 32767).\\ 4. Wird bei Neu-Anlage eines Merkmals als Einheit eine "​Währung"​ ausgewählt,​ muß zu dieser Einheit unbedingt ein "​UnitSymbol"​ hinterlegt sein (sonst gibt es den Fehler "​-531"​) !\\ 5. Die IDs "<= 50" sind für interne Zwecke reserviert. Neue Merkmale haben daher automatisch eine ID "> 50".\\ 6. Bei internen Merkmalen (IDs "<= 50") kann sowohl die Bezeichnung als auch der "​Feld-Typ"​ (unter den oben stehenden Bedingungen) geändert werden, was an der internen Funktionalität,​ die an das Merkmals geknüpft wurde, aber nichts ändert.\\ => Daher sind diese Änderungen mit Vorsicht zu geniessen ! Insbesondere sollte eine neue Bezeichnung nicht sinnentfremdend sein !\\ 
 +|HTTP-Method|POST |
 +|HTTP-Auth|Optional |
 +|Alias|im_ModifyNodeCharacteristics_Ad |
 +|Tags|{{tag>​[im Modify Node Characteristics Ad]}}|
 +|Engine-Kategorie|configurations |
 +|Engine-Typ|Daten-Änderung |
 +|Letzte Aktualisierung|7.0.7 (2015-01-29)|
 +
 +==== Parameter ====
 +
 +|__CharacteristicDescription__| |Bezeichnung des Merkmals\\ |varchar(100)|3.5.0|
 +|__ValueLanguageID__| |ID einer Sprache, in der die Eigenschaften dieses Merkmals sein sollen (0 = sprachunabhängig)\\ |tinyint|3.5.0|
 +|__UnitID__| |ID einer Einheit für die Eigenschaften zu diesem Merkmal\\ |tinyint|3.5.0|
 +|PredefinedValues|0 |"​0"​ : Zu diesem Merkmal können beliebige Werte gespeichert werden\\ "​1"​ : Es kann nur aus einer Liste vordefinierter Werte gewählt werden\\ |bit|3.5.0|
 +|SortNo|1 |Bestimmt die Reihenfolge des Merkmals innerhalb aller Merkmale\\ |smallint|3.5.0|
 +|__FieldTypeID__| |ID des Datentyps; legt das Repräsentierungsformat der gespeicherten Werte fest (siehe auch [[dstoreproc>​mi_GetFieldTypes_Ad]])\\ |tinyint|3.5.0|
 +|Recursive|0 |"​0"​ : Eigenschaften zu diesem Merkmal sind direkt als Eigenschaften zu interpretieren\\ "​1"​ : Die Eigenschaften zu diesem Merkmal sind "​NodeCharacteristicID"​s,​ d.h. die "​eigentliche"​ Eigenschaft bekommt man nur durch eine "​rekursive Auswertung"​\\ |bit|3.5.0|
 +|DeleteCharacteristic|0 |"​0"​ : Merkmal soll angelegt oder geändert werden\\ "​1"​ : Merkmal soll gelöscht werden\\ |bit|3.5.0|
 +|KeepPropertiesHistoryInHours|NULL |Wie lange Daten von einmal geänderten Eigenschaften zum Merkmal (mindestens) gespeichert werden sollen. Bei "​NULL"​ greift die Einstellung "​DefaultKeepPropertiesHistoryInHoursForNodeCharacs"​ aus "​Settings",​ "​-1"​ bedeutet "nie löschen"​.\\ |integer|3.5.20|
 +==== Rückgabe ====
 +
 +Die Prozedur hat keine Rückgaben.
 +==== Output-Parameter ====
 +
 +|NodeCharacteristicID|ID des Merkmals, welches geändert oder gelöscht werden soll - "​NULL"​ falls ein neues Merkmal angelegt werden soll. In letzterem Fall kann man die neue ID diesem Parameter (da gleichzeitig ein "​Ausgabeparameter"​) entnehmen.|
 +==== Mögliche Return-Codes ====
 +
 +^Code ^Beschreibung ^Quelle ((direkt meint "von der Prozedur selber"​ und indirekt meint "von intern aufgerufenen Unterprozeduren"​)) ^
 +|-621|Fehlender oder falscher Eintrag in PersonTypeSettings|nur indirekt|
 +|-599|Lizenz ist ungültig oder abgelaufen|nur indirekt|
 +|-569|Der Benutzer hat kein Ausführungsrecht für die Prozedur|nur indirekt|
 +|-567|Die Prozedur darf z. Zt. nicht ausgeführt werden|nur indirekt|
 +|-566|Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden|nur indirekt|
 +|-550|Fehlender oder falscher Eintrag in Settings|nur indirekt|
 +|-540|Falsches Format|nur indirekt|
 +|-535|Das Datum liegt nicht in der Vergangenheit|nur indirekt|
 +|-532|Ungültiger Feldtyp|nur direkt|
 +|-531|Der Wert "​UnitSymbol"​ darf bei Einheiten der Kategorie "​Währung"​ NICHT "​NULL"​ sein|nur direkt|
 +|-530|Der Wert ist nicht konvertierbar|nur indirekt|
 +|-510|Der Benutzer ist nicht registriert|nur indirekt|
 +|-504|Es ist ein Problem aufgetreten,​ das nicht gelöst werden kann, Prozedur wird daher abgebrochen|nur indirekt|
 +|-502|Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)|nur indirekt|
 +|-500|Falsche Parameter|direkt und indirekt|
 +|-285|Der Benutzer hat keine Berechtigung,​ vergangene Eigenschaften zu diesem(n) Merkmal(en) zu ändern|nur indirekt|
 +|-284|Der Benutzer hat keine Berechtigung,​ Eigenschaften zu diesem(n) Merkmal(en) zu modifizieren|nur indirekt|
 +|-282|Das Merkmal darf nicht gelöscht werden|nur direkt|
 +|-281|Das Merkmal kann nicht geändert oder gelöscht werden, da es bereits zugewiesene Eigenschaften gibt|nur direkt|
 +|-279|Die PredefinedValues-Einstellung kann nicht geändert werden, da zu viele Werte existieren|nur direkt|
 +|-245|Einige Artikel-Eigenschaften sind ungültig|nur indirekt|
 +|-242|Relative Änderung nicht möglich, da es eine Eigenschaft gibt, deren Gültigkeit in d. Zukunft beginnt|nur indirekt|
 +|-241|Änderung(en) der Eigenschaft(en) konnte(n) aufgrund paralleler Änderungen nicht durchgeführt werden|nur indirekt|
 +==== XML-Schema ====
 +
 +Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema [[http://​resources.dstore.de/​xsd/​webservice_SmartGate/​Response/​EngineProcedure_v1_0.xsd|Response/​EngineProcedure_v1_0.xsd]] validiert.
 +==== Historie ====
 +
 +|7.0.7 |2015-01-29|Interne Änderung : Datentyp-Erweiterung des "​ReferenceKey"​ [für "​_mi_StartProcedure"​-Aufruf]\\ ​ |
 +|7.0.4 |2014-03-19|Neues Verhalten bei Angabe von "​NULL"​ für "​KeepPropertiesHistoryInHours"​ [=> Implementierung des neuen "​Settings"​-\\ Eintrags "​DefaultKeepPropertiesHistoryInHoursForNodeCharacs"​],​ s. Ticket #​3560\\ ​ |
 +|7.0.2 |2013-08-29|1. Fehler bzgl. der letzten Erweiterung ("​FieldType"​ kann auch "Text - 150 Zeichen"​ etc. sein) : sie war nur für die NEU-Anlage implementiert\\ 2. Für spezielle Merkmale zwecks Artikel-Import gelten neue Beschränkungen\\ ​ |
 +|7.0.1 |2013-08-07|Interne Anpassungen aufgrund der neuen Tabelle "​CurrencyCharacteristicsInNetto"​ sowie der Erweiterung des Datentyps der "​Value"​-Spalte von "​NodeCharacteristicValues"​\\ ​ |
 +|7.0.0 |2013-06-04|Kleiner Doku-Fehler [verwendete Prozeduren]\\ ​ |
 +|6.5.1 |2012-11-02|Ab jetzt ist es möglich - unter Berücksichtigung des neuen "​Settings"​-Eintrags\\ "​MaxNumberOfValuesAllowedForPredefinedConfigChange"​ - die "​PredefinedValues"​-Einstellung von "​0"​ auf "​1"​ zu setzen\\ [s. Ticket #​3198]\\ ​ |
 +|6.0.3 |2011-09-07|Parameter "​NodeCharacteristicID"​ ist nun ein Ausgabeparameter\\ ​ |
 +|6.0.2 |2011-06-08|Holger Wies : Doku aktualisiert\\ ​ |
 +|6.0.0 |2010-03-26|1. Erweiterung bzgl. der Möglichkeit,​ die "​FieldTypeID"​ eines bestehenden Merkmals zu ändern\\ 2. Anpassungen des Quellcodes an den aktuellen Standard\\ ​ |
 +|5.1.2 |2006-06-26|Neuer möglicher Return-Code "​-532",​ da es ab 5.1.2 "​FieldTypes"​ mit einer "​MaxLength > 100" geben kann !\\  |
 +|5.1.0 |2006-02-08|1. Verlagerung des Codes zur Aktualisierung von "​NodeProperties"​ in einem Fall auf die neue Prozedur "​_im_ModifyNodeProperties"​\\ 2. Einige interne Änderungen\\ 3. Neuer Fehler-Code "​-531"​\\ ​ |
 +|5.0.2 |2005-04-29|Beim Löschen eines Merkmals werden ab jetzt zuvor automatisch evtl. vorhandene Werte in "​NodeCharacteristicValues"​ gelöscht [sofern nicht in "​NodeProperties"​ verwendet], da es sonst einen "​trigger"​-Fehler gibt\\ ​ |
 +|4.0.13 |2004-05-18|1. Aufruf der Prozeduren "​_mi_StartProcedure",​ "​_mi_FinishProcedure"​ und "​_mi_ChooseParamValueSeperator"​ \\ 2. Ausführen von "set transaction isolation level 1" und "set rowcount 0" zu Beginn der Prozedur\\ ​ |
 +|4.0.1 |2003-05-16|Ab jetzt wird berücksichtigt,​ daß in "​NodeProperties"​ auch Gültigkeitszeiträume in der Zukunft vorhanden sein können !\\  |
 +|3.5.20 |2002-07-22|\\ ​ |
 +|3.5.19 |2002-06-17|\\ ​ |
 +|3.5.7 |2001-05-04|\\ ​ |
 +|3.5.5 |2001-03-30|\\ ​ |
 +|3.5.3 |2001-02-11|\\ ​ |
 +|3.5.0 |2000-11-23|Erstmalig in dieser Version erstellt\\ ​ |
 +
 +==== Code-Snippets ====
 +
 +== Engine Playground ==
 +Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
 +  * [[http://​playground.dstore.de/​index.php?​proc=im_ModifyNodeCharacs_Ad|im_ModifyNodeCharacs_Ad im Engine Playground öffnen]]
 +== cURL ==
 +Unformatierte Ausgabe:
 +<code bash>
 +curl -X POST  '​http://<​partner>​-<​project>​.dstore.de/​default/​engine/​im_ModifyNodeCharacs_Ad?​CharacteristicDescription=<​value>&​ValueLanguageID=<​value>&​UnitID=<​value>&​FieldTypeID=<​value>'</​code>​Mit xmllint ((I.d.R. auf Unix-artigen Systemen bereits installiert,​ Bestandteil der libxml2, siehe http://​www.xmlsoft.org)) formatierte Ausgabe:
 +<code bash>
 +curl -X POST  '​http://<​partner>​-<​project>​.dstore.de/​default/​engine/​im_ModifyNodeCharacs_Ad?​CharacteristicDescription=<​value>&​ValueLanguageID=<​value>&​UnitID=<​value>&​FieldTypeID=<​value>'​ | xmllint --format -</​code>​== dStore_php ==
 +<code php>
 +use dStore_php\WebService;​
 +
 +$service = new WebService\Service( WebService\Scheme::​HTTP,'<​partner>​-<​project>​.dstore.de',​ 80);
 +
 +$request = new WebService\Requests\Engine\Procedure\Request(
 + new WebService\Requests\AccessData('​default'​),​
 + '​im_ModifyNodeCharacs_Ad',​
 + array(
 + '​CharacteristicDescription'​ => '<​value>',​
 + '​ValueLanguageID'​ => <​value>,​
 + '​UnitID'​ => <​value>,​
 + '​FieldTypeID'​ => <​value>,​
 + // '​PredefinedValues'​ => 0,
 + // '​SortNo'​ => 1,
 + // '​Recursive'​ => 0,
 + // '​DeleteCharacteristic'​ => 0,
 + // '​KeepPropertiesHistoryInHours'​ => NULL
 + )
 +);
 +
 +$service->​execute($request);​
 +
 + $xml_result = $request->​getResponse()->​getBody()->​toSimpleXmlDocument();​
 + $ResultSet = $xml_result->​getRowsAsArray();​
 +
 +$OutputParams = $xml_result->​getOutputParametersAsArray();</​code>​
 +== engine/​execute ==
 +XML zur Ausführung mit der Methode [[:​webservice:​engine:​execute|engine/​execute]],​ z.B. per
 +  curl --header '​Content-Type:​ application/​xml'​ -X POST '​http://<​partner>​-<​kunde>​.dstore.de/​default/​engine/​execute'​ -d '<​xml-daten>'​
 +
 +<code xml>
 +<?xml version="​1.0"​ encoding="​UTF-8"?>​
 +<​ListOfBatches>​
 + <Batch No="​0">​
 + <​Procedure Name="​im_ModifyNodeCharacs_Ad">​
 + <​Parameters>​
 + <​Parameter Name="​CharacteristicDescription"><​!-- varchar value --></​Parameter>​
 + <​Parameter Name="​ValueLanguageID"><​!-- tinyint value --></​Parameter>​
 + <​Parameter Name="​UnitID"><​!-- tinyint value --></​Parameter>​
 + <​Parameter Name="​FieldTypeID"><​!-- tinyint value --></​Parameter>​
 + <!-- <​Parameter Name="​PredefinedValues">​0</​Parameter>​ -->
 + <!-- <​Parameter Name="​SortNo">​1</​Parameter>​ -->
 + <!-- <​Parameter Name="​Recursive">​0</​Parameter>​ -->
 + <!-- <​Parameter Name="​DeleteCharacteristic">​0</​Parameter>​ -->
 + <!-- <​Parameter Name="​KeepPropertiesHistoryInHours">​NULL</​Parameter>​ -->
 + </​Parameters>​
 + </​Procedure>​
 + </​Batch>​
 +</​ListOfBatches></​code>​
  
engine/procedures/im_modifynodecharacs_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)