An error occurred in template CMTeasable.head.canonical.ftl for Content with ID 47980072.
Show Details
FreemarkerView[template=/jar:id:contentproperty:/Themes/swissinfo-ru/templates/swissinfo-ru-templates.jar/archive!/META-INF/resources/WEB-INF/templates/swissinfo-ru/com.coremedia.blueprint.common.contentbeans/CMTeasable.head.canonical.ftl]
ch.swissinfo.cae.contentbeans.SIArticleImpl$$[id=47980072]
Error rendering view
When calling function "getLink", required parameter "target" (parameter #1) was specified, but had null/missing value. ---- Tip: If the parameter value expression on the caller side is known to be legally null/missing, you may want to specify a default value for it with the "!" operator, like paramValue!defaultValue. ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #function getLink(target, view=UNDEFI... [in template "lib/coremedia.com/cae.ftl" in function "getLink" at line 61, column 1] - Reached through: ${cm.getLink(self.master, {"absolute"... [in template "jar:id:contentproperty:/Themes/swissinfo-ru/templates/swissinfo-ru-templates.jar/archive!/META-INF/resources/WEB-INF/templates/swissinfo-ru/com.coremedia.blueprint.common.contentbeans/CMTeasable.head.canonical.ftl" at line 10, column 5] ----
ch.swissinfo.cae.contentbeans.SIArticleImpl$$
com.coremedia.objectserver.dataviews.DataView
com.coremedia.dispatch.HasCustomType
ch.swissinfo.cae.contentbeans.SIArticleImpl
ch.swissinfo.cae.contentbeans.SIArticleBase
ch.swissinfo.common.contentbeans.SIArticle
com.coremedia.blueprint.cae.contentbeans.CMArticleImpl
com.coremedia.blueprint.cae.contentbeans.CMArticleBase
com.coremedia.blueprint.common.contentbeans.CMArticle
com.coremedia.blueprint.cae.contentbeans.CMTeasableImpl
com.coremedia.blueprint.cae.contentbeans.CMTeasableBase
com.coremedia.blueprint.common.contentbeans.CMTeasable
com.coremedia.blueprint.cae.contentbeans.CMHasContextsImpl
com.coremedia.blueprint.cae.contentbeans.CMHasContextsBase
com.coremedia.blueprint.common.contentbeans.CMHasContexts
com.coremedia.blueprint.cae.contentbeans.CMLinkableImpl
com.coremedia.blueprint.cae.contentbeans.CMLinkableBase
com.coremedia.blueprint.common.contentbeans.CMLinkable
com.coremedia.blueprint.common.navigation.Linkable
com.coremedia.blueprint.common.navigation.HasViewTypeName
com.coremedia.blueprint.common.contentbeans.BelowRootNavigation
com.coremedia.blueprint.common.datevalidation.ValidityPeriod
com.coremedia.blueprint.cae.contentbeans.CMLocalizedImpl
com.coremedia.blueprint.cae.contentbeans.CMLocalizedBase
com.coremedia.blueprint.common.contentbeans.CMLocalized
com.coremedia.blueprint.cae.contentbeans.CMObjectImpl
com.coremedia.blueprint.cae.contentbeans.CMObjectBase
com.coremedia.blueprint.common.contentbeans.CMObject
com.coremedia.objectserver.beans.AbstractContentBean
com.coremedia.objectserver.beans.ContentBean
com.coremedia.objectserver.dataviews.AssumesIdentity
java.lang.Object
com.coremedia.objectserver.view.ViewException: Error rendering view
at com.coremedia.objectserver.view.ViewUtils.rethrow(ViewUtils.java:344)
at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:154)
at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:140)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:344)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428)
at ch.swissinfo.cae.cdn.RenderedContentIdCollectorDecorator$ContentIdCollectorImpl.render(RenderedContentIdCollectorDecorator.java:66)
at ch.swissinfo.cae.cdn.RenderedContentIdCollectorDecorator$ContentIdCollectorImpl.decorate(RenderedContentIdCollectorDecorator.java:59)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:344)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428)
at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:184)
at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:124)
at com.coremedia.objectserver.view.freemarker.impl.CAEFreemarkerFacadeImpl.include(CAEFreemarkerFacadeImpl.java:159)
at jdk.internal.reflect.GeneratedMethodAccessor294.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1552)
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:73)
at freemarker.core.MethodCall._eval(MethodCall.java:62)
at freemarker.core.Expression.eval(Expression.java:101)
at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100)
at freemarker.core.DollarVariable.accept(DollarVariable.java:63)
at freemarker.core.Environment.visit(Environment.java:383)
at freemarker.core.Environment.visitAndTransform(Environment.java:514)
at freemarker.core.CompressedBlock.accept(CompressedBlock.java:42)
at freemarker.core.Environment.visit(Environment.java:383)
at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
at freemarker.core.Environment.invokeMacro(Environment.java:825)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:84)
at freemarker.core.Environment.visit(Environment.java:347)
at freemarker.core.Environment.visit(Environment.java:353)
at freemarker.core.Environment.process(Environment.java:326)
at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:150)
at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:140)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:344)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:346)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:428)
at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:184)
at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:124)
at com.coremedia.objectserver.view.freemarker.impl.CAEFreemarkerFacadeImpl.include(CAEFreemarkerFacadeImpl.java:159)
at jdk.internal.reflect.GeneratedMethodAccessor294.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1552)
at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:73)
at freemarker.core.MethodCall._eval(MethodCall.java:62)
at freemarker.core.Expression.eval(Expression.java:101)
at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100)
at freemarker.core.DollarVariable.accept(DollarVariable.java:63)
at freemarker.core.Environment.visit(Environment.java:383)
at freemarker.core.Environment.visitAndTransform(Environment.java:514)
at freemarker.core.CompressedBlock.accept(CompressedBlock.java:42)
at freemarker.core.Environment.visit(Environment.java:383)
at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:889)
at freemarker.core.Environment.invokeMacro(Environment.java:825)
at freemarker.core.UnifiedCall.accept(UnifiedCall.java:84)
at freemarker.core.Environment.visit(Environment.java:347)
at freemarker.core.Environment.visit(Environment.java:353)
at freemarker.core.Environment.process(Environment.java:326)
at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:150)
at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:122)
at com.coremedia.objectserver.view.ExceptionHandlingViewDecorator$ExceptionDecorator.decorate(ExceptionHandlingViewDecorator.java:113)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:334)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:422)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingBaseView.render(ViewDecoratorBase.java:336)
at com.coremedia.objectserver.view.ViewDecoratorBase$DecoratingServletAndTextView.render(ViewDecoratorBase.java:422)
at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:152)
at com.coremedia.objectserver.view.ViewUtils.render(ViewUtils.java:109)
at com.coremedia.objectserver.view.BeanView.renderMergedOutputModel(BeanView.java:63)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1373)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1118)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1057)
at com.coremedia.objectserver.web.DispatcherServlet.doDispatch(DispatcherServlet.java:69)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.coremedia.blueprint.cae.filter.PreviewViewFilter.doFilterInternal(PreviewViewFilter.java:48)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at ch.swissinfo.elastic.webservice.filter.RequestParameterFilter.doFilter(RequestParameterFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.coremedia.blueprint.elastic.social.cae.user.UserFilter.doFilter(UserFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at ch.swissinfo.elastic.webservice.jwt.JwtFilter.doFilter(JwtFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.coremedia.elastic.core.impl.servlet.TenantFilter.doFilter(TenantFilter.java:55)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.coremedia.blueprint.cae.filter.SiteFilter.doFilter(SiteFilter.java:54)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:84)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:125)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:141)
at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:82)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.coremedia.blueprint.cae.filter.RequestRejectedExceptionFilter.doFilter(RequestRejectedExceptionFilter.java:41)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:764)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: freemarker.core._MiscTemplateException: When calling function "getLink", required parameter "target" (parameter #1) was specified, but had null/missing value.
----
Tip: If the parameter value expression on the caller side is known to be legally null/missing, you may want to specify a default value for it with the "!" operator, like paramValue!defaultValue.
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #function getLink(target, view=UNDEFI... [in template "lib/coremedia.com/cae.ftl" in function "getLink" at line 61, column 1]
- Reached through: ${cm.getLink(self.master, {"absolute"... [in template "jar:id:contentproperty:/Themes/swissinfo-ru/templates/swissinfo-ru-templates.jar/archive!/META-INF/resources/WEB-INF/templates/swissinfo-ru/com.coremedia.blueprint.common.contentbeans/CMTeasable.head.canonical.ftl" at line 10, column 5]
----
at freemarker.core.Macro$Context.checkParamsSetAndApplyDefaults(Macro.java:308)
at freemarker.core.Environment.invokeMacroOrFunctionCommonPart(Environment.java:888)
at freemarker.core.Environment.invokeMacro(Environment.java:825)
at freemarker.core.Environment.invokeFunction(Environment.java:841)
at freemarker.core.MethodCall._eval(MethodCall.java:65)
at freemarker.core.Expression.eval(Expression.java:101)
at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:100)
at freemarker.core.DollarVariable.accept(DollarVariable.java:63)
at freemarker.core.Environment.visit(Environment.java:347)
at freemarker.core.Environment.visit(Environment.java:389)
at freemarker.core.Environment.visitAndTransform(Environment.java:514)
at freemarker.core.CompressedBlock.accept(CompressedBlock.java:42)
at freemarker.core.Environment.visit(Environment.java:383)
at freemarker.core.Environment.visit(Environment.java:410)
at freemarker.core.BlockAssignment.accept(BlockAssignment.java:55)
at freemarker.core.Environment.visit(Environment.java:347)
at freemarker.core.Environment.visit(Environment.java:353)
at freemarker.core.Environment.process(Environment.java:326)
at com.coremedia.objectserver.view.freemarker.FreemarkerViewEngine$FreemarkerView.render(FreemarkerViewEngine.java:150)
... 203 more

Navigation

Кантон Женева и UBER так и не договорились по условиям труда

Современная интернет-экономика и традиции государственного регулирования до сих пор ищут — и никак не найдут общий знаменатель сотрудничества. © Keystone / Salvatore Di Nolfi

Переговоры между службой такси UBER и профсоюзами Женевы по вопросу условий труда, заработной платы и социальных отчислений завершились провалом. О чем это говорит? О том, что современная интернет-экономика и традиции государственного регулирования до сих пор ищут — и никак не найдут общий знаменатель сотрудничества.

Этот контент был опубликован 18 октября 2022 года - 07:00
Ева Хирши (Eva Hirschi)

Сервис Uber в свое время произвел настоящую революцию в области частного извоза. Однако, с точки зрения властей, такого сервиса быть не может, потому что это не фирма в привычном смысле, она не платит социальных налогов и не соблюдает прочих многочисленных социальных норм, стоящих на страже интересов сотрудников — и одновременно порой еще и на пути совершенствования столь востребованного сервиса. Конфликты таких фирм, как Uber, с властями случаются регулярно, не стала исключением и Женева.

Но там этот конфликт до сих пор не разрешен: кантон, профсоюзы и компания до сих пор не могут договориться об условиях деятельности фирмы, в частности о порядке соблюдения социального законодательства. Запущенная недавно примирительная процедура уже признана несостоявшейся. У компании было время до 15 октября, чтобы выполнить требования законодательства, регулирующего частный извоз. И что будет дальше, если соглашение так и не будет достигнуто? Пока неясно. «Я не исключаю никакой возможности», — указала недавно Фабьен Фишер (Fabienne Fischer), министр экономики кантона Женева.

Фиктивная самозанятость?

В ответ на наш запрос компания Uber не стала ничего комментировать, ссылаясь на конфиденциальность переговоров с властями и профсоюзами. Камнем же преткновения, если коротко, в рамках этого сюжета остается порядок определения того, что есть «водитель такси». Недавно Федеральный суд в Лозанне, высшая судебная инстанция Швейцарии, принял решение о том, что водители являются сотрудниками компании Uber со всеми вытекающими отсюда последствиями в плане, в частности, отчислений в фонды социального страхования и возникновения соответствующих отношений занятости. Профсоюзы возрадовались и сделали вывод, что именно их интерпретация ситуации и получила подтверждение на высшем юридическом уровне.

Кристиан Капакоэль (Christian Capacoel, профсоюз Unia) говорит, что теперь признание получил тезис о том, что деловая модель, лежащая в основе компании Uber, — это фиктивная самозанятость. С точки зрения профсоюзов, выглядит все довольно заманчиво, водители ведь официально как бы могут сами решать, когда и сколько им работать. Однако такая фиктивная самозанятость, по мнению критиков, в первую очередь направлена на получение дополнительных выгод для компании, которой не приходится брать на себя официальную роль работодателя, что дает ей возможность не нести лишних социальных расходов, включая социальное обеспечение, страхование от несчастных случаев и пенсионные схемы.

В Швейцарии, однако, самозанятыми лицами считаются только те индивидуальные предприниматели, которые занимают на рынке независимое положение и сами несут всю тяжесть экономических рисков. А поскольку именно Uber решает, кто и на чем будет ездить, то получается, что контроль над процессом организации работы осуществляет головная компания, а не водители, которые, таким образом, с точки зрения швейцарского права самозанятыми работниками не являются. Федеральный суд в Лозанне как раз и подтвердил это.

«Компания Uber просто эксплуатирует водителей», — говорит К. Капакоэль. И это беспокоит не только профсоюз, но и остальных традиционных водителей такси. Благодаря более низким накладным затратам служба UBER способна предложить своим клиентам куда более низкие цены, чем обычные таксомоторные компании, которые, если честно, берут за свои услуги порой просто сумасшедшие деньги: в Берне, например, 10 минутная поездка от главного вокзала на окраину в район Центра Пауля Клее обходится в сумму до 25–30  франков / долларов.

Возможный компромисс?

И понятно, почему традиционные водители такси неоднократно устраивают забастовки против конкурентов из Uber, причем не только в Женеве, но и в других городах. В настоящее время услуги Uber в Швейцарии доступны в Цюрихе, Базеле, Винтертуре, Цуге, Бадене, Лозанне, Берне, Люцерне, Ольтене, Сьоне, Фрибурге и Ивердоне. В 2019 году такси UBER перевезло за год 400 000 человек, численность работающих на Uber водителей достигает 3 200 человек, в одной только Женеве до недавнего времени таких насчитывалось около 1 000 человек.

После решения Федерального суда компания Uber была вынуждена временно остановить работу в Женеве — таково было распоряжение властей. Но затем был сформирован возможный компромисс. Компания Uber должна была урегулировать задним числом все вопросы с невыплаченными взносами в фонды социального страхования и удовлетворить требования водителей по заработной плате. С другой стороны, водители должны были быть наняты на работу, но не самой фирмой Uber, а сторонней компанией. Начались переговоры о конкретной реализации компромисса, и вот они-то как раз недавно и потерпели поражение.

«Uber ни при каких обстоятельствах не хочет выступать в роли работодателя», — говорит К. Капакоэль. Почему? Потому что тогда это сыграло бы роль прецедента, с учетом того, что консультации по основам работы таких транспортных сервисов ведутся и в других кантонах, а на рассмотрении Федерального суда находится еще одно дело, в котором замешано цюрихское кантональное ведомство по вопросам социального страхования (Sozialversicherungsanstalt Zürich). К. Капакоэль считает, что упомянутое решение, уже принятое Федеральным судом, является настоящей революцией. «Власти всех кантонов должны обеспечивать соблюдение (социальных) законов», — говорит он, подчеркивая, что пример Женевы может стать образцом для всех тех стран, где предпринимаются попытки поставить заслон на пути такого «сетевого бизнеса».

Вспомним, в самом деле, о том, как долго уже европейские таксомоторные компании враждуют с Uber. Во Франции и Великобритании Uber теперь официально считается работодателем. Известно также, насколько агрессивно компания лоббирует для себя завоевание новых и новых долей рынка. При этом угрозы Uber покинуть Швейцарию в случае, если компания будет признана работодателем, оказались блефом: всего три года назад тогдашний глава Uber Switzerland сказал, что они, вероятно, покинут Швейцарию, если суд квалифицирует Uber как работодателя, но ничего подобного пока не случилось.

Более того, в интервью ряду газет, выходящих под эгидой издательского холдинга CH Media, новый шеф Uber Switzerland Жан-Паскаль Арибо (Jean-Pascal Aribot), сказал, что компания планирует реализовать в Швейцарии новую модель занятости. Водители смогут теперь либо подписывать трудовой договор с компанией-партнером, а этот документ также будет включать в себя обязанность уплачивать социальные взносы, либо они смогут продолжать работать самостоятельно.

Эта модель будет действовать везде, кроме Женевы, коль скоро суд постановил, что там компания Uber обязана теперь рассматривать своих водителей как нанятых работников, а не как самозанятых лиц в формате индивидуального предпринимателя. Напомним, что законодательство, регулирующее услуги такси и другие транспортные услуги, находится в ведении субъектов федерации, поэтому решение Федерального суда по Женеве не распространяется автоматически на всю Швейцарию.

Плохие условия труда

Что касается Женевы, то там уже в июне 2022 года водители начали заключать трудовые соглашения не с UBER, а с компанией-субподрядчиком MITC Mobility AG. Правда, Ария Джаббарпур (Aria Jabbarpour), президент VTC Genève, женевской ассоциации профессиональных водителей, все равно недовольна, так как, по ее мнению, новая модель ничуть не лучше прежней. «Она вызывает у людей большое разочарование. Из 1 145 водителей Uber подписали новый контракт только 280 человек, и то только потому, что им нужны были деньги — да и изучили они условия контракта, видимо, недостаточно хорошо».

«Нам представили не текст трудового соглашения, а толстенный фолиант», — жалуется Хамед Калами (Hamed Kalami). «Я почти ничего не понял, в конце концов французский не является моим родным языком». Этот 50-летний курд из Ирана живет в Швейцарии уже 15 лет, в Uber он работает водителем уже восемь месяцев. «Я был вполне доволен старыми условиями», — говорит он. Конечно, Uber берет огромную комиссию в размере 27% от стоимости проезда, но сам Хамед Калами хорошо зарабатывал, не меньше 10 000 франков в месяц, пусть он и выходил в рейс практически каждый день, работая иногда до 54 часов в неделю.

В настоящее время он зарабатывает вдвое меньше, оставляя себе после всех вычетов всего около 3 000 франков при медианной зарплате в стране на уровне 6 000. «Профсоюз говорил мне не подписывать новый контракт, но у меня просто не было иного выбора», — говорит Хамед Калами. «У меня есть жена, которая не работает, и двое детей. А Женева — это очень дорогой город». Кроме того, он недавно взял в лизинг для работы новый «Мерседес», и теперь он должен выплачивать взносы, что стало для него дополнительной головной болью. Но именно это и критикует профсоюз. «Uber часто нанимает людей, которые иначе просто нигде не нашли бы себе работу. Но даже и они все равно имеют право на справедливые условия труда», — говорит Кристиан Капакоэль из Unia.

Новые модели самозанятой деятельности

В рамках новой модели водители теперь имеют право на почасовую зарплату — но только тогда, когда у них есть заказ, время ожидания клиента не учитывается. «А это противоречит нормам КЗОТ, поскольку время, проведенное в распоряжении работодателя, все равно является рабочим временем», — говорит К. Капакоэль. Компания Uber не соблюдает, по его словам, и другие нормы: личные расходы по работе не компенсируются, гарантированных рабочих часов нет, водители должны сами оплачивать топливо и техническое обслуживание машин. Этим возмущен не только профсоюз, сами водители также недавно выходили на демонстрацию и требовали улучшения условий труда.

Однако условиями работы в Uber недовольны отнюдь не все: политики либерального крыла говорят, что теперь, после решения суда, сотни водителей рискуют потерять работу и оказаться в нищете. «Возможно, условия труда там не самые фантастические, однако в либеральном государстве все это не является юридическим или политическим вопросом», — говорит Филипп Нантермод (Philippe Nantermod), депутат федерального парламента Швейцарии от партии Либералов (FDP). В целом же он согласен, что такие компании, как UBER, должны в будущем регулироваться иначе.

Партия либералов призывает к совершенствованию правового статуса самозанятого работника, который позволял бы быть и индивидуальным предпринимателем, но при этом и гарантировал бы определенный уровень социальной защиты. Вопрос же о том, кто должен будет тогда делать отчисления в фонды социального страхования, остается открытым. По мнению К. Капакоэля, все это не выход. «Некоторые политики, очевидно, больше озабочены тем, как легализовать новые модели цифровой эксплуатации, чем тем, как заставить такие компании соблюдать швейцарское трудовое законодательство». Так или иначе, этот вопрос еще очень далек от разрешения.

В соответствии со стандартами JTI

В соответствии со стандартами JTI

Показать больше: Сертификат по нормам JTI для портала SWI swissinfo.ch

Изменить пароль

Вы действительно хотите удалить Ваш аккаунт?

Ваша подписка не может быть сохранена. Пожалуйста, попробуйте еще раз.
Почти все закончено, еще немного… Вам необходимо подтвердить Ваш электронный адрес Для завершения процесса подписки, пожалуйста, пройдите по адресу, который мы Вам выслали по электронной почте

Читайте наши самые интересные статьи недели.

Подпишитесь, чтобы получать наши лучшие статьи по электронной почте.

Политика конфиденциальности SRG предоставляет дополнительную информацию о том, как обрабатываются ваши данные.