Skip to main content

Utilizar sObjects y DML

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Definir los sObjects.
  • Explicar la diferencia entre sObjects y otros tipos de datos de Apex.
  • Utilizar DML para insertar registros en la base de datos.
Nota

Nota

El reto práctico para esta insignia está localizado al japonés, español (LATAM) y portugués (Brasil). Para cambiar el idioma de su Trailhead Playground, siga estas instrucciones. Puede que la localización esté desactualizada. Si no aprueba el reto con las instrucciones localizadas, cambie el idioma a inglés y la configuración local a Estados Unidos, y vuelva a intentarlo.

Consulte la insignia Trailhead en su idioma para obtener más información sobre cómo aprovechar la experiencia de Trailhead en otros idiomas.

Siga el proceso con Trail Together

¿Desea seguir el proceso con un experto a medida que realiza este paso? Eche un vistazo a este video, parte de la serie Trail Together en Trailhead Live.

(Este video comienza en el minuto 09:39 p.m., en caso de que desee rebobinar y mirar el comienzo del paso nuevamente).

¿Qué es un sObject?

Un sObject es un tipo de datos de Apex que se corresponde con un objeto de Salesforce (sObject) en una organización. Los sObjects son tipos de datos complejos que albergan múltiples valores en una variable. Albergan un único registro de datos procedente de un objeto de Salesforce, como una Cuenta, un Contacto o una Oportunidad. Recuerde de Fundamentos de Apex para administradores que las variables son como contenedores. La mayoría de las variables albergan información. Los sObjects son contenedores que albergan otros contenedores. Los contenedores dentro del contenedor del sObject pueden ser tipos de datos diferentes, como una cadena, una fecha, un entero o un booleano.

Cuadrado de sObject con cuatro cajas dentro etiquetadas Id, Name, Type y Custom_Field__c

Nuevas cuentas

Nombre
Número de la cuenta
Teléfono
The Tea Factory
356281
555-0158
Tina’s Teas
623956
555-0129

Mire la información de esta tabla. Si utilizó el Cargador de datos, estará familiarizado con este formato de cuenta. Los campos de la cuenta son Name, Account Number y Phone. Los datos son lo que vería si recuperara la información de un reporte o una vista de lista.

Los campos de un objeto en una organización se denominan propiedades de sObject en código Apex. Así como todos los campos del objeto de una organización tienen un tipo de datos, cada propiedad de sObject tiene un tipo de datos. Por ejemplo, debido a que el campo Nombre de un objeto Cuenta tiene el tipo de datos de cadena, la propiedad Name del sObject myAcct también tiene el tipo de datos de cadena: myAcct.Name = 'The Tea Factory'.

Independientemente de que cree una cuenta manualmente (en la interfaz de usuario de Salesforce) o de forma programática (utilizando código de Apex), establece los mismos valores con los mismos tipos de datos. Por ejemplo, en la interfaz de usuario de Salesforce, puede crear una cuenta con los valores de campos en la primera fila de la tabla Nuevas cuentas anterior. Para crear la misma cuenta programáticamente, utilice el sObject Cuenta en código de Apex de este modo:

Account myAcct = new Account();
myAcct.Name = 'The Tea Factory';
myAcct.Phone= '555-0129';
myAcct.AccountNumber = '356281';

Utilice el sObjectName, la notación de puntos y los mismos campos predeterminados (Name, Phone y AccountNumber) con los que ya está familiarizado en su organización.

Account myAcct = new Account(); myAcct.Name = 'The Tea Factory'; myAcct.AccountNumber = '356281'; El nombre del sObject es myAcct y las propiedades del sObject son Id, Name, Phone y AccountNumber

En este ejemplo, las propiedades de myAcct (Name, Phone y AccountNumber) tienen tipos de datos que ya conoce: cadena y entero.

Establecer valor de campo

Utilice la notación de puntos para asignar un valor a un sObject. En el código de ejemplo anterior, mire las líneas 2-4. Si pensamos en el sObject como un contenedor de contenedores, esas líneas abren el contenedor más grande, myAcct, encuentre los contenedores Name, Phone y AccountNumber, y agregue valores a ellos.

Obtener valor de campo

Del mismo modo, utilice la notación de puntos para obtener (recuperar) un valor de un sObject.

Ejemplo: String accountName = myAcct.Name;

Este código de ejemplo abre el contenedor myAcct, mira dentro del contenedor, encuentra el contenedor Name y obtiene su valor. En este ejemplo, el valor devuelto es The Tea Factory.

Declarar un sObject es como agregar una fila a una hoja de cálculo. Cuando esté listo para crear otra cuenta, asigne un nuevo nombre al objeto Cuenta. Por ejemplo:

Account myAcct2 = new Account();
myAcct2.Name = 'Tina's Teas';
myAcct2.AccountNumber = '623956';
myAcct2.Phone = '555-0129';

Agregar datos a una organización de Salesforce

¿Está listo para escribir código de Apex para agregar datos a su organización de Salesforce? Sabe cómo crear clases, crear métodos y declarar un sObject. ¿Pero cómo agrega un sObject a su base de datos de Salesforce? Para enviar nuevos registros a su organización de Salesforce, utiliza una cosa llamada lenguaje de manipulación de datos (DML).

Como administrador, ya está familiarizado con DML. Sabe que tiene las instrucciones Insert (crear un registro), Update (modificar un registro) y Delete (eliminar un registro) que utiliza con herramientas de manipulación de datos, como el Cargador de datos. En vez de utilizar archivos .csv y el Cargador de datos para agregar filas o insertar o actualizar registros, puede redactar código de Apex para hacer el trabajo. Utilice código de Apex y las instrucciones Insert, Update y Delete de DML. ¡Magnífico! En esta unidad nos centramos en la instrucción Insert.

Definir la clase

  1. En Developer Console, haga clic en File (Archivo) | New (Nuevo) | Apex Class (Clase de Apex).
  2. Ingrese NewAccounts para el nombre de la clase.
  3. Haga clic en Aceptar.
  4. Sustituya el código predeterminado con este código:
    public class NewAccounts {
        public static void sObjectsInsert(){
            Account store = new Account();
            store.Name = 'The Tea Factory';
            store.AccountNumber = '356281';
            store.Phone = '555-0158';
            insert store;
        }
    }
  5. Haga clic en File (Archivo) | Save (Guardar).

Ahora tiene una clase NewAccounts que crea un nuevo registro y establece sus propiedades. La clase también utiliza la instrucción insert para agregar el registro de la nueva cuenta a la base de datos. ¡Es hora de ejecutar su código!

Ejecutar el código

  1. Haga clic en Debug (Depurar) | Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
  2. En la ventana Enter Apex Code (Ingresar código de Apex), pegue este código:
    NewAccounts.sObjectsInsert();
  3. Haga clic en la casilla Open Log (Abrir registro) y haga clic en Execute (Ejecutar).
  4. Desde el Iniciador de aplicación, encuentre y seleccione Cuentas. Aparecerá The Tea Factory en la lista de cuentas. (Si no ve The Tea Factory, actualice la página).
    En la página Cuentas, The Tea Factory se muestra bajo Cuentas vistas recientemente.
  5. Haga clic en The Tea Factory.
  6. Haga clic en Detalles. Observe que los campos Nombre de cuenta, Teléfono y Número de cuenta muestran los valores que establece como propiedades de sObject en la clase NewAccounts.

Utilizar un bucle para crear múltiples registros

Agregar cuentas una por una no es muy práctico. Normalmente, crea muchas cuentas al mismo tiempo importando o actualizando registros.

Podría agregar múltiples registros del mismo modo que agregamos un registro en el ejemplo anterior, pero tendría que repetir el código para cada registro de esta manera:

Account store1 = new Account();
Account store2 = new Account();
store1.Name = 'The Tea Factory 1';
store1.AccountNumber = '356281';
store1.Phone = '555-0158';
store2.Name = 'The Tea Factory 2';
store2.AccountNumber = '356282';
store2.Phone = '555-4012';
insert store1;
insert store2;

En Fundamentos de Apex para administradores aprendió sobre los bucles y las listas. Aquí tiene una oportunidad de utilizar esos conceptos. Empleando un bucle while y una lista, puede crear muchos registros a la vez, y agregar todos ellos a su base de datos. Es como utilizar el Cargador de datos para cargar un archivo .csv que incluye tres registros e insertarlos en la base de datos.

Escribir el método

  1. Vuelva a la clase NewAccounts en Developer Console.
  2. Sustituya el código existente por este código:
      public class NewAccounts {
        public static void sObjectsInsert(Integer value){
            Integer counter = 1;
            //create a list to add our accounts
            List<Account> teaFactoryAccounts = new List<Account>();
            while(counter <= value){
                //display the current counter value
                System.debug('Counter Value before Incrementing ' + counter);
                //create a new account
                Account store = new Account();
                store.Name = 'The Tea Factory ' + counter;
                store.AccountNumber = '35629' + counter;
                teaFactoryAccounts.add(store);
                System.debug(teaFactoryAccounts);
                //increment the counter
                counter = counter + 1;
                System.debug('Counter Value after incrementing ' + counter);
            }
            System.debug('Size of Account List: ' + teaFactoryAccounts.size() );
            System.debug('Elements in Account List: ' + teaFactoryAccounts);
            //insert all of the accounts in the list
            insert teaFactoryAccounts;
        }
    }
  3. Haga clic en File (Archivo) | Save (Guardar).

Ejecute el método.

  1. Haga clic en Debug (Depurar) | Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
  2. En la ventana Enter Apex Code (Ingresar código de Apex), pegue este código:
    NewAccounts.sObjectsInsert(3);
  3. Seleccione Open Log (Abrir registro) y, a continuación, haga clic en Execute (Ejecutar). La ventana del registro se abre.
  4. Seleccione Debug Only (Solo depurar).

La última entrada del registro muestra que el código creó tres cuentas con un nombre y un número de cuenta para cada cuenta:

The Tea Factory 1, 356291

The Tea Factory 2, 356292

The Tea Factory 3, 356293

La lista teaFactoryAccounts creada en la línea 5 tiene este aspecto:

Un espacio subdividido en tres espacios con una cuenta en cada espacio. Espacio 1: Name = The Tea Factory 1, AccountNumber = 356291. Espacio 2: Name = The Tea Factory 2, AccountNumber = 356292. Espacio 3: Name = The Tea Factory 3, AccountNumber = 356293.

Cada vez que el valor de la variable de conteo se incrementa, se crea un sObject en la siguiente apertura de index (posición) en la lista.

Vuelva a la lista Cuentas en su organización de Trailhead Playground y haga clic en Cuentas. Los tres restaurantes que insertó se incluyen en la lista Cuentas.

Revisar el código del bucle

Examine el código del bucle while. Instancia un nuevo sObject de Cuenta denominado store. A continuación el bucle establece el nombre 'The Tea Factory'. Para diferenciar los registros de cuentas, agrega el valor de conteo actual al final de la cadena store.Name durante cada iteración del bucle.

Después de establecer las propiedades, teaFactoryAccounts.add agrega un sObject store a la lista teaFactoryAccounts durante cada iteración del bucle while, hasta que se cumple la condición del bucle cuando el valor es superior o igual al contador.

Nota

No olvide incrementar el contador en el bucle while. Si nuestro código de ejemplo no agregara continuamente uno del contador, la condición nunca se cumpliría. El bucle while seguiría agregando registro hasta que se alcanzara el límite de tiempo establecido por Salesforce.

Cuando se cumple la condición, el bucle while finaliza y la última línea inserta la lista teaFactoryAccounts en la base de datos a la vez.

¿Por qué toda a la vez? Debido a que los recursos son limitados, puede utilizar la instrucción insert en su código solo 150 veces. Si lo hace con los registros uno por uno, puede insertar un total de 150 registro. Pero si cada instrucción insert inserta 10 registros, el total aumenta a 1.500 registros. Insertar múltiples objetos a la vez ayuda con la masificación (combinar tareas repetitivas redactando código eficiente). Al principio estará insertando un máximo de 10 registros a la vez. Pero a medida que crezca su aplicación, podría estar insertando 200 registros a la vez. El uso de la masificación desde el principio prepara su aplicación para el crecimiento.

Recursos

¡Siga aprendiendo gratis!
Regístrese para obtener una cuenta y continuar.
¿Qué hay para usted?
  • Consiga recomendaciones personalizadas para sus objetivos profesionales
  • Practique sus aptitudes con retos prácticos y pruebas
  • Siga y comparta su progreso con empleadores
  • Póngase en contacto para recibir asesoramiento y oportunidades laborales