Dynamics CRM – Erro ao setar data 20/10/2013

By | 11/09/2013

Hoje me deparei com o seguinte problema em um formulário do Dynamics CRM quando informado o valor de data 20/10/2013, automaticamente o valor era alterado para 01/01/1970.

Estranhando o comportamento, fui atrás de onde ocorre o erro e encontrei esse trecho de código do js datetime.js

Mscrm.DateTimeUtility.$3d=function($p0,$p1,$p2){

if($p1===Sys.CultureInfo.CurrentCulture)return Date.parseLocale($p0,$p2);
else if(Date._parse)return Date._parse($p0,$p1,[null,$p2]);
return null
};

Quando ele usa a função parseLocale(“20/10/2013″,”d”), onde $p0 = 20/10/2013 e $p2 = d. Quando ele realiza o parse ele vai para a data de 19/10/2013 e ai que começa os problemas.

Após ele executa a seguinte função

$d_4:function($p0){
var $v_0=$p0.getHours(),$v_1=new Date($p0.getDate());
if(!$v_0)return $p0;
$v_0>12&&$v_0<=23&&$v_1.setDate($v_1.getDate()+1);
for(var $v_2,$v_4,$v_5=0,$v_3=0;
$v_3<3;
$v_3++){
switch($v_3){
case 0:$v_5=25;
break;
case 1:case 2:$v_5=61;
break
}
for($v_4=0;
$v_4<$v_5;
$v_4++){
$v_2=new Date($v_1.getFullYear(),$v_1.getMonth(),$v_1.getDate(),!$v_3?$v_1.getHours()-1:$v_1.getHours(),$v_3===1?$v_1.getMinutes()-1:$v_1.getMinutes(),$v_3===2?$v_1.getSeconds()-1:$v_1.getSeconds());
if($v_2.getDate()===$v_1.getDate())$v_1=$v_2;
else $v_4=$v_5
}

}
return $v_1
}

Aqui ele vai executar $p0.getHours() com o valor 23 e gera uma nova data, somente com o dia do objeto $p0, com o dia (31/12/1969). Após ele valida se a hora está entre > 12 e <= 23 e como está ele acrescenta mais um dia da nova data gerada chegando ao 01/01/1970.

Abrimos um caso de suporte com a Microsoft. É um bug conhecido por eles, abaixo segue os passos para solução de contorno, pois a solução irá vir na próxima atualização, com o codinome Orion.

Solução de contorno:

Ajustar fuso horário do equipamento cliente para uma das seguinte opções:

1 – Desmarcar a opção ‘Automatically adjust clock for Daylight Saving Time’ para fuso horário (UTC-03:00) Brasilia:

post_data_20_10_2013_contorno_1

2 – Alterar fuso horário para algum que não possua horário de verão, tal como (UTC -03:00), Buenos Aires:

post_data_20_10_2013_contorno_2

Com isso resolvemos temporariamente o problema até que a atualização venha e corrija.

Frederik Speler”s Portfolio – Online Casino Spellen

Grasp a dumbbell in each hand, stand, feet shoulder read this book review width apart and knees slightly bent.

2 thoughts on “Dynamics CRM – Erro ao setar data 20/10/2013

  1. Zang

    Um adendo: acontece o mesmo problema para a data 19/10/2014. Salvou-me novamente! Valeu meu!

    Reply
  2. Alexandre Kohn

    Também cheguei aqui por conta de 19/10/2014.

    Obrigado pela dica.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Protected by WP Anti Spam