Viana

Estación de Viana. Vista fachada principal desde exterior.

Les estacions són alguna osa més que un lloc des del qual pujar a un tren o desembarcar-ne. A més de prestar els seus serveis als viatgers i usuaris, moltes d’aquestes constitueixen una referència a les localitats on s’ubiquen.

Aquí es poden conèixer els horaris d’arribades i sortides de l’estació, així com els serveis que s’ofereixen en el recinte i les instal·lacions. Si ho necessita, pot anar a aquesta informació a través del selector que posem a la seva disposició.

x
Adif en tu móvil
Horarios en tiempo real
Descárgala ya
Instalar
Filtra per
 

Sortides

Hora de sortida Destinació Tren Via
No s’ha pogut recuperar la informació de circulació.
 

Arribades

Hora d’arribada Origen Tren Via
13:14
RF - REGIONAL EXPRES17218
4
Compartido: Proximidad 38218 Valladolid Campo Grande - Medina del Campo
14:35
RF - MD18004
4
Compartido: Proximidad 38004 Valladolid Campo Grande - Medina del Campo
15:26
RF - MD18306
1
Compartido: Proximidad 38306 Medina del Campo - Palencia
16:45
RF - REGIONAL EXPRES17221
1
Compartido: Proximidad 38221 Medina del Campo - Valladolid Campo Grande
16:46
RF - PROXIMIDAD18218
4
18:01
RF - REGIONAL EXPRES18322
4
Compartido: Proximidad 38322 Valladolid Campo Grande - Medina del Campo
19:09
RF - REGIONAL EXPRES18318
4
Compartido: Proximidad 38318 Valladolid Campo Grande - Medina del Campo
20:02
RF - REGIONAL EXPRES17200
4
Compartido: Proximidad 38200 Valladolid Campo Grande - Medina del Campo
21:33
RF - MD18316
4
Compartido: Proximidad 38316 Valladolid Campo Grande - Medina del Campo
22:07
RF - REGIONAL EXPRES18312
1
Compartido: Proximidad 38312 Medina del Campo - Valladolid Campo Grande
22:51
RF - REGIONAL EXPRES17226
1
07:17
RF - PROXIMIDAD17227
1
09:46
RF - REGIONAL EXPRES17203
1
Compartido: Proximidad 38203 Medina del Campo - Valladolid Campo Grande
10:11
RF - REGIONAL EXPRES18325
1
13:14
RF - REGIONAL EXPRES17218
4
Compartido: Proximidad 38218 Valladolid Campo Grande - Medina del Campo
14:35
RF - MD18004
4
Compartido: Proximidad 38004 Valladolid Campo Grande - Medina del Campo
15:26
RF - MD18306
1
Compartido: Proximidad 38306 Medina del Campo - Palencia
16:45
RF - REGIONAL EXPRES17221
1
Compartido: Proximidad 38221 Medina del Campo - Valladolid Campo Grande
16:46
RF - PROXIMIDAD18218
4
18:01
RF - REGIONAL EXPRES18322
4
Compartido: Proximidad 38322 Valladolid Campo Grande - Medina del Campo
19:09
RF - REGIONAL EXPRES18318
4
Compartido: Proximidad 38318 Valladolid Campo Grande - Medina del Campo
20:02
RF - REGIONAL EXPRES17200
4
Compartido: Proximidad 38200 Valladolid Campo Grande - Medina del Campo
21:33
RF - MD18316
4
Compartido: Proximidad 38316 Valladolid Campo Grande - Medina del Campo
22:07
RF - REGIONAL EXPRES18312
1
Compartido: Proximidad 38312 Medina del Campo - Valladolid Campo Grande
22:51
RF - REGIONAL EXPRES17226
1
No s’ha pogut recuperar la informació de circulació.

Informació de l’estació

  • Adreça

    C/ Estación Ferrocarril, s/n --- 47150 Viana de Cega --- VALLADOLID

  • Horari

    Acceso garantizados andenes

S'ha produït un error mentre es processava la plantilla.
The following has evaluated to null or missing:
==> serviciosAdaptados.idAdaptados  [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" at line 42, column 30]

----
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: #if serviciosAdaptados?? && servicios...  [in template "20101#20128#ADIF-SERVICIOS-ESTACION-TEMPLATE" at line 42, column 1]
----
1<script type="text/javascript"> 
2 
3 
4function cierraDetalles(){ 
5   var detalles = $("div[id^='detalleServicio']"); 
6   var iconos = $("[id^='button-detalleServicio']"); 
7   for (let detalle of detalles) { 
8    detalle.style.display = 'none' 
9
10    for (let icono of iconos) { 
11      icono.setAttribute('aria-expanded', 'false'); 
12
13
14 
15  function toggle(id, id2) { 
16 
17     
18        var n = document.getElementById(id); 
19if (n.style.display != 'none')  
20
21	  n.style.display = 'none'; 
22      document.getElementById(id2).setAttribute('aria-expanded', 'false'); 
23
24  else 
25
26  cierraDetalles(); 
27  n.style.display = ''; 
28  document.getElementById(id2).setAttribute('aria-expanded', 'true'); 
29
30
31   
32 
33  </script> 
34 
35<#if servicios?? && servicios.id.getSiblings()?has_content> 
36	<div class="title-servicios"> 
37    	<h3><@liferay.language key="es.adif.estacion.servicios"/></h3> 
38	</div> 
39    <@listPaint servicios.id.getSiblings() ""/>	 
40</#if> 
41 
42<#if serviciosAdaptados?? && serviciosAdaptados.idAdaptados.getSiblings()?has_content> 
43	<div class="title-servicios"> 
44    	<h3><@liferay.language key="es.adif.estacion.servicios-adaptados"/></h3> 
45	</div> 
46    <@listPaint serviciosAdaptados.idAdaptados.getSiblings() "Adaptados"/>	 
47</#if> 
48 
49<#macro listPaint lista texto> 
50         
51    <@orderServicesList lista texto/> 
52     
53	<#list listaOrdenada as cur_id> 
54 
55	    <#if cur_id?index %3 == 0> 
56			<#assign 
57	        hay1 = listaOrdenada[cur_id?index+1]?? 
58	        hay2 = listaOrdenada[cur_id?index+2]?? 
59	      /> 
60	      <div class="servicios-estacion" id="servicios-estacion"> 
61	        <@boxPaint cur_id cur_id?index texto/> 
62	         <#if hay1> 
63	        <@boxPaint listaOrdenada[cur_id?index+1] cur_id?index+1 texto/> 
64	            <#if hay2> 
65	             <@boxPaint listaOrdenada[cur_id?index+2] cur_id?index+2 texto/> 
66	            </#if> 
67	         </#if> 
68	         </div> 
69	         <@detailPaint cur_id cur_id?index texto/> 
70	          <#if hay1> 
71	            <@detailPaint listaOrdenada[cur_id?index+1] cur_id?index+1 texto/> 
72	           <#if hay2> 
73	            <@detailPaint  listaOrdenada[cur_id?index+2] cur_id?index+2 texto/> 
74	            </#if> 
75	           </#if> 
76	    </#if> 
77	     
78	</#list> 
79 
80</#macro> 
81 
82<#macro boxPaint elem index texto> 
83	<#if texto!="Adaptados"> 
84		<#if elem.popServicios.getData() ?? && elem.popServicios.getData() != ""> 
85			<button class="linkServiciosDesp" id="button-detalleServicio${texto}-${index}" aria-expanded="false" aria-controls="detalleServicio${texto}-${index}" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')"> 
86		</#if> 
87		<div class="servicio-estacion" id="iconoServicio${texto}-${index}"> 
88			<div class="servicio-estacion-icono" style="background-image:url('${elem.icono.getData()}')"></div><!-- /.servicio-estacion-icono --> 
89			<div class="servicio-estacion-datos"> 
90				<h4>${elem.titulo.getData()}</h4> 
91				<p class="descripcion-servicios">${elem.descripcionServicios.getData()}</p> 
92				<#if elem.popServicios.getData() ?? && elem.popServicios.getData() != ""> 
93					<p class="detalle-mas-informacion"> 
94					<span class="texto_servicios_responsive" data-desktoptext="Más información" data-phonetext="+"></span> 
95					</p> 
96				</#if> 
97			</div> 
98		</div> 
99		<#if elem.popServicios.getData() ?? && elem.popServicios.getData() != ""> 
100		</button> 
101		</#if> 
102	<#else> 
103		<#if elem.popAdaptados.getData() ?? && elem.popAdaptados.getData() != ""> 
104		<button class="linkServiciosDesp" id="button-detalleServicio${texto}-${index}" aria-expanded="false" aria-controls="detalleServicio${texto}-${index}" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')"> 
105		</#if> 
106		<div class="servicio-estacion" id="iconoServicio${texto}-${index}"> 
107			<div class="servicio-estacion-icono" style="background-image:url('${elem.iconoAdaptados.getData()}'"></div><!-- /.servicio-estacion-icono --> 
108			<div class="servicio-estacion-datos"> 
109				<h4>${elem.tituloAdaptados.getData()}</h4> 
110				<p class="descripcion-servicios">${elem.descripcionAdaptados.getData()}</p> 
111				<#if elem.popAdaptados.getData() ?? && elem.popAdaptados.getData() != ""> 
112					<p class="detalle-mas-informacion"> 
113						<span class="texto_servicios_responsive" data-desktoptext="Más información" data-phonetext="+"></span> 
114					</p> 
115				</#if> 
116			</div> 
117		</div> 
118		<#if elem.popAdaptados.getData() ?? && elem.popAdaptados.getData() != ""> 
119		</button> 
120		</#if> 
121	</#if> 
122</#macro> 
123 
124<#macro detailPaint elem index texto> 
125<#if texto!="Adaptados"> 
126	<div role="region" aria-labelledby="button-detalleServicio${texto}-${index}" class="servicios-estacion" id="detalleServicio${texto}-${index}" style="display:none"> 
127		<div class="servicio-estacion servicio-estacion-detalle servicio-estacion-detalle-${index%3} "> 
128			<div class="servicio-estacion-icono" style="background-image:url('${elem.icono.getData()}')"></div><!-- /.servicio-estacion-icono --> 
129			<div class="servicio-estacion-datos"> 
130				<h4>${elem.titulo.getData()}</h4> 
131				${elem.popServicios.getData()} 
132				<p> 
133					<button aria-label="<@liferay.language key="navigation.cerrar" /> ${elem.titulo.getData()}" class="btn-close-adif"  type="button" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">&times;</button> 
134					 
135				</p> 
136			</div> 
137		</div> 
138	</div> 
139<#else> 
140	<div role="region" aria-labelledby="button-detalleServicio${texto}-${index}" class="servicios-estacion" id="detalleServicio${texto}-${index}" style="display:none"> 
141		<div class="servicio-estacion servicio-estacion-detalle servicio-estacion-detalle-${index%3}"> 
142			<div class="servicio-estacion-icono" style="background-image:url('${elem.iconoAdaptados.getData()}'"></div><!-- /.servicio-estacion-icono --> 
143			<div class="servicio-estacion-datos"> 
144				<h4>${elem.tituloAdaptados.getData()}</h4> 
145				${elem.popAdaptados.getData()} 
146				<p> 
147					<button class="btn-close-adif" aria-label="<@liferay.language key="navigation.cerrar" /> ${elem.tituloAdaptados.getData()}" type="button" onclick="toggle('detalleServicio${texto}-${index}', 'button-detalleServicio${texto}-${index}')">&times;</button> 
148				</p> 
149			</div> 
150		</div> 
151	</div> 
152</#if> 
153 
154</#macro> 
155 
156<#macro orderServicesList lista texto> 
157    <#assign lista2 = []> 
158    <#assign lista3 = lista> 
159    <#assign stop = true> 
160    <#assign run = true> 
161    <#assign iteraciones = lista3?size*lista3?size> 
162    <#list 0..iteraciones as i> 
163        <#assign run = false> 
164        <#assign saltarSiguiente = false> 
165        <#list lista3 as cur_elem> 
166            <#if !saltarSiguiente> 
167	            <#if !cur_elem?is_last > 
168	                <#if (texto=="Adaptados" && esMayor(cur_elem.tituloAdaptados.getData(),lista3[cur_elem?index+1].tituloAdaptados.getData())) 
169	                 || (texto!="Adaptados" && esMayor(cur_elem.titulo.getData(),lista3[cur_elem?index+1].titulo.getData()))> 
170	                    <#assign run = true> 
171	                    <#assign lista2 = lista2 + [lista3[cur_elem?index+1], cur_elem]> 
172	                    <#assign saltarSiguiente = true> 
173	                <#else> 
174	                    <#assign lista2 = lista2 + [cur_elem]/> 
175	                </#if> 
176	            <#else> 
177	            	<#assign lista2 = lista2 + [cur_elem]> 
178	            </#if> 
179	        <#else> 
180	        	<#assign saltarSiguiente = false/> 
181            </#if> 
182        </#list> 
183        <#if !run> 
184            <#break> 
185        </#if> 
186        <#assign lista3 = lista2> 
187        <#assign lista2 = []> 
188    </#list> 
189     
190    <#assign listaOrdenada = lista3> 
191</#macro> 
192 
193<#function esMayor string1 string2> 
194    <#assign strings = [string1,string2]?sort> 
195    <#return strings[0]==string2> 
196</#function>