2012-03-01 14 views
8

Estoy tratando de actualizar un registro a través de SalesForce API (Enterprise WSDL).La actualización no funciona en SalesForce API

El código siguiente se ejecuta correctamente y el resultado de guardar devuelto indica que la operación se realizó correctamente.

Sin embargo, cuando miro en SalesForce, el registro no se ha actualizado. Lo único que se me ocurre es que estoy usando el Id. Incorrecto. Pero lo he comprobado quintuple y lo he comprobado nuevamente, y luego volví a verificarlo.

¿Alguien ha encontrado algo así antes? Alternativamente, estaré tan contento si alguien puede señalar el error estúpido que probablemente he hecho algún lugar :-)

sforce.Participant__c updateParticipant = new sforce.Participant__c(); 

     updateParticipant.Id = participant.Id.Length == 15? participant.Id : participant.Id.Substring(0, 15); 

     if (updateType == "pre") 
     { 
      updateParticipant.Manual_Download_Date__c = DateTime.Now; 
      updateParticipant.Manual_Download__c = true; 
     } 
     else if (updateType == "post") 
     { 
      updateParticipant.Post_Class_Manual_Download__c = true; 
      updateParticipant.Post_Class_Manual_Downloaded_Date__c = DateTime.Now; 
     } 

     sforce.SaveResult[] result = SFLib.sfdc.update(new sforce.sObject[] { updateParticipant }); 
     if (result == null || result.Length <= 0) 
      return false; 
     else 
     { 
      if (result[0].success == true) 
       return true; 
      else 
       throw new Exception("Update participant failed", new Exception(result[0].errors[0].message)); 
     } 
+0

debe dar la respuesta a continuación y aceptar su propia respuesta para no dejar esta pregunta abierta. – mmix

Respuesta

18

Cuando se utiliza .Net para llamar al método de actualización en la API, es necesario establecer el * fieldname__cSpecified * campo explícitamente. P.ej.

updateParticipant.aDateField_StartDate__c = DateTime.Now; 
updateParticipant.aDateField_StartDate__cSpecified = true; 
+2

Aunque este es solo el caso para algunos tipos, booleanos/número/fechas, no se aplica a las cadenas. – superfell

+0

Volvería a votar esto si pudiera, he estado tirando de mi cabello – Miles

+2

pasamos horas tratando de rastrear por qué nuestro cliente de jabón no pudo establecer CaseComment.isPublished a verdad. Gracias @RobD. El documento para esto se encuentra en la parte inferior de la página "Consideraciones de implementación" en la Guía del desarrollador de la API de SODC de SFDC http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/implementation_considerations. htm? SearchType = Stem – cropredy

Cuestiones relacionadas