Utilizar sObjects
Objetivos de aprendizaje
Utilizar sObjects
Campo de cuenta | Valor |
---|---|
Id. | 001D000000JlfXe |
Nombre | Acme |
Teléfono | (415)555-1212 |
NumberOfEmployees | 100 |
Cada registro de Salesforce se representa como un sObject antes de insertarlo en Salesforce. Del mismo modo, si se recuperan registros persistentes de Salesforce, estos se almacenan en una variable de sObject.
Los registros de objetos estándar y personalizados de Salesforce se asignan a sus tipos de sObject en Apex. A continuación se indican algunos nombres de tipos de sObject comunes en Apex usados para objetos estándar.
- Cuenta
- Contacto
- Candidato
- Oportunidad
Si ha agregado objetos personalizados en su organización, use los nombres de objetos personalizados de la API en Apex. Por ejemplo, un objeto personalizado llamado Merchandise se corresponde con el sObject Merchandise__c en Apex.
Creación de variables de sObject
Para crear un sObject, debe declarar una variable y asignarle una instancia de sObject. El tipo de datos de la variable es el tipo de sObject.
En el siguiente ejemplo, se crea un sObject del tipo cuenta con el nombre Acme y se asigna a la variable acct
.
Account acct = new Account(Name='Acme');
Nombres de sObjects y campos
Apex hace referencia a sObjects estándar o personalizados, y los campos tienen nombres de API exclusivos.
Los nombres de objetos y campos de la API pueden variar con respecto a sus etiquetas. Por ejemplo, el campo Employees tiene la etiqueta Employees y se muestra en la página del registro de cuenta como Employees, pero su nombre en la API es NumberOfEmployees. Para acceder a este campo en Apex, debe usar el nombre del campo de la API: NumberOfEmployees.
A continuación se destacan algunas reglas usadas para los nombres de objetos y campos personalizados de la API.
En el caso de los objetos y campos personalizados, el nombre de la API siempre termina por el sufijo __c. En el caso de los campos de relación personalizados, el nombre de la API termina por el sufijo __r. Por ejemplo:
- Un objeto personalizado con la etiqueta Merchandise tiene el nombre Merchandise__c en la API.
- Un objeto personalizado con la etiqueta Description tiene el nombre Description__c en la API.
- Un campo de relación personalizado con la etiqueta Items tiene el nombre Items__r en la API.
Además, los espacios de las etiquetas se sustituyen por caracteres de subrayado en los nombres de la API. Por ejemplo, el nombre de campo personalizado Employee Seniority se corresponde con el nombre Employee_Seniority__c en la API.
Búsqueda de nombres de objetos y campos
Para averiguar los nombres de los objetos estándar y sus campos para su uso en Apex, consulte Referencias de objetos para la plataforma Lightning y Salesforce.
En el caso de los objetos personalizados y estándar, busque los nombres de objetos y campos de la API de su organización. En Configuración, haga clic en la ficha Gestor de objetos a la derecha de la ficha Inicio y, a continuación, haga clic en el nombre del objeto.
Creación de sObjects y adición de campos
Para poder insertar un registro de Salesforce, debe crearlo en la memoria primero como un sObject. Como ocurre con cualquier otro objeto, los sObjects se crean con el operador new
:
Account acct = new Account();
El nombre de objeto de la API se convierte en el tipo de datos de la variable de sObject en Apex. En este ejemplo, Account
es el tipo de datos de la variable acct
.
La cuenta a la que hace referencia la variable acct
está vacía porque no hemos completado aún ningún campo. Se pueden agregar campos de dos formas: mediante el constructor o mediante la notación de puntos.
La forma más rápida de agregar campos es especificarlos como pares de nombre-valor en el constructor. Por ejemplo, esta declaración crea un sObject de cuenta y completa el campo Name con un valor de cadena.
Account acct = new Account(Name='Acme');
El campo Name es el único campo obligatorio para las cuentas, lo que significa que se debe completar para poder insertar un registro nuevo. Sin embargo, también puede completar otros campos para el registro nuevo. En este ejemplo se agregan un número de teléfono y el número de empleados.
Account acct = new Account(Name='Acme', Phone='(415)555-1212', NumberOfEmployees=100);
De forma alternativa, puede usar la notación de puntos para agregar campos a un sObject. Lo siguiente equivale al ejemplo anterior, pero se han agregado algunas líneas de código.
Account acct = new Account(); acct.Name = 'Acme'; acct.Phone = '(415)555-1212'; acct.NumberOfEmployees = 100;
Trabajo con el tipo de datos sObject genérico
Las variables que se declaran con el tipo de datos sObject genérico pueden hacer referencia a cualquier registro de Salesforce con independencia de que sea un registro de objeto estándar o personalizado.
En este ejemplo, se muestra cómo se puede asignar cualquier objeto de Salesforce (como una cuenta y un objeto personalizado llamado Book__c) a una variable de sObject genérico.
sObject sobj1 = new Account(Name='Trailhead'); sObject sobj2 = new Book__c(Name='Workbook 1');
Por el contrario, las variables que se declaran con el tipo de datos sObject específico solo pueden hacer referencia a registros de Salesforce del mismo tipo.
Conversión de sObjects genéricos en tipos de sObject específico
Si usa sObjects genéricos, es posible que en ocasiones necesite convertir la variable de sObject en un tipo de sObject específico. Una de las ventajas de esto es poder acceder a campos mediante la notación de puntos, la cual no está disponible en el sObject genérico. Dado que el sObject es un tipo principal para todos los tipos de sObject específico, puede convertir un sObject genérico en un sObject específico. En este ejemplo se muestra cómo convertir un sObject genérico en una cuenta.
// Cast a generic sObject to an Account Account acct = (Account)myGenericSObject; // Now, you can use the dot notation to access fields on Account String name = acct.Name; String phone = acct.Phone;
Más información...
Solo es posible acceder a los campos de un sObject genérico mediante los métodos put()
y get()
.
En esta unidad, ha aprendido qué son los sObjects y cómo usarlos. Sin embargo, la creación de un sObject no persiste como registro en la base de datos. Para guardar el sObject como un registro y realizar otras acciones con él, utilice el Lenguaje de manipulación de datos (DML). Para recuperar un registro, utilice el Lenguaje de consulta de objetos de Salesforce (SOQL). Consulte las unidades posteriores sobre DML y SOQL.
Recursos
- Referencias de objetos para la plataforma Lightning y Salesforce
- Guía del desarrollador de Apex: Trabajo con sObjects
- Guía del desarrollador de Apex: Métodos sObject