× Linguagem de Programação ADVPL

Perguntas Ponto de entrada AT300VAL

Mais
9 anos 10 meses atrás #26755 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 !
Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
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

Por favor Acessar ou Registrar para participar da conversa.

Mais
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 !!!

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.134 segundos
Joomla templates by a4joomla