Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> estandarCompetencia.Competencia_profesional  [in template "20155#20195#21808572" at line 268, column 97]

----
Tip: It's the step after the last dot 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: ${estandarCompetencia.Competencia_pro...  [in template "20155#20195#21808572" at line 268, column 95]
----
1<#assign liferay_ui = PortletJspTagLibs["/META-INF/liferay-ui.tld"] /> 
2 
3 
4<#assign configuracion> 
5
6
7		id:"ECP", 
8		nombre:"ECP", 
9		relacionados:"EC,TFP,CP,CE,RN_P,RN_A,RN_S,EQ_UC,Ocupacion", 
10		idIntercambio:"550", 
11		clasificacion:"Familia_Profesional,Nivel,Vigencia,Estado,Situación_ECP", 
12		estructura:"true" 
13	}, 
14
15		id:"EC", 
16		nombre:"EC", 
17		relacionados:"", 
18		idIntercambio:"551", 
19		clasificacion:"", 
20		estructura:"true" 
21	}, 
22
23		id:"TFP", 
24		nombre:"TFP", 
25		relacionados:"", 
26		idIntercambio:"506", 
27		clasificacion:"", 
28		estructura:"true" 
29	}, 
30
31		id:"CP", 
32		nombre:"CP", 
33		relacionados:"", 
34		idIntercambio:"507", 
35		clasificacion:"", 
36		estructura:"true" 
37	}, 
38
39		id:"CE", 
40		nombre:"CE", 
41		relacionados:"", 
42		idIntercambio:"527", 
43		clasificacion:"", 
44		estructura:"true" 
45	}, 
46
47		id:"RN_P", 
48		nombre:"RN_P", 
49		relacionados:"", 
50		idIntercambio:"510", 
51		clasificacion:"", 
52		estructura:"true" 
53	}, 
54
55		id:"RN_A", 
56		nombre:"RN_A", 
57		relacionados:"", 
58		idIntercambio:"511", 
59		clasificacion:"", 
60		estructura:"true" 
61	}, 
62
63		id:"RN_S", 
64		nombre:"RN_S", 
65		relacionados:"", 
66		idIntercambio:"513", 
67		clasificacion:"", 
68		estructura:"true" 
69	}, 
70
71		id:"EQ_UC", 
72		nombre:"EQ_UC", 
73		relacionados:"", 
74		idIntercambio:"514", 
75		clasificacion:"", 
76		estructura:"true" 
77	}, 
78
79		id:"Ocupacion", 
80		nombre:"Ocupacion", 
81		relacionados:"SISPE,CNO", 
82		idIntercambio:"552", 
83		clasificacion:"", 
84		estructura:"true" 
85	}, 
86
87		id:"CNO", 
88		nombre:"CNO", 
89		relacionados:"", 
90		idIntercambio:"505", 
91		clasificacion:"", 
92		estructura:"true" 
93	}, 
94
95		id:"SISPE", 
96		nombre:"SISPE", 
97		relacionados:"", 
98		idIntercambio:"504", 
99		clasificacion:"", 
100		estructura:"true" 
101	}, 
102
103		id:"Familia_Profesional", 
104		nombre:"Familia_Profesional", 
105		idIntercambio:"350", 
106		modo:"" 
107	}, 
108
109		id:"Nivel", 
110		nombre:"Nivel", 
111		idIntercambio:"351", 
112    modo: "" 
113	}, 
114
115		id:"Vigencia", 
116		nombre:"Vigencia", 
117		idIntercambio:"355", 
118    modo: "" 
119	}, 
120
121		id:"Estado", 
122		nombre:"Estado", 
123		idIntercambio:"430", 
124		modo:"" 
125	}, 
126
127		id:"Situacion_ECP", 
128		nombre:"Situacion_ECP", 
129		idIntercambio:"361", 
130		modo:"" 
131
132
133</#assign> 
134 
135 
136<#assign incualAssetService = serviceLocator.findService("es.gob.educacion.incual.service.IncualAssetLocalService")/> 
137<#assign intercambioService = serviceLocator.findService("es.gob.educacion.incual.service.IntercambioLocalService")/> 
138<#assign assetEntryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/> 
139<#assign assetCategoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService")/> 
140<#assign assetCategoryRelService = serviceLocator.findService("com.liferay.asset.entry.rel.service.AssetEntryAssetCategoryRelLocalService")/> 
141<#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/> 
142<#assign dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")/> 
143 
144<#assign portlet_id = themeDisplay.getPortletDisplay().getId()> 
145<#assign portletObjetivoId = renderRequest.preferences.getValue('idPortletObjetivo','') /> 
146 
147<#assign sinContenidosHTML = "<p class=\"INC_sinContenido\">Sin contenidos relacionados</p>" /> 
148 
149<#list entries as entry> 
150	 
151	<#assign entry = entry /> 
152	<#assign assetRenderer = entry.getAssetRenderer() /> 
153	<#assign entryTitle = htmlUtil.escape(assetRenderer.getTitle(locale)) /> 
154	<#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) />	 
155	<#assign estandarCompetencia = incualAssetService.obtenerValoresAssetTotal(entry, themeDisplay, configuracion) />	 
156 
157    <div class="asset-abstract d-flex justify-content-between"> 
158        <div class="INC_DetalleTitulo"> 
159            <@getBackIcon/><h1>Estándar profesional</h1> 
160        </div> 
161        <div class="lfr-meta-actions asset-actions mb-3 p-0"> 
162			<@getPrintIcon /> 
163            <@getFlagsIcon />							 
164            <#attempt> 
165							<@getEditIcon /> 
166				    <#recover> 
167				    Link de edición no disponible 
168				   </#attempt> 
169				</div> 
170    </div>     
171    <div class="asset-content"> 
172        <div class="INC_fila"> 
173            <div class="INC_columna60"> 
174                <div class="asset-summary"> 
175                    <div class="Identificacion"> 
176                        <b>Código: </b>${estandarCompetencia.Codigo.data}<br> 
177                        <b>Nombre: </b>${estandarCompetencia.Nombre.data}<br> 
178                    </div> 
179                    <div class="clasificacion"> 
180                        <#if (estandarCompetencia.clasificaciones.Familia_Profesional) ?? && (estandarCompetencia.clasificaciones.Familia_Profesional?size > 0)> 
181                            <div> 
182                                <span class="asset-vocabulary-title d-block">Familia Profesional:</span>  
183                                <#assign vocId = intercambioService.obtenerIntercambio(350)/> 
184															  <#assign categoriasRel = assetCategoryRelService.getAssetEntryAssetCategoryRelsByAssetEntryId(entry.getEntryId())/> 
185								                <#list categoriasRel as rel> 
186									                  <#assign categoria = assetCategoryService.getAssetCategory(rel.getAssetCategoryId())/> 
187									                  <#if categoria.getVocabularyId() == vocId.idDevuelto> 
188										                    <#list categoria.getAncestors() as catPadre> 
189											                      ${catPadre.getTitle(locale)} &raquo; 
190										                    </#list> 
191										                    ${categoria.getTitle(locale)} 
192									                  </#if> 
193								                </#list> 
194                            </div> 
195                        </#if>						 
196 
197                        <#if (estandarCompetencia.clasificaciones.Nivel) ?? && (estandarCompetencia.clasificaciones.Nivel?size > 0)> 
198                            <div> 
199                                <span class="asset-vocabulary-title">Nivel:</span> ${estandarCompetencia.clasificaciones.Nivel[0]} 
200                            </div> 
201                        </#if> 
202                        <#if (estandarCompetencia.clasificaciones.Vigencia) ?? && (estandarCompetencia.clasificaciones.Vigencia?size > 0)> 
203                            <div> 
204                                <span class="asset-vocabulary-title">Vigencia:</span> ${estandarCompetencia.clasificaciones.Vigencia[0]} 
205                            </div> 
206                        </#if> 
207                        <#if (estandarCompetencia.clasificaciones.Estado) ?? && (estandarCompetencia.clasificaciones.Estado?size > 0)>						 
208                            <div>							 
209                                <span class="asset-vocabulary-title">Estado:</span> ${estandarCompetencia.clasificaciones.Estado[0]} 
210                            </div> 
211                        </#if> 
212                        </div> 
213						<div class="INC_referenciasNormativas"> 
214 
215							<#assign rnp = 0 rna = 0 rns = 0 equc = 0/> 
216 
217							<#if estandarCompetencia.RN_P ??> 
218								<#assign rnp = estandarCompetencia.RN_P?size /> 
219							</#if> 
220							<#if estandarCompetencia.RN_A ??> 
221								<#assign rna = estandarCompetencia.RN_A?size /> 
222							</#if>								 
223							<#if estandarCompetencia.RN_S ??> 
224								<#assign rns = estandarCompetencia.RN_S?size />								 
225							</#if> 
226							<#if estandarCompetencia.EQ_UC ??> 
227								<#assign equc = estandarCompetencia.EQ_UC?size /> 
228							</#if> 
229 
230							<#if rnp + rna + rns + equc gt 0> 
231								<div class="Referencias_Normativas_Titulo"><p class="INC_N1">Referencias normativas</p></div> 
232								<#if rnp gt 0> 
233									<span class="INC_referenciasNormativas_Subtitulo">Publicación: </span> 
234									<div class="INC_referenciasNormativas_Publicacion mb-3"> 
235										<#list estandarCompetencia.RN_P as ref>										 
236											<a href="${ref.Enlace.data}" target="_blank" title="Ir a la web del BOE. Abre en ventana nueva." class="INC_enlaceExterno">${ref.Texto.data}</a> 
237										</#list> 
238									</div> 
239								</#if> 
240								<#if rna gt 0> 
241									<span class="INC_referenciasNormativas_Subtitulo">Normativa: </span> 
242									<div class="INC_INC_referenciasNormativas_Actualizacion mb-3"> 
243										<#list estandarCompetencia.RN_A as ref>										 
244											<a href="${ref.Enlace.data}" target="_blank" title="Ir a la web del BOE. Abre en ventana nueva." class="INC_enlaceExterno">${ref.Texto.data}</a> 
245										</#list> 
246									</div> 
247								</#if> 
248								<#if rns gt 0> 
249									<span class="INC_referenciasNormativas_Subtitulo">SUPRIMIDA: </span> 
250									<div class="INC_referenciasNormativas_Publicacion mb-3"> 
251										<#list estandarCompetencia.RN_S as ref>										 
252											<a href="${ref.Enlace.data}" target="_blank" title="Ir a la web del BOE. Abre en ventana nueva." class="INC_enlaceExterno">${ref.Texto.data}</a> 
253										</#list> 
254									</div> 
255								</#if> 
256								<#if equc gt 0> 
257									<span class="INC_referenciasNormativas_Subtitulo">Equivalencias UCs: </span> 
258									<div class="INC_referenciasNormativas_Publicacion mb-3"> 
259										<#list estandarCompetencia.EQ_UC_A as ref>										 
260											<a href="${ref.Enlace.data}" target="_blank" title="Ir a la web del BOE. Abre en ventana nueva." class="INC_enlaceExterno">${ref.Texto.data}</a> 
261										</#list> 
262									</div> 
263								</#if> 
264							</#if> 
265						</div>					 
266					<div class=""> 
267							<div class=""><p class="INC_N2">Competencia profesional:</p></div> 
268								<pre class="INC_formatoTexto">${estandarCompetencia.Competencia_profesional.data!""}</pre> 
269							</div> 
270						</div> 
271					</div>														 
272                    <div class="acordeon" id="inc-acord-resul"> 
273                        <div class="card"> 
274				                    <div class="card-header" id="inc-acord-resul-01"> 
275                                <a aria-controls="collsec-inc-acord-resul-01" class="INC_N1" aria-expanded="false" data-toggle="collapse" href="#collsec-inc-acord-resul-01" role="button"> 
276                                    Elementos de competencia 
277                                </a> 
278                            </div> 
279											</div> 
280                        <div id="collsec-inc-acord-resul-01" class="collapse" aria-labelledby="inc-acord-resul-01" data-parent="#inc-acord-resul" role="region"> 
281                            <div class="card-body INC_N1"> 
282                            <#if estandarCompetencia.EC ??> 
283																<#list estandarCompetencia.EC?map(c -> { "orden": c.Orden.data?number, "valor": c })?sort_by("orden")?map(c -> c.valor) as ec> 
284                                    <p class="INC_N1 mt-0">EC${ec.Orden.data} ${ec.Contenido.data}</p> 
285                                    <ul class="INC_list-circle"> 
286                                        <#list ec.CRFieldSet.siblings as ic> 
287																					<li><pre class="INC_formatoTexto">IC${ec.Orden.data}.${ic.CRFieldSetFieldSet.Numero.data}: ${ic.CRFieldSetFieldSet.Texto.data}</pre></li> 
288                                        </#list> 
289                                    </ul> 
290                                </#list> 
291                            </#if> 
292                        </div> 
293                    </div> 
294				</div> 
295		 
296                    <div class="Contexto_profesional"> 
297                        <div class="Contexto_profesional_Titulo"><p class="INC_N1">Contexto profesional:</p></div> 
298                        <div class="Medios_de_produccion"><p class="INC_N2">Ámbito Profesional:</p> 
299                            <pre class="INC_formatoTexto">${estandarCompetencia.Ambito_profesional.data!""}</pre> 
300                        </div> 
301                        <div class="Productos_y_resultados"><p class="INC_N2">Sectores productivos:</p> 
302                            <pre class="INC_formatoTexto">${estandarCompetencia.Sectores_productivos.data!""}</pre> 
303                        </div> 
304                        <div class="Informacion_utilizada"><p class="INC_N2">Información utilizada o generada:</p> 
305                            <pre class="INC_formatoTexto">${estandarCompetencia.Informacion_utilizada.data!""}</pre> 
306                        </div> 
307                    </div> 
308                </div> 
309				<div class="Ocupaciones"><p class="INC_N2">Ocupaciones y puestos de trabajo relevantes:</p> 
310					<ul> 
311					<#assign ocupaciones = []> 
312					<#if estandarCompetencia.Ocupacion ??  && estandarCompetencia.Ocupacion?has_content> 
313						<#list estandarCompetencia.Ocupacion?sort_by(['Nombre', 'data']) as ocupacion> 
314							<#if !ocupaciones?seq_contains(ocupacion.Nombre.data)> 
315								<#assign ocupaciones = ocupaciones + [ ocupacion.Nombre.data ]/> 
316							</#if> 
317						</#list> 
318					</#if>					 
319					<#list ocupaciones as ocupacion> 
320							<li>${ocupacion}</li> 
321					</#list> 
322					</ul> 
323            	</div> 
324        </div> 
325    </div> 
326</#list> 
327 
328<#macro getBackIcon> 
329    <#assign redirectURL = paramUtil.getString(portalUtil.getOriginalServletRequest(request), renderResponse.getNamespace() + "redirect") /> 
330	<#if redirectURL?has_content > 
331	    <a class="icon-circle-arrow-left previous-level" href="${redirectURL}" title="Atrás"> 
332	        <span class="helper-hidden-accessible">  </span> 
333	    </a> 
334	</#if> 
335</#macro> 
336 
337<#macro getNewIcon classTypeId = "" messageIcon = "" titleWindow = ""> 
338	<#assign className= "com.liferay.journal.model.JournalArticle"/> 
339	<#assign classNameId= 20109/> 
340	<#assign globalGroupId= 20195 /> 
341	<#assign refererPlid = themeDisplay.plid/> 
342	<#assign newAssetURL= incualAssetService.obtenerAnadirAssetURL(renderRequest, renderResponse, globalGroupId, className, classTypeId)!/> 
343		 
344	<#if newAssetURL?? && newAssetURL?has_content> 
345		${newAssetURL.setWindowState("pop_up")} 
346		<assign addPortletURLString= httpUtil.addParameter(addPortletURLString, "p_p_state", "pop_up")/>		 
347		<assign addPortletURLString= httpUtil.addParameter(newAssetURL.toString(), "refererPlid", refererPlid)/> 
348		<assign addPortletURLString= httpUtil.addParameter(addPortletURLString, "showHeader", "false")/> 
349		<assign addPortletURLString= httpUtil.addParameter(addPortletURLString, "groupId", themeDisplay.siteGroupId)/> 
350		<assign addPortletURLString= httpUtil.addParameter(addPortletURLString, "doAsGroupId", globalGroupId)/>		 
351	</#if> 
352	 
353	<#if newAssetURL?? && newAssetURL?has_content> 
354		  <#assign addPortletURLString= newAssetURL + "&showHeader=false"/> 
355    	<#assign portletId = portalUtil.getPortletId(renderRequest)/> 
356			<#assign dialogParams = " 
357
358									modal: true, 
359									destroyOnHide:true, 
360									after: {  
361														destroy: 
362														function (event) { 
363															Liferay.Portlet.refresh('#p_p_id_${portletId}_',{'_${portletId}_assetEntryId':${entry.entryId}},true); 
364
365
366
367			"/> 
368				 
369			<@liferay_ui["icon"] 
370				src="${themeDisplay.getPathThemeRoot()}/images/ico_new.png" 
371				message= messageIcon 
372				url="javascript:Liferay.Util.openWindow({dialog: ${dialogParams?trim}, id: '" + renderResponse.getNamespace() + "editAsset', title: '" + titleWindow + "', uri: '" + htmlUtil.escapeJS(addPortletURLString) + "'});" 
373			/> 
374	</#if> 
375</#macro> 
376												 
377 
378<#macro getPrintIcon> 
379	<#if renderRequest.getPreferences().getValue("enablePrint", "false") == "true"> 
380		<#assign printURL = renderResponse.createRenderURL() /> 
381 
382		${printURL.setParameter("mvcPath", "/view_content.jsp")} 
383		${printURL.setParameter("assetEntryId", entry.getEntryId()?string)} 
384		${printURL.setParameter("viewMode", "print")} 
385		${printURL.setParameter("type", entry.getAssetRendererFactory().getType())} 
386		${printURL.setWindowState("pop_up")} 
387		 
388 
389		<@liferay_ui["icon"] 
390			iconCssClass="icon-print" 
391			message="print" 
392			url="javascript:Liferay.Util.openWindow({dialog: {modal: true, destroyOnHide:true}, id:'" + renderResponse.getNamespace() + "printAsset', title: '" + languageUtil.format(locale, "print-x-x", ["hide-accessible", entryTitle], false) + "', uri: '" + htmlUtil.escapeURL(printURL.toString()) + "'});" 
393		/> 
394	</#if> 
395</#macro> 
396 
397<#macro getFlagsIcon> 
398	<#if renderRequest.getPreferences().getValue("enableFlags", "false") == "true"> 
399		<@liferay_ui["flags"] 
400			className=entry.getClassName() 
401			classPK=entry.getClassPK() 
402			contentTitle=entry.getTitle(locale) 
403			label=false 
404			reportedUserId=entry.getUserId() 
405		/> 
406	</#if> 
407</#macro> 
408 
409<#macro getEditIcon> 
410	<#if assetRenderer.hasEditPermission(themeDisplay.getPermissionChecker())> 
411		<#assign redirectURL = renderResponse.createRenderURL() /> 
412 
413		${redirectURL.setParameter("struts_action", "/asset_publisher/add_asset_redirect")} 
414		${redirectURL.setWindowState("pop_up")} 
415 
416		<#assign editPortletURL = assetRenderer.getURLEdit(renderRequest, renderResponse, windowStateFactory.getWindowState("pop_up"), redirectURL) /> 
417		<#if validator.isNotNull(editPortletURL)> 
418			<#assign title = languageUtil.format(locale, "edit-x", entryTitle) /> 
419			<#assign portletId = portalUtil.getPortletId(renderRequest)/> 
420			<#assign redirectURL = paramUtil.getString(portalUtil.getOriginalServletRequest(request), renderResponse.getNamespace() + "redirect") /> 
421			<#assign dialogParams = " 
422
423									modal: true, 
424									destroyOnHide:true, 
425									after: {  
426														destroy: 
427														function (event) { 
428															Liferay.Portlet.refresh('#p_p_id_${portletId}_',{'_${portletId}_assetEntryId':${entry.entryId},_${portletId}_redirect:'${redirectURL}'}, true); 
429
430
431
432			"/> 
433			<@liferay_ui["icon"] 
434				image="edit" 
435				message=title 
436				url="javascript:Liferay.Util.openWindow({dialog: ${dialogParams}, id:'" + renderResponse.getNamespace() + "editAsset', title: '" + title + "', uri:'" + htmlUtil.escapeURL(editPortletURL.toString()) + "'});" 
437			/> 
438		</#if> 
439	</#if> 
440</#macro> 
441<#macro getNombreFase idFase> 
442	<#if idFase = "0"> 
443    0. Informe de Viabilidad 
444	<#elseif idFase = "1"> 
445		1. Elaboración 
446	<#elseif idFase = "2"> 
447		2. Contraste interno 
448	<#elseif idFase = "3"> 
449		3. Contraste externo 
450	<#elseif idFase = "4"> 
451		4. CGFP 
452	<#elseif idFase = "4.1"> 
453		4.1, Ficha tramitación normativa 
454	<#elseif idFase = "5"> 
455		5. Tramitación BOE 
456	<#elseif idFase = "5.1"> 
457		5.1. Envío Consejo Escolar 
458	<#elseif idFase = "5.2"> 
459		5.2. Dictamen CEE 
460	<#elseif idFase = "5.3"> 
461		5.3. Dictamen Consejo Estado 
462	<#elseif idFase = "5.4"> 
463		5.4. Envío para informe 
464	<#elseif idFase = "5.4.1"> 
465		5.4.1. MINHAP 
466	<#elseif idFase = "5.4.2"> 
467		5.4.2. MECD 
468	<#elseif idFase = "5.4.3"> 
469		5.4.3. MEYSS 
470	<#elseif idFase = "5.4.4"> 
471		5.4.4. Otros Ministerios 
472	<#elseif idFase = "5.5"> 
473		5.5. Firma de Ministros 
474	<#elseif idFase = "5.6"> 
475		5.6. Envío Comisión Subsecretarios 
476	<#elseif idFase = "6"> 
477		6. BOE 
478	<#elseif idFase = "10"> 
479		- Informe DEROGACIÓN Q 
480	<#elseif idFase = "11"> 
481		- Informe RETIRADA Q 
482	<#elseif idFase = "12"> 
483		- Informe BLOQUEADA Q 
484	<#elseif idFase = "13"> 
485		- Informe PARADA Q 
486	<#else> 
487		DESCONOCIDO 
488	</#if> 
489</#macro> 
490 
491	 
492	<#function getEnlaceDescarga uuid groupId> 
493	<#local dlFileEntry = dlFileEntryLocalService.getDLFileEntryByUuidAndGroupId(uuid, groupId) /> 
494	<#local assetEntry = assetEntryService.getEntry("com.liferay.document.library.kernel.model.DLFileEntry", dlFileEntry.fileEntryId) /> 
495	<#local assetRenderer = assetEntry.assetRenderer />												  
496	<#return assetRenderer.getURLDownload(themeDisplay)> 
497</#function>