Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:im_modifynodecharacs_ad

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-MethodPOST
HTTP-AuthOptional
Aliasim_ModifyNodeCharacteristics_Ad
Tags
Engine-Kategorieconfigurations
Engine-TypDaten-Änderung
Letzte Aktualisierung7.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)
tinyint3.5.0
UnitID ID einer Einheit für die Eigenschaften zu diesem Merkmal
tinyint3.5.0
PredefinedValues0 „0“ : Zu diesem Merkmal können beliebige Werte gespeichert werden
„1“ : Es kann nur aus einer Liste vordefinierter Werte gewählt werden
bit3.5.0
SortNo1 Bestimmt die Reihenfolge des Merkmals innerhalb aller Merkmale
smallint3.5.0
FieldTypeID ID des Datentyps; legt das Repräsentierungsformat der gespeicherten Werte fest (siehe auch mi_GetFieldTypes_Ad)
tinyint3.5.0
Recursive0 „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“
bit3.5.0
DeleteCharacteristic0 „0“ : Merkmal soll angelegt oder geändert werden
„1“ : Merkmal soll gelöscht werden
bit3.5.0
KeepPropertiesHistoryInHoursNULL 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“.
integer3.5.20

Rückgabe

Die Prozedur hat keine Rückgaben.

Output-Parameter

NodeCharacteristicIDID 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 1)
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur indirekt
-599Lizenz ist ungültig oder abgelaufennur indirekt
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-550Fehlender oder falscher Eintrag in Settingsnur indirekt
-540Falsches Formatnur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-532Ungültiger Feldtypnur direkt
-531Der Wert „UnitSymbol“ darf bei Einheiten der Kategorie „Währung“ NICHT „NULL“ seinnur direkt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-502Die Parameter-Werte der Prozedur können nicht verarbeitet werden (kein passendes Trennzeichen)nur indirekt
-500Falsche Parameterdirekt und indirekt
-285Der Benutzer hat keine Berechtigung, vergangene Eigenschaften zu diesem(n) Merkmal(en) zu ändernnur indirekt
-284Der Benutzer hat keine Berechtigung, Eigenschaften zu diesem(n) Merkmal(en) zu modifizierennur indirekt
-282Das Merkmal darf nicht gelöscht werdennur direkt
-281Das Merkmal kann nicht geändert oder gelöscht werden, da es bereits zugewiesene Eigenschaften gibtnur direkt
-279Die PredefinedValues-Einstellung kann nicht geändert werden, da zu viele Werte existierennur direkt
-245Einige Artikel-Eigenschaften sind ungültignur indirekt
-242Relative Änderung nicht möglich, da es eine Eigenschaft gibt, deren Gültigkeit in d. Zukunft beginntnur indirekt
-241Änderung(en) der Eigenschaft(en) konnte(n) aufgrund paralleler Änderungen nicht durchgeführt werdennur indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
7.0.4 2014-03-19Neues Verhalten bei Angabe von „NULL“ für „KeepPropertiesHistoryInHours“ [⇒ Implementierung des neuen „Settings“-
Eintrags „DefaultKeepPropertiesHistoryInHoursForNodeCharacs“], s. Ticket #3560
7.0.2 2013-08-291. 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-07Interne Anpassungen aufgrund der neuen Tabelle „CurrencyCharacteristicsInNetto“ sowie der Erweiterung des Datentyps der „Value“-Spalte von „NodeCharacteristicValues“
7.0.0 2013-06-04Kleiner Doku-Fehler [verwendete Prozeduren]
6.5.1 2012-11-02Ab 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-07Parameter „NodeCharacteristicID“ ist nun ein Ausgabeparameter
6.0.2 2011-06-08Holger Wies : Doku aktualisiert
6.0.0 2010-03-261. 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-26Neuer möglicher Return-Code „-532“, da es ab 5.1.2 „FieldTypes“ mit einer „MaxLength > 100“ geben kann !
5.1.0 2006-02-081. 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-29Beim 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-181. 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-16Ab 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-23Erstmalig 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:

cURL

Unformatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/im_ModifyNodeCharacs_Ad?CharacteristicDescription=<value>&ValueLanguageID=<value>&UnitID=<value>&FieldTypeID=<value>'

Mit xmllint 2) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/im_ModifyNodeCharacs_Ad?CharacteristicDescription=<value>&ValueLanguageID=<value>&UnitID=<value>&FieldTypeID=<value>' | xmllint --format -
dStore_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();
engine/execute

XML zur Ausführung mit der Methode engine/execute, z.B. per

curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?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>
1)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
2)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/im_modifynodecharacs_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)