Datensatz einer benutzerdefinierten Entität duplizieren

Hallo!


Ich möchte den Datensatz einer benutzerdefinierten Entität mit dem Namen
"new_workstations" duplizieren.
Ich habe folgende Änderungen in der isv.config vorgenommen:

<Button Title="Duplizieren" ToolTip="Workstation duplizieren"
Icon="http://cadserver02:5555/test.gif"
Url="/cloneworkstation/cloneworkstation.htm"
WinParams="dialogHeight=100px;dialogWidth=300px" WinMode="1"/>


Dann habe ich eine Datei mit dem Namen cloneworkstation.htm angelegt:

<html>
<title>Workstation Duplizieren</title>

<style>

BODY, TD
{
font-family: arial;
font-size: 12px;
}

TD.body
{
border-bottom: solid 1px #cccccc;
text-align: center;
}

</style>

<script language="javascript">

// Set global variable for the cloned contact window
var oClonedWorkstation;

function window.onload()
{
// Open a new contact form
oClonedWorkstation = window.open('/UserDefined/edit.aspx','','menubar=0,
status=1, width=1000, height=600');

// Set a timeout to wait for the new contact form to load
setTimeout('checkPageState()',100);
}

// Checks if the new contact form has completed loading
// When it completes, CloneWorkstation will be called
// If it's not loaded, it will set a timeout and check again.
function checkPageState()
{
if (oClonedWorkstation.document.readyState == 'complete')
{
CloneWorkstation();
return;
}

setTimeout('checkPageState()',100);
}

function CloneWorkstation()
{
// Get a pointer to the parent window
var oParent = window.dialogArguments;
var oSource = oParent.document.crmForm;

// With the target crmForm
with(oClonedWorkstation.document.crmForm)
{
new_betriebssystem2.DataValue = oSource.new_betriebssystem2.DataValue;
new_controllerbez.DataValue = oSource.new_controllerbez.DataValue;
new_cpu1bez.DataValue = oSource.new_controllerbez.DataValue;
new_cpu2bez.DataValue = oSource.new_controllerbez.DataValue;
new_cpucooler.DataValue = oSource.new_controllerbez.DataValue;
new_gehaeuseart.DataValue = oSource.new_controllerbez.DataValue;
new_grafik1bez.DataValue = oSource.new_controllerbez.DataValue;
new_grafik2bez.DataValue = oSource.new_controllerbez.DataValue;
new_hdd1bez.DataValue = oSource.new_controllerbez.DataValue;
new_hdd2bez.DataValue = oSource.new_controllerbez.DataValue;
new_hdd3bez.DataValue = oSource.new_controllerbez.DataValue;
new_kaufdatum2.DataValue = oSource.new_controllerbez.DataValue;
new_kunde.DataValue = oSource.new_controllerbez.DataValue;
new_workstationname.DataValue = oSource.new_controllerbez.DataValue;
new_kdnr.DataValue = oSource.new_controllerbez.DataValue;
new_laufwerk1bez.DataValue = oSource.new_controllerbez.DataValue;
new_laufwerk2bez.DataValue = oSource.new_controllerbez.DataValue;
new_mainboardname.DataValue = oSource.new_controllerbez.DataValue;
new_maus.DataValue = oSource.new_controllerbez.DataValue;
new_netzteilname.DataValue = oSource.new_controllerbez.DataValue;
new_raidlevel.DataValue = oSource.new_controllerbez.DataValue;
new_rambez.DataValue = oSource.new_controllerbez.DataValue;
new_tastatur.DataValue = oSource.new_controllerbez.DataValue;
new_zusatzkomponenten.DataValue = oSource.new_controllerbez.DataValue;
new_zusatzsoftware.DataValue = oSource.new_controllerbez.DataValue;
}

// Finally, close the dialog
window.close();
}

</script>

<body>

<table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"
align>
<tr valign="middle">
<td class="body" align="center">
<div style="font-size= 10pt; font-family= Tahoma;">Cloning
Workstation...</div>
</td>
</tr>
</table>

</body>

</html>


Leider funktioniert das ganze nicht so ganz.
Ich denke die Funktion edit.aspx ist nicht richtig für benutzerdefinierte
Entitäten, aber welche ist die richtige, oder gibt es einen besseren Weg?

Vielen Dank


AW: Datensatz einer benutzerdefinierten Entität duplizieren

Hi,


Dein Problem könnte damit zusammenhängen, das nach edit.aspx noch ?etc=10000 steht und diesen Aufruf sehe ich bei Dir nicht.


Gruß



AW: Datensatz einer benutzerdefinierten Entität duplizieren

Hallo Carsten Groth,


beim Klick auf den Button wird auch ein neues Formular geöffnet, dieses ist aber ein neues Kontakt Formular. Die Attribute aus der custom entity "workstations" sind in diesem Formular ja nicht vorhanden.


Wie kann man denn ein neues Formular der benutzerdefinierten Entität öffnen lassen?



AW: Datensatz einer benutzerdefinierten Entität duplizieren

wie gesagt, der Aufruf per URL von Benutzerdefiniertern Entitäten ist ein anderer. Er funktoniert nach dem Prinzip:


For Custom Entities: http://DeinCRMServer[Port]/UserDefined/edit.aspx?etc=[objectTypeCode]

Where [objectTypeCode] is the code for your custom entity. This number starts from 10000 and increments for each entity that is created.

Um nunmehr den objectTypeCode für Deine Entität zu ermitteln, rufst Du einfach per:
http://DeinCRMServer[Port]/sdk/list.aspx die Entitätsübersicht auf, suchst Deine erzeugte Entität und oben in der Übersicht findest Du den objectTypeCode


Hoffe, dies hilft Dir weiter



AW: Datensatz einer benutzerdefinierten Entität duplizieren

Ja danke, jetzt funktioniert der Aufruf der custom entity, ich denke die alte cloneworkstation.htm war noch im cache.


Leider ist das Formular noch leer, es werden keine Daten eingetragen. Es wird aber keine Fehlermeldung ausgegeben. Woran kann es denn noch liegen?


Viele Grüße



AW: Datensatz einer benutzerdefinierten Entität duplizieren

Hi,


Du hast das Script ja sicherlich dem Blog von Ronald Lemmen entnommen - richtig?


Ich habe mir mal die beiden Seiten "rauskopiert" und gegenübergestellt. Auf den ersten Blick ist mir lediglich im Bereich Deiner ISV-Anpassungen eine Abweichung untergekommen.


Ronald postet hier:


1<configuration version="3.0.0000.0">
2<Root />
3<Entities>
4<Entity name="contact">
5<ToolBar ValidForCreate="0" ValidForUpdate="1">
6<Button Title="Clone Contact" ToolTip="Create a Copy of This Contact" Icon="/CloneContact/contactclone.gif" Url="/CloneContact/CloneContact.htm" WinMode="1" WinParams="dialogHeight:100px;dialogWidth:300px;"/>
7</ToolBar>
8</Entity>
9</Entities>
10</configuration>


Bei Dir weiß ich jetzt nicht, ob Du die Zeilen 2,3,4,5 beachtet hast. Außerdem sind bei Dir WinMode und WinParams in der Reihenfolge vertauscht.


Soweit meine "Untersuchung"


Gruß


 



AW: Datensatz einer benutzerdefinierten Entität duplizieren

Setze einfach mal an den Anfang der ganzen JScripts debugger (in eine Zeile, ohne Anführungszeichen usw.; es sollte sich Visual Studio öffnen, wenn installiert oder zumindest der MS ScriptEditor aus dem Office-Paket) oder an diverse Stellen ein alert("text"), um zu sehen, wie weit deine Skript-Anweisungen abgearbeitet werden.


AW: Datensatz einer benutzerdefinierten Entität duplizieren

Ich habe inzwischen den Fehler gefunden:


Bei den Attributen habe ich ab der 2. Position dummerweise immer die gleiche Quelle "oSource.new_controllerbez.DataValue" angegeben , welche natürlich ausgerechnet nicht mit Daten gefüllt war. Sonst wäre es bestimmt direkt aufgefallen.

Habe die Quellen korrigiert und alles läuft problemlos.


Vielen Dank noch mal für die Hilfe!



AW: Datensatz einer benutzerdefinierten Entität duplizieren

Mal unabhängig von deinem Problem:


Kannst du Inhalte aus Datums-Feldern kopieren oder nur aus reinen Text-Feldern?


1) crmForm.fat_inbetriebnahme.DataValue = oSource.crmForm.fat_inbetriebnahme.DataValue;


2) crmForm.fat_inbetriebnahme.DataValue = oSource.getElementById("fat_inbetriebnahme").DataValue;


1) funktioniert nicht; es ist, als wäre das Feld gar nicht vorhanden (kommt zu einem Skript-Fehler), mit 2) klappt es ohne weiteres.


Gleiches Problem habe ich mit dem Betreff-Feld (crmForm.subjectid).