{"id":1013,"date":"2026-01-28T12:47:58","date_gmt":"2026-01-28T12:47:58","guid":{"rendered":"https:\/\/l0090901.ferozo.com\/?p=1013"},"modified":"2026-01-28T12:58:11","modified_gmt":"2026-01-28T12:58:11","slug":"bc-a-todo-level","status":"publish","type":"post","link":"https:\/\/exia.com.ar\/en\/bc-a-todo-level\/","title":{"rendered":"Before Christ, at all levels."},"content":{"rendered":"<h1 class=\"wp-block-heading\"><\/h1>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/l0090901.ferozo.com\/wp-content\/uploads\/2026\/01\/bc-a-todo-level.webp\"><img fetchpriority=\"high\" decoding=\"async\" width=\"950\" height=\"550\" src=\"https:\/\/l0090901.ferozo.com\/wp-content\/uploads\/2026\/01\/bc-a-todo-level.webp\" alt=\"\" class=\"wp-image-1019\" srcset=\"https:\/\/exia.com.ar\/wp-content\/uploads\/2026\/01\/bc-a-todo-level.webp 950w, https:\/\/exia.com.ar\/wp-content\/uploads\/2026\/01\/bc-a-todo-level-300x174.webp 300w, https:\/\/exia.com.ar\/wp-content\/uploads\/2026\/01\/bc-a-todo-level-768x445.webp 768w\" sizes=\"(max-width: 950px) 100vw, 950px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Gerardo Taque | Desarrollador GeneXus \u00b7 Software y Desarrollo \u00b7 26\/11\/2025<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podr\u00eda describir la sensaci\u00f3n frente a cada etapa de mi experiencia con Business Component.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 Una primera, de verlo aplicado como si de una inteligencia superior o alien\u00edgena se tratara, con una complejidad no apta para un mortal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 Una segunda, donde me v\u00ed obligado a utlizarlo (para generar apps offline), aunque confieso, hice algunas investigaciones previas por si a caso ten\u00eda un camino alternativo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 Una tercera, donde comenc\u00e9 a aplicarlo atravesando esa curva de aprendizaje, que no result\u00f3 ser aquella inalcanzable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 Y una cuarta y actual, donde pienso&#8230; \u00bfpor qu\u00e9 no lo utilic\u00e9 desde antes? \ud83d\ude02<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El <strong>BC (Business Component)<\/strong>, tiene muchas ventajas, pero por lo pronto, y de uso m\u00e1s pr\u00e1ctico y beneficioso, perm\u00edtanme describir al que dedico generalmente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para definir un BC, nada mas hace falta activarlo en las propiedades de una TRN.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f Ojo: al establecer la TRN como BC, las referencias particulares de WEB, van a producir error, como por ejemplo: <em>attributoTal.visible=true<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para esto hay 2 soluciones, si la TRN contiene mucha acci\u00f3n en WEB, yo hago un Save As&#8230; de la TRN&#8230; con nombre: <em>miTRN_BC<\/em> y en esta \u00faltima quito todo lo que sea acci\u00f3n web.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La otra soluci\u00f3n es integrar todo lo que es web dentro de secci\u00f3n WEB{}&#8230; (no importa ahora&#8230;)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bien, \u00bfen qu\u00e9 aplico SIEMPRE BC? En ABMs \u2714\ufe0f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Yendo al caso m\u00e1s simple, mas com\u00fan: Lo que antes era New&#8230; For Each tanto para modificar como para eliminar&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfPor qu\u00e9? \u00a1Por practicidad y por sobre todo, por tener un mayor control y conocimiento sobre lo que sucede!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cu\u00e1ntas horas perdidas, buscando dentro de c\u00f3digo, propiedades en objetos, rompiendo algunos que estaban bien \ud83d\ude02 porque al intentar, por ejemplo, insertar con New, no se guardaba el registro \ud83d\ude2d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin dudas, fu\u00e9 mayor el tiempo de esa investigaci\u00f3n que la curva de aprendizaje BC<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Business Component es as\u00ed:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ej.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Trn: Cliente (marco en sus propoiedades BC=true)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">* ClienteID (autonumerado)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>* ClienteNom<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>proc: insCliente<\/em> (procedure inserta cliente)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rules<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">parm( in: &amp;ClienteNom, out: &amp;messages)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/la variable <em>&amp;messages<\/em> es del tipo: <em>Messages, GeneXus.Common<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Source<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&amp;Cliente = new() (variable del tipo BC Cliente, si no inicializamos reservando espacio en memoria, los datos no van a existir, no van a estar disponibles al intentar guardar)<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&amp;Cliente.ClienteNom = &amp;clienteNom<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\/\/clienteId es autonumerado&#8230;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&amp;<\/em><a href=\"http:\/\/Cliente.Save\"><em>Cliente.Save<\/em><\/a><em>()<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\/\/y a continuaci\u00f3n, lo mejor&#8230;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>If &amp;Cliente.Succes()<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>commit<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>else<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>rollBack<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&amp;messages = &amp;Cliente.GetMessages()<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>endif<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora cuando llamamos al proc insCliente, vamos a saber si el proceso se realiz\u00f3 correctamente o en caso contrario sabremos la causa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ej:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>&amp;messages = insCliente(\u00abEstevan\u00bb)<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>if &amp;messages.Count() = 0<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\/\/ok<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>else<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>for &amp;unMensaje in &amp;messages<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>msg(&amp;unMensaje)<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\/\/Aqui aparecer\u00e1n mensajes como: \u00abNo se pudo insertar por tal motivo&#8230;\u00bb<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>endfor<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>endif<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Luego tenemos el update, delete; donde utilizaremos la misma l\u00f3gica para conocer que sucedi\u00f3:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UPD:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>&amp;Cliente.Load(&amp;clienteID) \/\/al igual que en un for each, buscamos por su clave y ya queda cargado el BC como si fuera una TRN en pantalla<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&amp;Cliente.clienteNom = &amp;NuevoNombre<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&amp;<\/em><a href=\"http:\/\/Cliente.Save\"><em>Cliente.Save<\/em><\/a><em>()<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>If &amp;Cliente.Succes()&#8230;&#8230;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>DLT:<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&amp;Cliente.Load(&amp;clienteID)<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>&amp;Cliente.Delete()<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>If &amp;Cliente.Succes()&#8230;&#8230;<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Luego se entiende que la misma l\u00f3gica simple y b\u00e1sica se repite \u2714\ufe0f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>Gerardo Taque | Desarrollador GeneXus \u00b7 Software y Desarrollo \u00b7 26\/11\/2025 Podr\u00eda describir la sensaci\u00f3n frente a cada etapa de mi experiencia con Business Component. \ud83d\udc49 Una primera, de verlo aplicado como si de una inteligencia superior o alien\u00edgena se tratara, con una complejidad no apta para un mortal. \ud83d\udc49 Una segunda, donde me v\u00ed [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1019,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1013","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categoria"],"_links":{"self":[{"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/posts\/1013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/comments?post=1013"}],"version-history":[{"count":2,"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/posts\/1013\/revisions"}],"predecessor-version":[{"id":1021,"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/posts\/1013\/revisions\/1021"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/media\/1019"}],"wp:attachment":[{"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/media?parent=1013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/categories?post=1013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/exia.com.ar\/en\/wp-json\/wp\/v2\/tags?post=1013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}