Arquivo

Archive for abril \24\UTC 2015

NFe – webservice

24 de abril de 2015 Deixe um comentário

Você encontra em https://www.nfe.fazenda.gov.br/portal/webServices.aspx a lista completa dos webserices(WS) para usar com a Nota Fiscal Eletrônica (NFe). Dados em 24/04/2015.

Como é dito no site acima, os Estados (UF): AC, AL, AP, DF, PB, RJ, RN, RO, RR, SC, SE, TO usam o a SVRS – Sefaz Virtual do RS para serviços relacionados com o sistema da NF-e.


Como meu cliente é SC, a minha aplicação deve usar:

Sefaz Virtual Rio Grande do Sul – (SVRS)

Serviço : NfeConsultaDest
Versão: 2.00
URL: https://nfe.svrs.rs.gov.br/ws/nfeConsultaDest/nfeConsultaDest.asmx

 

Porém, depois de abrir o ws e informar o Certificado Digital. Minha aplicação recebe:

Erro: Not found(404)

 

Teste básico.

Será que abre nos navegadores instalados no meu PC?

Internet Explorer

erro_404_IE

Chorme

erro_404_Chorme

Firefox

erro_404_Firefox

 

Conclusão, o problema não é o navegador.

Como a própria descrição do HTTP 404 diz, o problema não é no seu PC e sim no servidor onde está o WS. Resumindo o endereço WS não está funcionando.


Solução:

Conforme instrução do próprio site https://www.nfe.fazenda.gov.br/portal/webServices.aspx 

na lista completa existe o Ambiente Nacional – (AN) e lá temos

Serviço : NfeConsultaDest
Versão: 2.00 / 3.10
URL: https://www.nfe.fazenda.gov.br/NFeConsultaDest/NFeConsultaDest.asmx

NFeConsultaDest

Certificado Digital, IE, Chorme, Firefox

24 de abril de 2015 Deixe um comentário

A guerra da instalação e uso do Certificado Digital com os diversos navegadores do mercado e também com as aplicações dos milhares de desenvolvedores que normalmente usam API para acessar os recursos dos navegadores.

Passei por um problema com uma aplicação que ao tentar acessar o webservice https://nfe.svrs.rs.gov.br/ws/nfeConsultaDest/nfeConsultaDest.asmx, recebe como resposta:

Erro: 403 – Forbidden: Access is denied.

Teste básico.

Será que abre ao usar um dos navegadores instalados no meu PC?

  • Internet Explorer
  • Chorme
  • Firefox

Internet Explorer ( IE )

OK, sem problema, o IE solicitou Certificado Digital normalmente.

 

Chorme

Erro 403 – Forbidden: Access is denied, o Chorme não solicitou o Certificado Digital.

Possiveis causas/soluções:

a. Verificar a versão do Java, deve ser 7 ou superior

java7update60

b. Não consigo instalar meu certificado A1 pelo Chrome. Ao tentar instalar aparece mensagem "Este plug-in não é suportado". O que devo fazer? http://goo.gl/FkdAwc (23)
R: A partir de abril de 2015, iniciando com a versão do Google Chrome 42, a Google adicionou uma etapa para configurar plug-ins baseados na NPAPI como o Java para execução. E é por esta razão que este tipo de mensagem é exibida. Para solucionar este impasse, execute os procedimentos descritos a seguir:
Chorme42

1. Em sua barra de URL, informe: chrome://flags/#enable-npapi
2. Clique no link Ativar da opção de configuração Ativar a NPAPI.
3. Clique no botão Reiniciar Agora que vai aparecer na parte inferior da página de configuração.

Chorme42ativarNPAPI
Desenvolvedores e administradores de Sistema que buscam maneiras alternativas de suportar usuários do Chrome devem consultar este blog, em particular as seções "Running Web Start applications outside of a browser" e "Additional Deployment Options".
Fonte: http://www.java.com/pt_BR/download/faq/chrome.xml

 


 

Firefox

Erro 403 – Forbidden: Access is denied, o Firefox não solicitou o Certificado Digital.

Possiveis causas/soluções:

a. Verificar a versão do Java, deve ser 7 ou superior

java7update60

b. Quando tento usar o meu certificado para fazer um acesso a um site seguro como o e-CAC, não tenho sucesso e o navegador exibe um erro número 403. O que pode estar errado? http://goo.gl/FkdAwc (16)
R: O erro 403 ocorre nas seguintes situações:
a) O certificado digital foi emitido por uma AC que não é aceita como válida pelo site seguro em questão;
b) O certificado está expirado;
c) O certificado está incompleto, ou seja, não possui a chave privada;
d) A Cadeia de Certificados da Autoridade que emitiu o certificado digital não está devidamente instalada no repositório do Windows ou no navegador (Firefox);

Para instalar abra no Firefox em http://www.iti.gov.br/icp-brasil/navegadores/188-atualizacao/4526-mozilla e siga os passos indicados.

Caso precisar de manual mais detalhado entre em http://www.planalto.gov.br/ACPR/dowloard/Uso%20do%20Certificado%20no%20Mozilla%20Firefox.pdf

 


 

Quando tudo está resolvido, os navegadores devem apresentar o Certificado Digital:

Internet Explorer

certificado_IE

Chorme

certificado_Chorme

Firefox

certificado_Firefox

Agora que todos navegadores funcionam.

Voltei na aplicação e o problema também foi resolvido, ou seja, ao tentar acessar o web service https://nfe.svrs.rs.gov.br/ws/nfeConsultaDest/nfeConsultaDest.asmx, o Certificado Digital é exibido como no navegador.

Como completar sequência de “n” números pulados?

17 de abril de 2015 2 comentários

Tenho uma tabela de Cadastro de Vendedor, porém com o CODIGO pulado.

Seq_Number_Pulado_Range_Faixa

Como completar o cadastro com os números pulados, até um “n” limite?

CODIGO NOME
001 João
002 VENDEDOR 002
003 Maria
004 Ricardo
005 Silvia
006 VENDEDOR 006
007 VENDEDOR 007
008 Marcos
009 VENDEDOR 009
010 Antonio
… ATÉ
049 VENDEDOR 049
050 Carlos
… ATÉ
299 VENDEDOR 299
300 Externo – Carlos
301 Externo – Juliana
… ATÉ
308 EXTERNO – 308
309 Externo – Renato
… ATÉ
399 EXTERNO – 399

Sabemos que:

a) O último código que desejamos inserir é 399.

b) Quando o código for menor que 300, o campo NOME deve ser VENDEDOR + CODIGO

c) Quando o código for maior que 300, o campo NOME deve ser EXTERNO + CODIGO

 

Problema:

Como encontrar as faixas/ranges de códigos pulados que são:

[2]; [6,7]; [9]; [11..49]; [51..299]; [302..307]; [310..399]

 

Solução:

Criaremos uma sequência completa de códigos [1..399].

Depois, vamos subtrair os códigos já cadastrados da lista completa.

Sobrando os códigos pulados.

Agora é só inserir os código pulados na tabela de Cadastro de Vendedores.

 

O detalhe está em na criação da tal lista completa de 1 até 399, para isso existem diversas possibilidades.

Fica a pergunta:

E se o último valor for 1.000.000?

Precisamos escrever um comando rápido e dinânico.

Para isso, publiquei Como criar uma tabela contendo uma sequência de "n" números?


Vamos aos comandos:

 

PRINT ‘
Preparando o cenário
======================’
CREATE TABLE #Tab_Vendedor (
Codigo CHAR(3),
Nome VARCHAR(100)
)

INSERT INTO #Tab_Vendedor VALUES(‘001’, ‘João’)
INSERT INTO #Tab_Vendedor VALUES(‘003’, ‘Maria’)
INSERT INTO #Tab_Vendedor VALUES(‘004’, ‘Ricardo’)
INSERT INTO #Tab_Vendedor VALUES(‘005’, ‘Silvia’)
INSERT INTO #Tab_Vendedor VALUES(‘008’, ‘Marcos’)
INSERT INTO #Tab_Vendedor VALUES(‘010’, ‘Antonio’)
INSERT INTO #Tab_Vendedor VALUES(‘050’, ‘Carlos’)
INSERT INTO #Tab_Vendedor VALUES(‘300’, ‘Externo – Carlos’)
INSERT INTO #Tab_Vendedor VALUES(‘301’, ‘Externo – Juliana’)
INSERT INTO #Tab_Vendedor VALUES(‘309’, ‘Externo – Renato’)

PRINT ‘
PASSO 1 – Lista de CODIGO cadastrados
==========’
SELECT * FROM #Tab_Vendedor

Seq_Number_Pulado_Range_Faixa

PRINT ‘
PASSO 2 – Lista com a sequência completa de 1 até 399
==========’
CREATE TABLE #Tab_Sequencia(
  Numero INT
)

DECLARE @Qtde_Numeros int, @Limite_Recursividade int
SET @Qtde_Numeros = 399
SET @Limite_Recursividade = 0

EXEC (
‘WITH n(n) AS
(
    SELECT 1
    UNION ALL
    SELECT n+1 FROM n WHERE n < ‘ + @Qtde_Numeros + ‘
)
INSERT INTO #Tab_Sequencia
SELECT n FROM n ORDER BY n
OPTION (MAXRECURSION ‘ + @Limite_Recursividade + ‘)’
)

SELECT * FROM #Tab_Sequencia

PRINT ‘
PASSO 3 – Comparar as duas listas, subtrair os códigos já cadastrados da lista completa.

==========’

SELECT S.Numero
FROM  #Tab_Sequencia S
WHERE S.Numero NOT IN (SELECT V.Codigo FROM #Tab_Vendedor V WHERE S.Numero = V.Codigo)

PRINT ‘
PASSO 4 – Usar o resultado encontrado para cadastrar na Tabela de Vendedores.
==========’

INSERT INTO #Tab_Vendedor (Codigo, Nome)
SELECT Codigo = RIGHT(‘000’ + CONVERT(VARCHAR(3),S.Numero), 3)
     , Nome = (CASE WHEN S.Numero <= 300 THEN ‘VENDEDOR ‘ ELSE ‘EXTERNO – ‘ END)
              + RIGHT(‘000’ + CONVERT(VARCHAR(3),S.Numero), 3)
FROM  #Tab_Sequencia S
WHERE S.Numero NOT IN (SELECT V.Codigo FROM #Tab_Vendedor V WHERE S.Numero = V.Codigo)

SELECT * FROM #Tab_Vendedor ORDER BY Codigo

Seq_Number_Pulado_Range_Faixa_Completa

DROP TABLE #Tab_Sequencia
DROP TABLE #Tab_Vendedor

Como criar uma tabela contendo uma sequência de "n" números?

17 de abril de 2015 1 comentário

Vamos usar a tabela temporária, chamada: #TabelaSequencia

O resultado desejado é:

SELECT n FROM #TabelaSequencia

Seq_Number

Solução A: Usar repetidos comandos ( manualmente )
=================================================
Quando a quantidade de “n” valores é pequena.

CREATE TABLE #TabelaSequencia(n INT)
GO

INSERT INTO #TabelaSequencia(n)
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
UNION
SELECT 6
UNION
SELECT 7
UNION
SELECT 8
UNION
SELECT 9
UNION
SELECT 10

SELECT n FROM #TabelaSequencia
GO

DROP TABLE #TabelaSequencia
GO

 


 

Solução B: Usar um laço ( loop )
=================================================
Quando a quantidade de “n” valores é grande.
Usando o WHILE no caso n=10, mas poderia ser n=10000

CREATE TABLE #TabelaSequencia(n INT)
GO

WHILE (SELECT ISNULL(MAX(n),0) FROM #TabelaSequencia) < 10
BEGIN
INSERT INTO #TabelaSequencia(n)
SELECT ISNULL(MAX(n),0) + 1 FROM #TabelaSequencia
END
GO

SELECT * FROM #TabelaSequencia
GO

DROP TABLE #TabelaSequencia
GO


 

Solução C: Usar recursividade
=================================================
Quando a quantidade de “n” valores é grande.
Usando o MAXRECURSION no caso n=10, mas poderia ser n=10000

WITH #TabelaSequencia(n) AS
(
SELECT 1
UNION ALL
SELECT n+1 FROM #TabelaSequencia WHERE n < 10
)

SELECT n FROM #TabelaSequencia ORDER BY n
OPTION (MAXRECURSION 10)
GO

 

Caso a quantidade de “n” valores for maior que 32767
Será exibido o aviso de erro:

Msg 310, Level 15, State 1, Line 10
The value 32768 specified for the MAXRECURSION option exceeds the allowed maximum of 32767.

Para resolver  troque o limite (MAXRECURSION 32768) para ZERO (MAXRECURSION 0)

Fonte: http://sqlperformance.com/2013/01/t-sql-queries/generate-a-set-1


 

Faça testes de desempenho/performance, com cada solução, para os limites de “n”:

n n n n n n n
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 32768 32768 32768
4
5
6
7
8
9
10 100 1000 10000 50000 100000 1000000

Como abrir/altera arquivo XML grande ?

3 de abril de 2015 Deixe um comentário

Certa vez precisei ver o conteúdo de um arquivo XML, porém ele era muito grande e não abria no IE, Chorme, Notepad, etc.

Qual o tamanho do arquivo?

Ele tinha 23mb.

Naquele dia eu tentei, tentei e resolvi deixar processando até que depois de muito, muito tempo ele abriu no Notepad++

Hoje lembrei desse caso e resolvi pesquisar.

Encontrei o XML Notepad 2007 no site oficial da Microsoft ele que é grátis, caso site não funcionar baixar aqui.

Com ele eu abrir o mesmo arquivo em segundos.

 

image

XML Notepad 2007 provides a simple intuitive user interface for browsing and editing XML documents.

    Handy features include:

  • Tree View synchronized with Node Text View for quick editing of node names and values.
  • Incremental search (Ctrl+I) in both tree and text views, so as you type it navigates to matching nodes.
  • Cut/copy/paste with full namespace support.
  • Drag/drop support for easy manipulation of the tree, even across different instances of XML Notepad and from the file system.
  • Infinite undo/redo for all edit operations.
  • In place popup multi-line editing of large text node values.
  • Configurable fonts and colors via the options dialog.
  • Full find/replace dialog with support for regex and XPath.
  • Good performance on large XML documents, loading a 3mb document in about one second.
  • Instant XML schema validation while you edit with errors and warnings shown in the error list window.
  • Intellisense based on expected elements and attributes and enumerated simple type values.
  • Support for custom editors for date, dateTime and time datatypes and other types like color.
  • Handy nudge tool bar buttons for quick movement of nodes up and down the tree.
  • Inplace HTML viewer for processing xml-stylesheet processing instructions.
  • Built-in XML Diff tool.
  • Support for XInclude
  • Dynamic help from XSD annotations.
  • Goto definition to navigate includes and XSD schema information.
  • Supported Operating System

    Windows Server 2003, Windows Vista, Windows XP, Windows XP Home Edition

    .NET Frameworks v2.0

Obs.: funcionar no Windows 7

    Leia também:

SIMRelatórios – Criar relatório SEM escrever Código SQL

3 de abril de 2015 Deixe um comentário

Estou muito feliz, pois, ministrarei nos dia 16 e 17 de abril 2015 o primeiro hands-on da Microdata. Este é o primeiro de três módulos sobre desenvolvimento de relatórios.

 

A Microdata Sistemas está lançando o treinamento “Desenvolvendo relatórios com SIMRelatórios”. O SIMRelatórios é um gerador de relatórios baseado em assistentes e integrado aos Sistemas Microdata que está disponível para todos clientes.

 

Você não precisa saber código SQL, para fazer esse treinamento

 

Treinamento_SIMRelatorios_Abril2015