- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- ROTINA CUSTOMIZADA EXECUTAR SOZINHA
×
Linguagem de Programação ADVPL
Perguntas ROTINA CUSTOMIZADA EXECUTAR SOZINHA
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 3 meses atrás #16334
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico ROTINA CUSTOMIZADA EXECUTAR SOZINHA
Brother em 2 horas estarei em casa e te ajudo ok.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- filipe.abreu
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
11 anos 3 meses atrás #16336
por filipe.abreu
Respondido por filipe.abreu no tópico ROTINA CUSTOMIZADA EXECUTAR SOZINHA
Ok obrigado pela ajuda Luiz.
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 3 meses atrás - 11 anos 3 meses atrás #16338
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico ROTINA CUSTOMIZADA EXECUTAR SOZINHA
Filipe aqui o exemplo de como vc vai ler um XML:
cError := ''
cWarning := ''
cMV_PAR01 := RTrim(Upper(cArq))
aCabPV := {}
aItemPV := {}
oXml := XmlParserFile(cMV_PAR01, "_", @cError, @cWarning)
If !(oXml == Nil .Or. (Len(cError) > 0) .Or. (Len(cWarning) > 0))
_dEmissao := Left(Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_ORDERDATE:TEXT),10)
// 2007-08-01
_dEmissao := CtoD( Right(_dEmissao,2)+'/'+SubStr(_dEmissao,6,2)+'/'+Left(_dEmissao,4) )
_cFixo104 := Right(Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_ORDERID:TEXT),6)
_cFixo106 := "000001"
_cFixo107 := "001"
cFabric := Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_SHIPTO:_ADDRESS:_NAME:TEXT)
_cLocalEn := Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_SHIPTO:_ADDRESS:_POSTALADDRESS:_DELIVERTO[1]:TEXT)
_cFixo122 := Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_SHIPTO:_ADDRESS:_PHONE:_TELEPHONENUMBER:_NUMBER:TEXT)
_cEmail := Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_SHIPTO:_ADDRESS:_EMAIL:TEXT)
// _cFixo121 := Iif(Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_EXTRINSIC[3]:_COMMENT:_COMMENTBY:TEXT)=NIL,_cEmail,Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_EXTRINSIC[3]:_COMMENT:_COMMENTBY:TEXT))
_cFixo121 := _cEmail
cError := ''
cWarning := ''
cMV_PAR01 := RTrim(Upper(cArq))
aCabPV := {}
aItemPV := {}
oXml := XmlParserFile(cMV_PAR01, "_", @cError, @cWarning)
If !(oXml == Nil .Or. (Len(cError) > 0) .Or. (Len(cWarning) > 0))
_dEmissao := Left(Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_ORDERDATE:TEXT),10)
// 2007-08-01
_dEmissao := CtoD( Right(_dEmissao,2)+'/'+SubStr(_dEmissao,6,2)+'/'+Left(_dEmissao,4) )
_cFixo104 := Right(Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_ORDERID:TEXT),6)
_cFixo106 := "000001"
_cFixo107 := "001"
cFabric := Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_SHIPTO:_ADDRESS:_NAME:TEXT)
_cLocalEn := Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_SHIPTO:_ADDRESS:_POSTALADDRESS:_DELIVERTO[1]:TEXT)
_cFixo122 := Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_SHIPTO:_ADDRESS:_PHONE:_TELEPHONENUMBER:_NUMBER:TEXT)
_cEmail := Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_SHIPTO:_ADDRESS:_EMAIL:TEXT)
// _cFixo121 := Iif(Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_EXTRINSIC[3]:_COMMENT:_COMMENTBY:TEXT)=NIL,_cEmail,Rtrim(oXml:_CXML:_REQUEST:_ORDERREQUEST:_ORDERREQUESTHEADER:_EXTRINSIC[3]:_COMMENT:_COMMENTBY:TEXT))
_cFixo121 := _cEmail
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Ultima edição: 11 anos 3 meses atrás por lalberto.
Por favor Acessar ou Registrar para participar da conversa.
- filipe.abreu
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
11 anos 3 meses atrás #16343
por filipe.abreu
Respondido por filipe.abreu no tópico ROTINA CUSTOMIZADA EXECUTAR SOZINHA
Luiz o problema é o seguinte, veja este código:
cXmlRet:= httpGet(cURLH) //<-- me retorna uma string com o conteudo no formato de um arquivo XML
/*
<result>
<resourceName>activityHistory</resourceName>
<size>2</size>
<entries>
<entry id="5632444" link="/activityHistory/5632444.xml"/>
<entry id="5632553" link="/activityHistory/5632553.xml"/>
</entries>
</result>*/
oXML:= XmlParser(cXmlRet, "_", @cError, @cWarning)
// se eu tentar pegar o conteudo do nó 'resourceName' para dentro de uma variavel ou campo dá certo
cRsName:= oXML:_result:_resourceName:text
/*
mas como eu faria para pegar o id do nó entry?? se ele estivesse assim: <entry><id>5632444</id></entry> eu conseguiria pegar do mesmo jeito que fiz com resourceName, no seu código exemplo não consegui entender como ajudaria neste caso.
*/
cXmlRet:= httpGet(cURLH) //<-- me retorna uma string com o conteudo no formato de um arquivo XML
/*
<result>
<resourceName>activityHistory</resourceName>
<size>2</size>
<entries>
<entry id="5632444" link="/activityHistory/5632444.xml"/>
<entry id="5632553" link="/activityHistory/5632553.xml"/>
</entries>
</result>*/
oXML:= XmlParser(cXmlRet, "_", @cError, @cWarning)
// se eu tentar pegar o conteudo do nó 'resourceName' para dentro de uma variavel ou campo dá certo
cRsName:= oXML:_result:_resourceName:text
/*
mas como eu faria para pegar o id do nó entry?? se ele estivesse assim: <entry><id>5632444</id></entry> eu conseguiria pegar do mesmo jeito que fiz com resourceName, no seu código exemplo não consegui entender como ajudaria neste caso.
*/
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 3 meses atrás #16344
por kanaamlrr
Respondido por kanaamlrr no tópico ROTINA CUSTOMIZADA EXECUTAR SOZINHA
Filipe,
da uma olhada no seu debug quais propriedades estão disponíveis para o node Entry, ele pode estar atribuindo o id em outro atributo que não o text.
Na pior das hipóteses você pode fazer uma busca por string, porém isso vai derrubar sua performance.
da uma olhada no seu debug quais propriedades estão disponíveis para o node Entry, ele pode estar atribuindo o id em outro atributo que não o text.
Na pior das hipóteses você pode fazer uma busca por string, porém isso vai derrubar sua performance.
Por favor Acessar ou Registrar para participar da conversa.
- filipe.abreu
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
11 anos 3 meses atrás #16346
por filipe.abreu
Respondido por filipe.abreu no tópico ROTINA CUSTOMIZADA EXECUTAR SOZINHA
Consegui!!
Tendo como base o código que passei acima, para acessar uma propriedade do node é só fazer assim:
cID:= oXml:_result:_entries:_entry[1]:_id:text , os filhos(entry) de entries são tidos como um array, e é necessário vc apontar qual a propriedade que vc quer pegar.
se eu preferisse pegar a propriedade link, no lugar de _id seria _link. Espero ter ajudado.
Realmente Luiz no seu exemplo tem algo parecido, obrigado pela ajuda. Só peço para não fechar o tópico ainda pq não conclui a questão da rotina executar sozinha. assim que fazer alguns testes posto aqui se deu certo ou não.
Tendo como base o código que passei acima, para acessar uma propriedade do node é só fazer assim:
cID:= oXml:_result:_entries:_entry[1]:_id:text , os filhos(entry) de entries são tidos como um array, e é necessário vc apontar qual a propriedade que vc quer pegar.
se eu preferisse pegar a propriedade link, no lugar de _id seria _link. Espero ter ajudado.
Realmente Luiz no seu exemplo tem algo parecido, obrigado pela ajuda. Só peço para não fechar o tópico ainda pq não conclui a questão da rotina executar sozinha. assim que fazer alguns testes posto aqui se deu certo ou não.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- ROTINA CUSTOMIZADA EXECUTAR SOZINHA
Tempo para a criação da página:0.108 segundos