UNE-EN 15342:2008

UNE-N0040974

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> restClient.get("/c/traininginfos/?filter=r_trainingInfo_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items[0]  [in template "34352066712900#33336#null" at line 2, column 25]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign trainingInfo = restClient.get...  [in template "34352066712900#33336#null" at line 2, column 1]
----
1<#assign ns = "ns-" + stringUtil.randomId() /> 
2<#assign trainingInfo = restClient.get("/c/traininginfos/?filter=r_trainingInfo_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items[0]> 
3<#if trainingInfo.ficheroAsociado?? && trainingInfo.ficheroAsociado?has_content> 
4    <#assign isExternal = isUrl(trainingInfo.ficheroAsociado)> 
5    <#if isExternal> 
6        <#assign url = trainingInfo.ficheroAsociado> 
7    <#else> 
8        <#assign url = "/documents/d/global/${removeExtension(trainingInfo.ficheroAsociado)}?download=true"> 
9    </#if> 
10    <a id="${ns}-doc-link" href="${url}" data-check-url="${url}" data-external="${isExternal?c}" class="<#if isExternal>d-block<#else>d-none</#if>"> 
11        <button class="btn-outline-ae btnae-- btn-outline-ae--primary animated-button"> 
12            ${languageUtil.get(locale, "curso.descarga")} 
13        </button> 
14    </a> 
15</#if> 
16 
17<#function isUrl str> 
18    <#return (str?starts_with("http://") || str?starts_with("https://"))> 
19</#function> 
20 
21<#function removeExtension filename> 
22    <#if filename?contains(".")> 
23        <#return filename?substring(0, filename?last_index_of("."))> 
24    <#else> 
25        <#return filename> 
26    </#if> 
27</#function> 
28 
29 
30<script> 
31    (function() { 
32        const link = document.getElementById('${ns}-doc-link'); 
33        if (!link) return; 
34 
35        const isExternal = link.getAttribute('data-external') === 'true'; 
36        if (isExternal) { 
37            // URL externa: no se puede validar por CORS, se confía en el dato 
38            return; 
39        } 
40 
41        const url = link.getAttribute('data-check-url'); 
42        fetch(url, { method: 'HEAD' }) 
43            .then(response => { 
44                if (response.ok) { 
45                    link.classList.remove('d-none'); 
46                } 
47            }) 
48            .catch(() => { 
49                // URL no existe, mantener oculto 
50            }); 
51    })(); 
52</script> 
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> restClient.get("/c/traininginfos/?filter=r_trainingInfo_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items[0]  [in template "34352066712900#33336#null" at line 1, column 25]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign trainingInfo = restClient.get...  [in template "34352066712900#33336#null" at line 1, column 1]
----
1<#assign trainingInfo = restClient.get("/c/traininginfos/?filter=r_trainingInfo_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items[0]> 
2<#if trainingInfo.bonificable> 
3    <div class="bonus-link mt-4"> 
4        <a href="/formacion/bonificaciones">${languageUtil.get(locale, "curso.bonus")}</a> 
5    </div> 
6</#if> 
7 
8<style> 
9    .bonus-link a { 
10        font-family: "SohoGothicPro-Regular"; 
11        color: #fff; 
12        font-size: 1.1875rem; 
13        font-weight: 400; 
14        line-height: 1.5rem; 
15        text-align: left; 
16    } 
17</style> 
Actualmente no existen convocatorias próximas para este curso. Si estásinteresado/a en realizarlo, solicítanos información y te mantendremosinformado/a. Haz click en el botón naranja de "Más información"
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> restClient.get("/c/traininginfos/?filter=r_trainingInfo_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items[0]  [in template "34352066712900#33336#null" at line 1, column 25]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign trainingInfo = restClient.get...  [in template "34352066712900#33336#null" at line 1, column 1]
----
1<#assign trainingInfo = restClient.get("/c/traininginfos/?filter=r_trainingInfo_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items[0]> 
2<div id="trainingInfo" class="container"> 
3 
4	<#if CPDefinition_description.getData()?? && CPDefinition_description.getData()?has_content> 
5	  <div class="content-area"> 
6      ${CPDefinition_description.getData()} 
7    </div> 
8  </#if> 
9 
10  <#if trainingInfo.dirigidoa?? && trainingInfo.dirigidoa?has_content> 
11  <li class="custom-accordion-detail align-items-center d-flex flex-column accordion-entry w-100 "> 
12      <div class="align-items-center content-area d-flex justify-content-between m-0 row w-100"> 
13        <p class="col-11 m-0 text-neutral-10 accordion-title" data-target="accordion-body-1"> 
14          ${languageUtil.get(locale, "curso.dirigido-a")} 
15        </p> 
16     
17        <div class="col-1 custom-icon plus-icon px-0" data-target="accordion-body-1"> 
18          <@clay["icon"] symbol="angle-down"/> 
19        </div> 
20     
21        <div class="col-1 custom-icon minus-icon px-0 d-none" data-target="accordion-body-1"> 
22          <@clay["icon"] symbol="angle-up"/> 
23        </div> 
24      </div> 
25     
26      <div class="accordion-body col-12 content-area text-neutral-8 w-100" id="accordion-body-1"> 
27        ${trainingInfo.dirigidoa} 
28      </div> 
29  </li> 
30  </#if> 
31 
32  <#if trainingInfo.promocionEspecial?? && trainingInfo.promocionEspecial?has_content> 
33  <li class="custom-accordion-detail align-items-center d-flex flex-column accordion-entry w-100 "> 
34      <div class="align-items-center content-area d-flex justify-content-between m-0 row w-100"> 
35        <p class="col-11 m-0 text-neutral-10 accordion-title" data-target="accordion-body-2"> 
36          ${languageUtil.get(locale, "curso.promocionEspecial")} 
37        </p> 
38     
39        <div class="col-1 custom-icon plus-icon px-0" data-target="accordion-body-2"> 
40          <@clay["icon"] symbol="angle-down"/> 
41        </div> 
42     
43        <div class="col-1 custom-icon minus-icon px-0 d-none" data-target="accordion-body-2"> 
44          <@clay["icon"] symbol="angle-up"/> 
45        </div> 
46      </div> 
47     
48      <div class="accordion-body col-12 content-area text-neutral-8 w-100" id="accordion-body-2"> 
49        ${trainingInfo.promocionEspecial} 
50      </div> 
51  </li> 
52  </#if> 
53 
54  <#if trainingInfo.objetivos?? && trainingInfo.objetivos?has_content> 
55  <li class="custom-accordion-detail align-items-center d-flex flex-column accordion-entry w-100 "> 
56      <div class="align-items-center content-area d-flex justify-content-between m-0 row w-100"> 
57        <p class="col-11 m-0 text-neutral-10 accordion-title" data-target="accordion-body-3"> 
58          ${languageUtil.get(locale, "curso.objetivos")} 
59        </p> 
60     
61        <div class="col-1 custom-icon plus-icon px-0" data-target="accordion-body-3"> 
62          <@clay["icon"] symbol="angle-down"/> 
63        </div> 
64     
65        <div class="col-1 custom-icon minus-icon px-0 d-none" data-target="accordion-body-3"> 
66          <@clay["icon"] symbol="angle-up"/> 
67        </div> 
68      </div> 
69     
70      <div class="accordion-body col-12 content-area text-neutral-8 w-100" id="accordion-body-3"> 
71        ${trainingInfo.objetivos} 
72      </div> 
73  </li> 
74  </#if> 
75 
76  <#if trainingInfo.contenido?? && trainingInfo.contenido?has_content> 
77  <li class="custom-accordion-detail align-items-center d-flex flex-column accordion-entry w-100 "> 
78      <div class="align-items-center content-area d-flex justify-content-between m-0 row w-100"> 
79        <p class="col-11 m-0 text-neutral-10 accordion-title" data-target="accordion-body-4"> 
80          ${languageUtil.get(locale, "curso.contenido")} 
81        </p> 
82     
83        <div class="col-1 custom-icon plus-icon px-0" data-target="accordion-body-4"> 
84          <@clay["icon"] symbol="angle-down"/> 
85        </div> 
86     
87        <div class="col-1 custom-icon minus-icon px-0 d-none" data-target="accordion-body-4"> 
88          <@clay["icon"] symbol="angle-up"/> 
89        </div> 
90      </div> 
91     
92      <div class="accordion-body col-12 content-area text-neutral-8 w-100" id="accordion-body-4"> 
93        ${trainingInfo.contenido} 
94      </div> 
95  </li> 
96  </#if> 
97 
98    <#if trainingInfo.requisitos?? && trainingInfo.requisitos?has_content> 
99  <li class="custom-accordion-detail align-items-center d-flex flex-column accordion-entry w-100 "> 
100      <div class="align-items-center content-area d-flex justify-content-between m-0 row w-100"> 
101        <p class="col-11 m-0 text-neutral-10 accordion-title" data-target="accordion-body-5"> 
102          ${languageUtil.get(locale, "curso.requisitos")} 
103        </p> 
104     
105        <div class="col-1 custom-icon plus-icon px-0" data-target="accordion-body-5"> 
106          <@clay["icon"] symbol="angle-down"/> 
107        </div> 
108     
109        <div class="col-1 custom-icon minus-icon px-0 d-none" data-target="accordion-body-5"> 
110          <@clay["icon"] symbol="angle-up"/> 
111        </div> 
112      </div> 
113     
114      <div class="accordion-body col-12 content-area text-neutral-8 w-100" id="accordion-body-5"> 
115        ${trainingInfo.requisitos} 
116      </div> 
117  </li> 
118  </#if> 
119 
120    <#if trainingInfo.reconocimientos?? && trainingInfo.reconocimientos?has_content> 
121  <li class="custom-accordion-detail align-items-center d-flex flex-column accordion-entry w-100 "> 
122      <div class="align-items-center content-area d-flex justify-content-between m-0 row w-100"> 
123        <p class="col-11 m-0 text-neutral-10 accordion-title" data-target="accordion-body-6"> 
124          ${languageUtil.get(locale, "curso.reconocimientos")} 
125        </p> 
126     
127        <div class="col-1 custom-icon plus-icon px-0" data-target="accordion-body-6"> 
128          <@clay["icon"] symbol="angle-down"/> 
129        </div> 
130     
131        <div class="col-1 custom-icon minus-icon px-0 d-none" data-target="accordion-body-6"> 
132          <@clay["icon"] symbol="angle-up"/> 
133        </div> 
134      </div> 
135     
136      <div class="accordion-body col-12 content-area text-neutral-8 w-100" id="accordion-body-6"> 
137        ${trainingInfo.reconocimientos} 
138      </div> 
139  </li> 
140  </#if> 
141 
142    <#if trainingInfo.colaboraciones?? && trainingInfo.colaboraciones?has_content> 
143  <li class="custom-accordion-detail align-items-center d-flex flex-column accordion-entry w-100 "> 
144      <div class="align-items-center content-area d-flex justify-content-between m-0 row w-100"> 
145        <p class="col-11 m-0 text-neutral-10 accordion-title" data-target="accordion-body-7"> 
146          ${languageUtil.get(locale, "curso.colaboraciones")} 
147        </p> 
148     
149        <div class="col-1 custom-icon plus-icon px-0" data-target="accordion-body-7"> 
150          <@clay["icon"] symbol="angle-down"/> 
151        </div> 
152     
153        <div class="col-1 custom-icon minus-icon px-0 d-none" data-target="accordion-body-7"> 
154          <@clay["icon"] symbol="angle-up"/> 
155        </div> 
156      </div> 
157     
158      <div class="accordion-body col-12 content-area text-neutral-8 w-100" id="accordion-body-7"> 
159        ${trainingInfo.colaboraciones} 
160      </div> 
161  </li> 
162  </#if> 
163</div> 
164 
165<script> 
166$(document).ready(function () { 
167  $(".accordion-title, .custom-icon").on("click", function () { 
168    const targetId = $(this).data("target"); 
169      toggleAccordion(targetId); 
170  }); 
171 
172  function toggleAccordion(targetId) { 
173    const $body = $("#" + targetId); 
174    const $plusIcon = $(".plus-icon[data-target=" + targetId + "]"); 
175    const $minusIcon = $(".minus-icon[data-target=" + targetId + "]"); 
176    const $title = $(".accordion-title[data-target=" + targetId + "]"); 
177 
178    $plusIcon.toggleClass("d-none"); 
179    $minusIcon.toggleClass("d-none"); 
180    $body.toggleClass("toggle-styles"); 
181  } 
182}); 
183</script> 
184 
185<style> 
186.content-area div { 
187    font-family: 'SohoGothicPro-Regular' !important; 
188    font-size: 16px !important; 
189    font-weight: 400 !important; 
190    line-height: 24px !important; 
191    color: #2D2D2B !important; 
192} 
193 
194.content-area span { 
195    font-family: 'SohoGothicPro-Regular' !important; 
196    font-size: 16px !important; 
197    font-weight: 400 !important; 
198    line-height: 24px !important; 
199    color: #2D2D2B !important; 
200} 
201 
202div > .lfr-layout-structure-item-accordion-faq-block--copy- { 
203	border-top: 1px solid #DDE1E6; 
204} 
205div > .lfr-layout-structure-item-accordion-faq-block--copy- ~ .lfr-layout-structure-item-accordion-faq-block--copy- { 
206 border-top: none;    
207} 
208 
209.custom-accordion-detail.accordion-entry{ 
210	/*max-width: 900px; */ 
211	padding:40px 0 16px; 
212	border-bottom: 1px solid #DDE1E6; 
213} 
214.custom-accordion-detail .accordion-body { 
215		max-height: 0;  
216		overflow: hidden; 
217		transition: max-height 0.2s ease-out; 
218		font-family: SohoGothicPro-Regular; 
219		font-size: 16px; 
220		font-weight: 400; 
221		line-height: 24px; 
222		text-align: left; 
223		color: #2D2D2B; 
224}	   
225.custom-accordion-detail .custom-icon { 
226		cursor: pointer; 
227		height: 24px !important; 
228		width: 24px !important; 
229	  text-align: end; 
230} 
231.custom-accordion-detail .accordion-title{ 
232		padding-left: 0; 
233		font-family: SohoStd-Medium; 
234		font-size: 20px; 
235		font-weight: 400; 
236		line-height: 26px; 
237		text-align: left; 
238		color: var(--brand-color-1, #1F57A3); 
239} 
240.custom-accordion-detail .text-primary { 
241	color: var(--brand-color-1, #1F57A3) !important; 
242} 
243.custom-accordion-detail .toggle-styles{  
244  padding: 24px 0 14px; 
245  max-height: none !important; 
246} 
247.custom-accordion-detail .lexicon-icon { 
248  color: #3CB4E5; 
249	font-size: 20px; 
250} 
251.custom-accordion-detail .accordion-body ul{ 
252  list-style: none; 
253  padding-left: 0; 
254} 
255.custom-accordion-detail .accordion-body ul li{  
256display: flex; 
257}	 
258.custom-accordion-detail .accordion-body ul li:before{ 
259  content: "\f0c8"; 
260  color: var(--brand-color-1, #1F57A3); 
261  font-size: 10px; 
262  padding-right: 8px; 
263  font-weight: 900; 
264	font-family: 'Font Awesome 6 Free'; 
265} 
266.custom-accordion-detail .accordion-body ul li:not(:first-child) { 
267  margin-top: 8px; 
268} 
269</style> 
AENOR Logo

Próximas convocatorias

Actualmente no existen convocatorias próximas para este curso. Si estásinteresado/a en realizarlo, solicítanos información y te mantendremosinformado/a. Haz click en el botón naranja de "Más información"

PREGUNTAS FRECUENTES

¿Tienes alguna duda sobre nuestros cursos?

  • ¿Cómo me matriculo en un curso de AENOR?

    Inscribirte en un curso de AENOR es muy fácil. Solo tienes que seguir estos pasos:

    1. Elige el curso que más te interesa
    2. Dentro de la página del curso, verás el cuadro con las diferentes modalidades y fechas de inicio
    3. Selecciona la opción que mejor se adapte a ti y haz clic en "Reservar plaza"
    4. Se abrirá el formulario de preinscripción, donde deberás completar tus datos y, si eres responsable de formación de tu empresa, también los de los asistentes al curso.

    Y listo, ¡Ya estarás en camino para formarte con los mejores!

  • ¿Qué modalidades de formación ofrece AENOR?

    En AENOR sabemos que cada persona tiene necesidades diferentes, por eso ofrecemos cuatro modalidades de formación:

    •  Live Training (en directo/streaming): Formación en tiempo real con profesores expertos.
    • 100% Online: Aprende a tu ritmo con acceso a materiales y recursos digitales
    • Presencial: Formación en nuestras instalaciones, con interacción directa con docentes y compañeros.
    • Formación a medida para empresas: Diseñamos cursos personalizados para equipos, adaptándonos a sus necesidades y en sus propias instalaciones. 

    Dentro de cada curso, en el cuadro de convocatorias, podrás ver qué modalidades están disponibles para esa formación.

  • ¿Los cursos de AENOR son bonificables?

    Sí, casi todos los cursos AENOR pueden bonificarse a través del sistema de la Fundación Estatal para la Formación en el Empleo (FUNDAE), siempre que se cumplan los requisitos de la Ley 30/2015 y el Real Decreto 694/2017.

    Además, te lo ponemos fácil: en AENOR gestionamos sin coste adicional la bonificación, para que tu empresa pueda aprovechar el crédito de formación disponible. Solo tienes que solicitarlo durante el proceso de inscripción.

    Para más información, consulta nuestra sección de Cursos Bonificados AENOR.

  • ¿Cuándo recibiré mi certificado?

    Una vez finalices el curso, podrás descargar tu certificado directamente desde nuestro Campus Virtual.

    Si has realizado una formación con examen para la obtención de la Titulación Propia de AENOR, el certificado y la titulación estarán disponibles tras verificar que has superado la evalución final.

  • ¿Puedo inscribir a varios trabajadores en un curso?

    ¡Por supuesto! Si eres empresa y quieres inscribir a varios empleados en un curso, puedes hacerlo en un solo proceso de inscripción:

    1. Al iniciar el registro, selecciona la opción "Soy una empresa".
    2. Rellena los datos de la empresa y de la persona responsable.
    3. Acepta el Contrato de Encargado del Tratamiento.
    4. En la sección "Añadir alumnado", introduce los datos de todos los trabajadores de tu empresa que participarán en la formación.

    Beneficio extra: Si inscribes a más de un trabajador en la misma convocatoria, tu empresa recibirá un 15% de descuento a partir de la segunda inscripción.