Je compare des champs de deux entités différentes, de sorte que si les valeurs sont différentes, le champ sur le formulaire 1 est défini sur la valeur du champ dans l'autre formulaire. Le problème est que, bien que la logique semble juste pour certains des blocs, il refuse de continuer au prochain bloc if/else sauf si la valeur précédente a changé.Comparer des champs de différentes entités
Donc, il va aux blocs qui vérifient l'état et le pays sans problèmes, peu importe si l'un ou l'autre est changé.Cependant, sauf si l'état ou le pays est changé (ou pays est commenté) il ne continue pas à vérifiez ces valeurs. Je ne sais pas ce que je manque ici. Je me suis assuré que rien n'est imbriqué et que toute la logique fonctionne réellement.
Xrm.Utility.alertDialog("about to check state");
if (getFieldValue("hc_stateid") == null && result["_hc_state_value"] != null) {// checling if value is null on tni becacuse the else if wouldnt execute b/c no id
Xrm.Utility.alertDialog("its null");
Xrm.Page.getAttribute("hc_stateid").
setValue([
{
id: result["_hc_state_value"],
name: result["[email protected]"],
entityType: result["[email protected]"]
}]);
Xrm.Utility.alertDialog("state changes");
}
else if (result["_hc_state_value"] != getFieldValue("hc_stateid")[0].id.replace("{", "").replace("}", "").toString().toLowerCase()) {//tni has a value
if (result["_hc_state_value"] == null) {
Xrm.Page.getAttribute("hc_stateid").setValue(null);
}
else {
Xrm.Page.getAttribute("hc_stateid").
setValue([
{
id: result["_hc_state_value"],
name: result["[email protected]"],
entityType: result["[email protected]"]
}]);
Xrm.Utility.alertDialog("state changes");
}
}
Xrm.Utility.alertDialog("about to check country");
/*if (getFieldValue("hc_countryid") == null && result["_hc_country_value"] != null)
{
Xrm.Page.getAttribute("hc_countryid").
setValue([
{
id: result["_hc_country_value"],
name: result["[email protected]"],
entityType: result["[email protected]Microsoft.Dynamics.CRM.lookuplogicalname"]
}]);
Xrm.Utility.alertDialog("country changed");
}
else if (result["_hc_country_value"] != getFieldValue("hc_countryid")[0].id.replace("{", "").replace("}", "").toString().toLowerCase()) {
if (result["_hc_country_value"] == null) {
Xrm.Page.getAttribute("hc_countryid").setValue(null);
}
else {
Xrm.Page.getAttribute("hc_countryid").
setValue([
{
id: result["_hc_country_value"],
name: result["[email protected]"],
entityType: result["[email protected]"]
}]);
Xrm.Utility.alertDialog("country changed");
}
} */
Xrm.Utility.alertDialog("about to check prim spec");
Xrm.Utility.alertDialog("prim specialty: " + (result["_hc_primaryspecialty_value"] != getFieldValue("hc_primaryspecialtyid")[0].id.replace("{", "").replace("}", "").toString().toLowerCase()).toString());
if (getFieldValue("hc_primaryspecialtyid") == null && result["_hc_primaryspecialty_value"] != null) {
Xrm.Page.getAttribute("hc_primaryspecialtyid").
setValue([
{
id: result["_hc_primaryspecialty_value"],
name: result["[email protected]alue"],
entityType: result["[email protected]ame"]
}]);
}
else if (result["_hc_primaryspecialty_value"] != getFieldValue("hc_primaryspecialtyid")[0].id.replace("{", "").replace("}", "").toString().toLowerCase()) {
Xrm.Utility.alertDialog("inside else if");
if (result["_hc_primaryspecialty_value"] == null) {
Xrm.Page.getAttribute("hc_primaryspecialtyid").setValue(null);
}
else {
Xrm.Utility.alertDialog("prime spec");
Xrm.Page.getAttribute("hc_primaryspecialtyid").
setValue([
{
id: result["_hc_primaryspecialty_value"],
name: result["[email protected]alue"],
entityType: result["[email protected]ame"]
}]);
}
}
else {
}
Xrm.Utility.alertDialog("after prim spec");
Avez-vous pu le déboguer? Des erreurs? –
J'ai été capable de le déboguer et aucune erreur. Il était vraiment bizarre, il a complètement ignoré certaines des conditions. Quelque part, j'ai remédié à cela en ajoutant des instructions else else et qui l'ont forcé à continuer. Ça n'a pas de sens mais ça prend mal. – amberl