Empiece a realizar un seguimiento de su progreso
Inicio de Trailhead
Inicio de Trailhead

Utilizar sObjects

Objetivos de aprendizaje

Después de completar esta unidad, podrá:
  • Describir la relación entre los sObjects y los registros de Salesforce.
  • Crear y usar variables de sObjects específicos.
  • Convertir un sObject genérico en un sObject específico.

Utilizar sObjects

Dado que Apex está perfectamente integrado con la base de datos, puede acceder a los registros de Salesforce y sus campos directamente desde Apex. Cada registro de Salesforce se representa de forma nativa como un sObject en Apex. Por ejemplo, el registro de cuenta Acme se corresponde con un sObject de cuenta en Apex. Los campos del registro Acme que puede ver y modificar en la interfaz de usuario se pueden leer y modificar además directamente en el sObject.

En la siguiente tabla se incluyen algunos campos completados del registro de cuenta Acme de ejemplo. El sObject de cuenta es una abstracción del registro de cuenta e incluye la información de campos de la cuenta en la memoria como un objeto.

Tabla 1. sObject de cuenta para un registro recuperado
Campo de cuenta Valor
Id (Id.) 001D000000JlfXe
Name (Nombre) Acme
Phone (Teléfono) (415)555-1212
NumberOfEmployees (Número de empleados) 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
  • Prospecto
  • 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 asignarla a una instancia de sObject. El tipo de datos de la variable es el tipo de sObject.

En el siguiente ejemplo se crea una variable de sObject del tipo cuenta y se asigna a una cuenta nueva con el nombre Acme.

Account acct = new Account(Name='Acme');

Nombres de sObjects y campos

Los nombres de los sObjects se corresponden con los nombres de la API para los objetos estándar o personalizados correspondientes. De forma similar, los nombres de los campos de sObject se corresponden con los nombres de la API para los campos correspondientes.

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 Referencia de objetos para Salesforce y Plataforma Lightning.

En el caso de los objetos personalizados, busque los nombres de objetos y campos de la API de su organización. En Setup (Configuración), ingrese Objects en el cuadro Quick Find (Búsqueda rápida), seleccione Objects (Objetos) 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

Normalmente, usará el tipo de datos sObject específico, como una cuenta para un objeto estándar o Book__c para un objeto personalizado llamado Book, cuando trabaje con sObjects. No obstante, si no sabe qué tipo de sObject controla el método, puede usar 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.

Una variable de sObject genérico puede apuntar a cualquier registro de Salesforce.

En este ejemplo se muestra cómo la variable de sObject genérico se puede asignar a cualquier objeto de Salesforce (una cuenta y un objeto personalizado llamado Book__c).

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.

Una variable de sObject específico puede apuntar solo al registro 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...

A diferencia de los tipos de sObjects específicos, los sObjects genéricos se pueden crear solo mediante el método newSObject(). Además, 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