Boa tarde,
Faço exatamente dessa forma que você faz, vou te mandar aqui vai que te ajuda em algo.
function ConfigurarNFSeX....
begin
Result := True;
try
//Abre as querys que serão utilizadas
AbrirQuery(nf);
ACBrNFSeX1.NotasFiscais.Clear;
//Configura o componente ACBR
ACBrNFSeX1.Configuracoes.Certificados.ArquivoPFX := '';
ACBrNFSeX1.Configuracoes.Certificados.Senha := '';
ACBrNFSeX1.Configuracoes.Certificados.NumeroSerie := '';
ACBrNFSeX1.Configuracoes.Geral.Versao := LerVersao();
ACBrNFSeX1.Configuracoes.Geral.Provedor := LerProvedor();
ACBrNFSeX1.Configuracoes.Geral.LayoutNFSe := lnfsPadraoNacionalv1;
ACBrNFSeX1.SSL.DescarregarCertificado;
with ACBrNFSeX1.Configuracoes.Geral do
begin
SSLLib := libWinCrypt;
SSLCryptLib := cryWinCrypt;
SSLXmlSignLib := xsLibXml2;
SSLHttpLib := httpWinHttp;
Salvar := True;
ExibirErroSchema := True;
RetirarAcentos := False;
IdentarXML := True;
RetirarEspacos := True;
FormatoAlerta := 'TAG:%TAGNIVEL% ID:%ID%/%TAG%(%DESCRICAO%) - %MSG%.';
FormaEmissao := svgFormaEmissaoNFE;
ConsultaLoteAposEnvio := True;
ConsultaAposCancelar := True;
CNPJPrefeitura := qry.FieldByName('CNPJDAPREFEITURA').AsString;
Emitente.CNPJ := qry.FieldByName('NROINSCRICAO').asString;
Emitente.InscMun := qry.FieldByName('INSCRICAOMUNICIPAL').asString;
Emitente.RazSocial := qry.FieldByName('NOME').asString;
Emitente.WSUser := qry.FieldByName('SERVICO_WEBSERVICES_LOGIN').AsString;
Emitente.WSSenha := qry.FieldByName('SERVICO_WEBSERVICES_SENHA').AsString;
Emitente.WSFraseSecr := '';
Emitente.WSChaveAcesso := '';
Emitente.WSChaveAutoriz := '';
end;
with ACBrNFSeX1.Configuracoes.WebServices do
begin
Ambiente := LerAmbienteNFServico;
Visualizar := True;
Salvar := True;
UF := qry.FieldByName('ESTADO').AsString;
AguardarConsultaRet := 20000;
AjustaAguardaConsultaRet := True;
Tentativas := 15;
TimeOut := 15000;
IntervaloTentativas := 3000;
end;
// A propriedade CodigoMunicipio tem que ser a ultima a receber o seu valor
// Pois ela se utiliza das demais configurações
ACBrNFSeX1.LerCidades;
ACBrNFSeX1.Configuracoes.Geral.CodigoMunicipio := StrToIntDef(qry.FieldByName('CIDIBGE').AsString, 0);
except
on e : exception do
begin
//erro aqui
end;
end;
end;
Após isso só gerar o xml, ler o certificado e emitir
ACBrNFSeX1.Emitir(qry.FieldByName('NOTAFISCAL').asString, meUnitario);