UNIDANFE - Não consigo transmitir nome do arquivo .XML

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

UNIDANFE - Não consigo transmitir nome do arquivo .XML

Mensagem por billy1943 »

Antes de transferir o meu sistema operacional, de XP para Windows 7, minhas rotinas na forma do pequeno fonte abaixo funcionavam legal.
Nessa transferência, o meu drive D, onde estavam as aplicações eram acessadas na forma "D:\empresa01\" e assim por diante.
Quanto houve a formatação para Windows 7 o técnico deixou o drive onde estão as aplicações na forma: "c:\disco d\empresa01\" ...
O problema está no seguinte:

No DOS a forma "c:\discod~1\empresa01\" funciona.

Mas quando envolvem programas em Windows, tais como o UNIDANFE (uso-o somente para imprimir/visualizar o DANFE), ele acessa o mesmo mas não considera o arquivo .XML informado, exigindo que eu acesse o arquivo usando o Windows Explorer, perdendo a finalidade, que seria o acesso automático de dentro do meu sistema.
Nas instruções do UNIDANFE para Clipper é informado que os espaços devem ser deixados, desde que o caminho (path) esteja entre aspas.
Já testei com espaços, sem espaços, toda forma.

Onde está o erro, ou ainda, como poderia fazer o mesmo com outro software ou função ?

Código: Selecionar todos

cls
xnome_xml := "35140300255889000158550040000377821047692460-procNfe.xml"
xarquivo  := "c:\discod~1\empresa01\nfe_xml\" + alltrim(xnome_xml) 
xparam1   := " edicao=free"
xcomando  := 'c:\unimake\unidanfe.exe arquivo = '+ ;
              xarquivo +  xparam1 
run(xcomando)
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

UNIDANFE - Não consigo transmitir nome do arquivo .XML

Mensagem por Eolo »

xarquivo := "c:\discod~1\empresa01\nfe_xml\" + alltrim(xnome_xml)
Billy, eu acho que é o seguinte:
- sem as aspas, é preciso usar o nome 8/3 correspondente, DISCOD~1.
- com as aspas, use o nome real, DISCO D.

Do jeito que vc fez, está sendo procurada uma pasta de nome (não 8/3) DISCOD~1, e essa pasta não existe.

xarquivo := "c:\disco d\empresa01\nfe_xml\" + alltrim(xnome_xml)
deve resolver...
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

UNIDANFE - Não consigo transmitir nome do arquivo .XML

Mensagem por billy1943 »

Olá Eolo,

Tentei das formas indicadas mas ainda não está acessando o arquivo.

Chega até a abrir o software Unidanfe mas não traz o arquivo informado já aberto.

Ocorreu-me que poderia ser pelo nome longo do arquivo .XML que tem mais de 40 caracteres.

Não seria o caso ?
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

UNIDANFE - Não consigo transmitir nome do arquivo .XML

Mensagem por Eolo »

Outra tentativa.
Tentou colocar TUDO entre aspas? Ou seja, aspas (") dentro das aspas (') ?
Algo como...

x='"'+alltrim(xnome_xml)+'"'
x='"'c:\disco d\empresa01\nfe_xml\'"'+x
?x -> "c:\disco d\empresa01\nfe_xml\arquivodenomecompridodemaisquenemcabenajanelablablablablablablaetcetals123deoliveira4blablablablabla"

Num lembro onde nem quando, mas já me deparei com algo parecido.
Avatar do usuário
bencz
Usuário Nível 4
Usuário Nível 4
Mensagens: 524
Registrado em: 28 Abr 2012 17:36
Contato:

UNIDANFE - Não consigo transmitir nome do arquivo .XML

Mensagem por bencz »

Nossa, trabalhei na UniMake, a empresa que desenvolveu o UniDanfe, Unico, UniNFE e etc....

Mas enfim, se não estou enganado, você tem que fazer isso que o Eolo falou, o output final tem que ser com aspas...

Vamos supor que você vai executar um programa por linha de comando onde você tem que passar como argumento um diretorio, e nesse diretorio o nome dele contenha espaços... logo, você tem que colocar entre aspas ( " ), correto ?
Então, o mesmo se tem que fazer nos parâmetros do UniDanfe. (:

Em caso de problemas maiores, você pode forçar as aspas:

Código: Selecionar todos

function main()
    Qout( chr(34) + "Ola mundo!!!" + chr(34))
return nil
Sendo o chr 34 as aspas...
Imagem
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

UNIDANFE - Não consigo transmitir nome do arquivo .XML

Mensagem por Kapiaba »

Código: Selecionar todos

         xParam1 := " edição=Free imprimir=1 visualizar=1 logotipo="       + ;
                      cLogoEmpresa + " copias=" + ALLTRIM( STR( nCopias ) )
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

UNIDANFE - Não consigo transmitir nome do arquivo .XML

Mensagem por billy1943 »

RESOLVIDO.

No âmbito de uma rotina bem maior, que envolve a colocação no arquivo de Notas Fiscais emitidas, o nome do arquivo .XML bem como o protocolo existente dentro do mesmo, agreguei a exibição
ou impressão do DANFE utilizando o UNIDANFE e deu certo.

Esclareço porém que a rotina acessa os arquivos em .XML faz uso das LIB para nomes longos (LFN,LL), fora do formato DOS (8.3).

Assim, agradeço a ajuda e pesquisa que os colegas me prestaram e fico ao dispor em poder retribuir.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

UNIDANFE - Não consigo transmitir nome do arquivo .XML

Mensagem por billy1943 »

Apesar de informar que já havia resolvido a questão objeto deste tópico, coloco abaixo a rotina que exibe o DANFE da NFE, desde que no campo nome_xml da mesma,
já tenha sido inserido o nome do arquivo fornecido pelo SEFAZ, na forma: 35................. procNfe.xml
Os campos que contém os path necessários estão do arquivo PNFE com o caminho completo para o sistema localizar não só os .XML, e também onde está o UNIDANFE.EXE
necessário à rotina.

Ela facilita bastante a exibição ou re-impressão de NFE.

Código: Selecionar todos

PROCEDURE veimprdanfe
local xtelin := savescreen()
local xpath_xml
local xpath_unida
local xarquivo
local xnome_xml
ABREPNFE(0)
select pnfe
xpath_xml    := alltrim(pnfe->path_xml)
xpath_unida  := alltrim(pnfe->path_unida)
close
select nota

if nota->nome_xml <> space(40)

   xcomando := xpath_unida + "\unidanfe.exe arquivo=" + ;
               xpath_xml + "\" + alltrim(nome_xml) + ;
               " edicao=free"
   run &xcomando.

else

   msg_tecla("A Nota Fiscal ainda não tem .XML gravado.")  

endif

restscreen(,,,,xtelin)
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder