- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ponto de entrada AT300VAL
×
Linguagem de Programação ADVPL
Perguntas Ponto de entrada AT300VAL
- manoelcarlosjunior
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 116
- Obrigados Recebidos: 0
9 anos 10 meses atrás #26755
por manoelcarlosjunior
Ponto de entrada AT300VAL foi criado por manoelcarlosjunior
Boa tarde Galera !!!
Estou precisando de fazer um preenchimento automático de um campo customizado.
ao efetivar um orçamento chamado técnico como orçamento. o PE é o AT300VAL.
O campo customizado esta na AB6(AB6_XCHAM) e eu quero jogar um campo tabela AB1(AB1_NRCHAM) tabela de chamado técnico.
Tentei de duas formas.:
Da forma 1 acredito que não deu certo devido relacionamento limitado das tabelas da forma 2 acredito que deu errado porque o campo AB1_NRCHAM tem 88 caracteres e o AB6_XCHAM tem espaço pra 10.
1 - UPDATE
AB6010
SET AB6_ZZCLI = AB1_XNRCLI, AB6_XCHAM = AB1_NRCHAM
FROM AB6010 AB6
LEFT JOIN AB1010 AB1 ON AB6_FILIAL = AB1_FILIAL
AND AB6_CODCLI = AB1_CODCLI
AND AB6_LOJA = AB1_LOJA
AND AB1.D_E_L_E_T_ = ''
WHERE AB6.D_E_L_E_T_ = ' '
AND AB6_ZZCLI = ' '
2 - DBSelectArea("AB6")
AB6->(DBSetOrder(2))
AB6->(DBSeek(XFILIAL("AB6")+ AB1->AB1_CODCLI + AB1->AB1_LOJA))
AB6->AB6_ZZCLI := AB1->AB1_XNRCLI
AB6->AB6_XCHAM := AB1->AB1_NRCHAM
Eu Usei em um outro ponto aCols e aHeader Ex.:
Local cNConh := AScan(aHeader, { |x| Alltrim(x[2]) == 'D1_CONHEC'})
Local cXObs := AScan(aHeader, { |x| Alltrim(x[2]) == 'D1_XOBS1'})
if empty(aCols[n][cNConh]).AND.empty(aCols[n][cXObs])
aCols[n][cNConh] := SC7->C7_XNUMCON
aCols[n][cXObs] := SC7->C7_XOBS1
endif
Nesse caso eu disse se a Variável for vazia atribuir um dado de uma outra tabela. Eu precisaria(eu acho rsrsr) se a variável estiver preenchida jogar o dado dela para outra tabela e preencher determinado campo. Gostaria de saber como seria possível fazer se puderem me ajudar... !!! Abraço !
Estou precisando de fazer um preenchimento automático de um campo customizado.
ao efetivar um orçamento chamado técnico como orçamento. o PE é o AT300VAL.
O campo customizado esta na AB6(AB6_XCHAM) e eu quero jogar um campo tabela AB1(AB1_NRCHAM) tabela de chamado técnico.
Tentei de duas formas.:
Da forma 1 acredito que não deu certo devido relacionamento limitado das tabelas da forma 2 acredito que deu errado porque o campo AB1_NRCHAM tem 88 caracteres e o AB6_XCHAM tem espaço pra 10.
1 - UPDATE
AB6010
SET AB6_ZZCLI = AB1_XNRCLI, AB6_XCHAM = AB1_NRCHAM
FROM AB6010 AB6
LEFT JOIN AB1010 AB1 ON AB6_FILIAL = AB1_FILIAL
AND AB6_CODCLI = AB1_CODCLI
AND AB6_LOJA = AB1_LOJA
AND AB1.D_E_L_E_T_ = ''
WHERE AB6.D_E_L_E_T_ = ' '
AND AB6_ZZCLI = ' '
2 - DBSelectArea("AB6")
AB6->(DBSetOrder(2))
AB6->(DBSeek(XFILIAL("AB6")+ AB1->AB1_CODCLI + AB1->AB1_LOJA))
AB6->AB6_ZZCLI := AB1->AB1_XNRCLI
AB6->AB6_XCHAM := AB1->AB1_NRCHAM
Eu Usei em um outro ponto aCols e aHeader Ex.:
Local cNConh := AScan(aHeader, { |x| Alltrim(x[2]) == 'D1_CONHEC'})
Local cXObs := AScan(aHeader, { |x| Alltrim(x[2]) == 'D1_XOBS1'})
if empty(aCols[n][cNConh]).AND.empty(aCols[n][cXObs])
aCols[n][cNConh] := SC7->C7_XNUMCON
aCols[n][cXObs] := SC7->C7_XOBS1
endif
Nesse caso eu disse se a Variável for vazia atribuir um dado de uma outra tabela. Eu precisaria(eu acho rsrsr) se a variável estiver preenchida jogar o dado dela para outra tabela e preencher determinado campo. Gostaria de saber como seria possível fazer se puderem me ajudar... !!! Abraço !
Por favor Acessar ou Registrar para participar da conversa.
- manoelcarlosjunior
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 116
- Obrigados Recebidos: 0
9 anos 10 meses atrás #26804
por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico Ponto de entrada AT300VAL
Bom dia Galera usei DbSelectArea debughei ele grava os dados mas barrei em um outro problema.:
Esse é o ponto de entrada ja usado pela totvs
User Function AT300VAL()
Local aArea := GetArea()// - TOTVS
Local lRet := .T. // - TOTVS
DBSelectArea("AB6") // MEU CODIGO
AB6->(DBSetOrder(2))
AB6->(DBSeek(XFILIAL("AB6")+AB1->AB1_CODCLI + AB1->AB1_LOJA))
RecLock("AB6", .F.)
AB6->AB6_ZZCLI = AB1->AB1_XNRCLI
AB6->AB6_XCHAM = AB1->AB1_NRCHAM
MsUnLock()
AB6->(RestArea(aAreaAB6))
lRet := U_ATEC003() //- TOTVS - Essa User function é um processo que valida a OS tentei colocar o código la mas também não deu certo.
RestArea(aArea)
Return(lRet) // Debuguei e nesse ponto o dado some do campo que foi incluso, o ruim é que esse ponto de entrada só funciona com esse retorno lRet.
Se puderem me ajudar ...
Abraço
Esse é o ponto de entrada ja usado pela totvs
User Function AT300VAL()
Local aArea := GetArea()// - TOTVS
Local lRet := .T. // - TOTVS
DBSelectArea("AB6") // MEU CODIGO
AB6->(DBSetOrder(2))
AB6->(DBSeek(XFILIAL("AB6")+AB1->AB1_CODCLI + AB1->AB1_LOJA))
RecLock("AB6", .F.)
AB6->AB6_ZZCLI = AB1->AB1_XNRCLI
AB6->AB6_XCHAM = AB1->AB1_NRCHAM
MsUnLock()
AB6->(RestArea(aAreaAB6))
lRet := U_ATEC003() //- TOTVS - Essa User function é um processo que valida a OS tentei colocar o código la mas também não deu certo.
RestArea(aArea)
Return(lRet) // Debuguei e nesse ponto o dado some do campo que foi incluso, o ruim é que esse ponto de entrada só funciona com esse retorno lRet.
Se puderem me ajudar ...
Abraço
Por favor Acessar ou Registrar para participar da conversa.
- manoelcarlosjunior
- Autor do Tópico
- Desconectado
- Membro Especialista
Menos
Mais
- Postagens: 116
- Obrigados Recebidos: 0
9 anos 10 meses atrás #26888
por manoelcarlosjunior
Respondido por manoelcarlosjunior no tópico Ponto de entrada AT300VAL
Bom dia Galera !!!
Depois de muito apanhar desse ponto de entrada e lógico, com a ajuda de um brother , Thiago da sperasystems.com.br/ descobrimos que o não estava sendo feita a inclusão via reclock pois a rotina só inclui o registro na AB6 após o return. Peguei os fontes padrão dos dois programas. TECA450 e TECA300 e não achei nenhum PE para a inclusão OS via chamado técnico. Mas percebi que o programa usado para inclusão da OS via chamado usava a AB6 usei o inicializador padrão no configurador e deu certo. Valeu e boa semana !!!
Depois de muito apanhar desse ponto de entrada e lógico, com a ajuda de um brother , Thiago da sperasystems.com.br/ descobrimos que o não estava sendo feita a inclusão via reclock pois a rotina só inclui o registro na AB6 após o return. Peguei os fontes padrão dos dois programas. TECA450 e TECA300 e não achei nenhum PE para a inclusão OS via chamado técnico. Mas percebi que o programa usado para inclusão da OS via chamado usava a AB6 usei o inicializador padrão no configurador e deu certo. Valeu e boa semana !!!
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ponto de entrada AT300VAL
Tempo para a criação da página:0.134 segundos