Übertragen der Formularinhalte in ein neues Formular?

Hallo liebe CRM-Gemeinde,




ich stehe schon seit einigen Tagen vor einer schier unlösbaren Aufgabe.
Ich habe die große Weite des Internets nach einer Lösung durchsucht und
bin leider nicht fündig geworden:




Nach dem ich eine Serviceaktivität mit Werten befüllt habe, möchte ich
mit dem Speichern-Button ein neues Formular einer Serviceaktivität
öffnen und die Werte des vorherigen zunächst vollständig übernehmen.




Mit dem onload-Event kann ich problemlos ein neues SA-Formular öffnen:








var docDomain = document.domain;

var url = "http://" + docDomain + ":5555/activities/serviceappointment/edit.aspx";

window.open(url);



Aber wie bekomme ich nun
die Werte des einen Forumlars in das andere? Kann ich irgendwie
zwischen den crmForm unterscheiden? Ich könnte zwar auch ein
HttpRequest durchführen und die Werte direkt auslesen, jedoch fehlt mir
dann die oId der vorherigen Serviceaktivität.




Sinn der Übung ist es halt eine gewisse einfachere Handhabung bei sich
ständig wiederholenden Service-Aktivitäten zu haben, da man ja
standardmäßig keine Wiederholungen in SAs hinterlegen kann.





Vielleicht kann mir ja einer weiterhelfen.. Danke schon mal


Grüße


Fabian





AW: Übertragen der Formularinhalte in ein neues Formular?

Hallo Fabian,


versuche mal über parent an das übergeordnete Fenster (aus welchem heraus die neue Browserinstanz gestartet wurde) heranzukommen.


Grüße,
Thomas



AW: Übertragen der Formularinhalte in ein neues Formular?

Wenn du nicht parent nehmen willst, kannst du die oId beim Öffnen doch auch übergeben.


AW: Übertragen der Formularinhalte in ein neues Formular?

[quote user="BeateS"]Wenn du nicht parent nehmen willst, kannst du die oId beim Öffnen doch auch übergeben.[/quote]


Das wäre auch noch eine Idee... aber wie soll die Übergabe bei einem neu geöffneten CRM-Formular für ein ServiceAppointment (siehe oben) genau erfolgen?
Wenn ich eine eigene Webanwendung öffne ist das sicher kein Problem - jedoch bei einem CRM-Formular könnte ich mir vorstellen, dass es da Schwierigkeiten geben kann.


Grüße,
Thomas



AW: Übertragen der Formularinhalte in ein neues Formular?

hy fabian,


also: wir haben das ganze beim telefonat gemacht.


und zwar nicht beim speichern sonden mit einem button, der im hintergrund eine htm aufruft. dort liegt der code drin, dass eine neue telefonaktivität geöffnet wird und welche felder aus dem ursprünglichen in die neue übernommen werden sollen.


lg


christine



AW: Übertragen der Formularinhalte in ein neues Formular?

Vielen Dank an alle für eure hilfreichen Beiträge!

Ich habe das jetzt Quick'n'Dirty hingebogen. Ich habe zunächst ein Benutzerdefiniertes Feld "Wiederholen bis" (Date) definiert. Außerdem noch ein Picklist-Feld in denen man die Intervalle auswählen kann (1- wöchentlich, 2- alle zwei Wochen etc.). 
Wenn man auf dem Speicherbutton klickt wird geprüft ob dieses Feld ein Wert enthält. Ist dies der Fall werden die Werte in das neu geöffnete Fenster übergeben:

//Neues Fenster öffnen ...
var oClonedActivity = window.open('/activities/serviceappointment/edit.aspx',0,'menubar=0, status=1, width=1000, height=600');

//... warten bis das Fenster vollständig geöffnet ist..
var testpage = 0;
  while(testpage==0)
  {
     if (oClonedActivity.document.readyState == 'complete')
      {
          testpage=1;
       }
   }

//... Werte werden übernommen ...
oClonedActivity.document.crmForm.subject.DataValue = oSource.subject.DataValue;
oClonedActivity.document.crmForm.serviceid.DataValue = oSource.serviceid.DataValue;
oClonedActivity.document.crmForm.customers.DataValue = oSource.customers.DataValue;
...

Probleme ergeben sich beim Ressourcen-Feld, da die Zuordnung intern über eine eigene Tabelle erfolgt: wenn man das Lookup-Feld einfach kopiert werden die GUIDs ebenfalls kopiert - so wurde ich mit einer Fehlermeldung über die Integritätsverletztung informiert. Also einfach ein neues Lookup-Feld erzeugen:

var i = 0;
var lookupItem = oClonedActivity.document.crmForm.resources.DataValue;
var newLookup = new Array();

while (lookupItem[i] != null){
    newLookup[i] = new LookupControlItem( lookupItem[i].id, lookupItem[i].type, lookupItem[i].name );
    i++;
}

oClonedActivity.document.crmForm.resources.DataValue = newLookup;

Und schon kann der ganze Spaß losgehen. Die Idee mit dem eigenen Button werde ich mir mal überlegen.

Man kann die ServiceAppointments natürlich auch über den Webservice erzeugen, jedoch hatte ich damit immer SecurityExceptions und so bin ich auf die Client-Seite gewechselt ;-)

Auf wunsch kann ich auch den ganzen Code posten...

Grüße
Fabian


AW: Übertragen der Formularinhalte in ein neues Formular?

Hallo Fabian,

hier vielleicht noch ein ganz anderer Ansatz, der bei 3.0 allerding nur im online Modus funktioniert:

Per OnLoad oder über einen Button in der isv.config.xml öffnest du zunächst eine eigene ASPX-Seite, die die Serviceaktivität generiert und mit werten befüllt.
Anstelle selber etwas anzuzeigen gibt diese Seite dann einen Redirect auf die neue Serviceaktivität zurück so dass sich das Formular der Serviceaktivität öffnet.

Je nach Anwendungsfall kann es von Voteil oder Nachteil sein, das die Serviceaktivität dann bereits im System existiert.
Gegenüber der javaScript variante bist du dafür wesendlich flexibler und kannst dir die Daten im gesammten CRM zusammensuchen.

chris