The following has evaluated to null or missing:
==> channelResponse.items[0] [in template "34352066712900#33336#null" at line 2, column 20]
----
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 channel = channelResponse.ite... [in template "34352066712900#33336#null" at line 2, column 1]
----
1<#assign channelResponse = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?filter=name eq 'Aenor Tienda'")>
2<#assign channel = channelResponse.items[0]>
3<#assign channelId = channel.id>
4<#assign categories = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/${channelId}/products/${CPDefinition_cProductId.getData()}/categories").items>
5
6<#assign hasProductCategoriaTipoEntidadLibro = isVocabularyNameIntoCategories(categories, 'entity type', 'libro') />
7<#assign hasProductCategoriaTipoEntidadNorma = isVocabularyNameIntoCategories(categories, 'entity type', 'norma') />
8<#assign hasProductCategoriaTipoEntidadColeccionTematica = isVocabularyNameIntoCategories(categories, 'entity type', 'coleccion tematica') />
9
10<#function isVocabularyNameIntoCategories categories vocabulary name>
11 <#assign found = false />
12
13 <#if categories?has_content && vocabulary?has_content && name?has_content>
14
15 <#assign vocabNorm = normalize(vocabulary) />
16 <#assign nameNorm = normalize(name) />
17
18 <#list categories as category>
19 <#if !found>
20 <#assign catVocabNorm = normalize(category.vocabulary) />
21 <#assign catNameNorm = normalize(category.name) />
22
23 <#if catVocabNorm == vocabNorm && catNameNorm == nameNorm>
24 <#assign found = true />
25 </#if>
26 </#if>
27 </#list>
28
29 </#if>
30
31 <#return found>
32</#function>
33
34<#function normalize text onlyAccents = false>
35 <#-- proteger null -->
36 <#if !text?has_content>
37 <#return "">
38 </#if>
39
40 <#assign t = text />
41
42 <#-- quitar acentos -->
43 <#assign t = t
44 ?replace("á","a")?replace("é","e")?replace("í","i")
45 ?replace("ó","o")?replace("ú","u")?replace("ü","u")
46 ?replace("ñ","n")
47 ?replace("Á","A")?replace("É","E")?replace("Í","I")
48 ?replace("Ó","O")?replace("Ú","U")?replace("Ü","U")
49 ?replace("Ñ","N")
50 />
51
52 <#-- si NO es solo acentos, normalización completa -->
53 <#if !onlyAccents>
54 <#assign t = t?lower_case />
55 <#assign t = t?trim />
56 <#assign t = t?replace("\\s+", " ", "r") />
57 </#if>
58
59 <#return t>
60</#function>
61
62<#if hasProductCategoriaTipoEntidadLibro>
63 <#assign name = htmlUtil.stripHtml(CPDefinition_name.getData())?js_string?replace("\\n", "")?trim>
64 <#assign description = htmlUtil.stripHtml(CPDefinition_description.getData())?js_string?replace("\\n", "")?replace(" ", "")?replace(" ", "")?replace(" ", "")?replace(" ", "")?trim?truncate(200, '')?trim>
65 <#assign bookInfo = restClient.get("/c/bookinfos/?filter=r_bookInfo_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items[0]>
66 <#assign imageUrl = "${themeDisplay.getPortalURL()}/documents/d/global/${bookInfo.cubierta}">
67 <#assign books = restClient.get("/c/books/?filter=r_books_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items>
68
69 <script type="application/ld+json">
70 {
71 "@context": "https://schema.org/",
72 "@type": "Product",
73 "name": "${name}",
74 "image": "${imageUrl}",
75 "description": "${description}",
76 "brand": {
77 "@type": "Brand",
78 "name": "${bookInfo.editorial}"
79 },
80 <#if books?? && books?has_content>
81 "offers": [
82 <#list books as book>
83 {
84 "@type": "Offer",
85 "sku": "${book.bookId}",
86 "price": "${book.price}",
87 "priceCurrency": "EUR",
88 "category": "${book.codFormat}",
89 "availability": "https://schema.org/InStock",
90 "itemOffered": {
91 "@type": "CreativeWork",
92 "inLanguage": "${book.codLanguage}"
93 }
94 }<#if book_has_next>,</#if>
95 </#list>
96 ]
97 </#if>
98 }
99 </script>
100</#if>
101
102<#if hasProductCategoriaTipoEntidadNorma>
103 <#assign name = htmlUtil.stripHtml(CPDefinition_name.getData())?js_string?replace("\\n", "")?trim>
104 <#assign description = htmlUtil.stripHtml(CPDefinition_description.getData())?js_string?replace("\\n", "")?replace(" ", "")?replace(" ", "")?replace(" ", "")?replace(" ", "")?trim?truncate(200, '')?trim>
105 <#assign organism = getOrganism(categories, 'organismos') />
106 <#assign imageUrl = "${themeDisplay.getPortalURL()}/documents/d/global/${organism}">
107 <#assign standards = restClient.get("/c/standards/?filter=r_standards_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items>
108
109 <script type="application/ld+json">
110 {
111 "@context": "https://schema.org/",
112 "@type": "Product",
113 "name": "${name}",
114 "image": "${imageUrl}",
115 "description": "${description}",
116 "brand": {
117 "@type": "Brand",
118 "name": "${organism}"
119 },
120 <#if standards?? && standards?has_content>
121 "offers": [
122 <#list standards as standard>
123 {
124 "@type": "Offer",
125 "sku": "${standard.docId}",
126 "price": "${standard.price}",
127 "priceCurrency": "EUR",
128 "category": "${standard.format}",
129 "availability": "https://schema.org/InStock",
130 "itemOffered": {
131 "@type": "CreativeWork",
132 "inLanguage": "${standard.language}"
133 }
134 }<#if standard_has_next>,</#if>
135 </#list>
136 ]
137 </#if>
138 }
139 </script>
140
141 <#function getOrganism categories vocabulary>
142 <#assign organism = "">
143 <#assign vocabNorm = normalize(vocabulary)>
144
145 <#list categories as category>
146 <#assign catVocabNorm = normalize(category.vocabulary) />
147 <#if catVocabNorm == vocabNorm>
148 <#assign organism = category.name>
149 <#if organism == "EN" || organism == "CEN" || organism == "CENELEC">
150 <#assign organism = "UNE">
151 </#if>
152 </#if>
153 </#list>
154 <#return organism>
155 </#function>
156</#if>
157
158<#if hasProductCategoriaTipoEntidadColeccionTematica>
159 <#assign name = htmlUtil.stripHtml(CPDefinition_name.getData())?js_string?replace("\\n", "")?trim>
160 <#assign description = htmlUtil.stripHtml(CPDefinition_description.getData())?js_string?replace("\\n", "")?replace(" ", "")?replace(" ", "")?replace(" ", "")?replace(" ", "")?trim?truncate(200, '')?trim>
161 <#assign product = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels/${channelId}/products/${CPDefinition_cProductId.getData()}")>
162 <#assign imageUrl = "${themeDisplay.getPortalURL()}/documents/d/tienda/${product.externalReferenceCode}">
163 <#assign price = restClient.get("/c/thematiccollections/?filter=r_thematicCollection_CPDefinitionId eq '${CPDefinition_cpDefinitionId.getData()}'").items[0].price>
164
165 <script type="application/ld+json">
166 {
167 "@context": "https://schema.org/",
168 "@type": "Product",
169 "name": "${name}",
170 "image": "${imageUrl}",
171 "description": "${description}",
172 "brand": {
173 "@type": "Brand",
174 "name": "AENOR"
175 },
176 "offers": [
177 {
178 "@type": "Offer",
179 "price": "${price}",
180 "priceCurrency": "EUR",
181 "category": "Lectura",
182 "availability": "https://schema.org/InStock",
183 "itemOffered": {
184 "@type": "CreativeWork",
185 "inLanguage": "es"
186 }
187 }
188 ]
189 }
190 </script>
191</#if>
UNE-EN 60335-2-27:2014/A2:2021
Aparatos electrodomésticos y análogos. Seguridad. Parte 2-27: Requisitos particulares para aparatos para la exposición de la piel a las radiaciones ultravioletas e infrarrojas.
| Notice: | Standards that are modifications are not independent documents and must be obtained together with the standard they modify. |
|---|---|
| Edition date: |
2021-02-24
In Force
|
| Available languages: | English, Spanish |
| ICS: | 13.120-Domestic safety, 97.170-Body care equipment |
| CTN: | CTN 213/SC 61 - Seguridad de los aparatos electrodomésticos y análogos |
|
Correcciones Normas |
Es corregida por UNE-EN 60335-2-27:2014/AC:2021-11 |
|
International Equivalence |
Identic EN 60335-2-27:2013/A2:2020 |
|
Modificaciones Normas |
Modifica a IEC 60335-2-27:2009/AMD2:2015 Modifica a UNE-EN 60335-2-27:2014 |










