none
Formula EPM 2013 RRS feed

  • Pergunta

  • Olá Pessoal

    Estou tendo problema com uma formula no EPM. Eu tenho um campo personalizado que calcula se um determinado projeto está no "prazo", "atrasado", "atrasado com linha de base alterada" e "no prazo com linha de base alterada" e dentro desse campo possuo indicadores gráficos com esses nomes. No momento a formula não está retornando as informações corretas. A formula está assim:

    IIf([Término da Linha de Base] > 60000; "Sem Linha de Base"; IIf([% Concluída] = 100; "Tarefa Concluída"; IIf([Término] = [Término da Linha de Base]; "No Prazo"; IIf([Trabalho Real] = 0 And Date() - 1 > [Início da linha]; "Atrasado"; IIf([Trabalho Restante] <> 0 And Date() - 1 > [Término da Linha de Base]; "Atrasado"; IIf([Término] = [Término da Linha de Base1]; "No prazo com linha de base alterada"; IIf([Trabalho Real] = 0 And Date() - 1 > [Início da Linha de Base1]; "Atrasado com linha de base alterada"; IIf([Trabalho Restante] <> 0 And Date() - 1 > [Término da Linha de Base1]; "Atrasado com linha de base alterada"; IIf([Término] = [Término da Linha de Base2]; "No prazo com linha de base alterada"; IIf([Trabalho Real] = 0 And Date() - 1 > [Início da Linha de Base2]; "Atrasado com linha de base alterada"; IIf([Trabalho Restante] <> 0 And Date() - 1 > [Término da Linha de Base2]; "Atrasado com linha de base alterada"; "Atrasado com linha de base alterada1")))))))))))

    Obrigado.

    quarta-feira, 30 de janeiro de 2013 13:45

Respostas

  • Olá Victor, tudo bem?

    Procurei manter a estrutura da fórmula que você já está utilizando, pra não sair da sua linha de raciocínio. A fórmula que testei aqui foi:

    IIf([Término da linha de base]=ProjDateValue("ND");"Tarefa sem Baseline";IIf([% concluída]=100;"Tarefa Concluída";IIf([Término]<Now() And [Término da Linha de Base2]<>ProjDateValue("ND");"Atrasado com Baseline Alterada";IIf([Término]<Now();"Atrasado sem Alteração de Baseline";"No Prazo"))))

    Acho importante fazer algumas considerações em relação a esta fórmula:

    1) O ideal para seu cliente seria trabalhar, a nível de controle de projeto, apenas com a Linha de Base 0. Pois todos os campos calculados do Project só utilizam esta linha como referência. Portanto, no cenário ideal, quando o plano de projeto está Ok, o cliente salva a Linha de Base 0 e copia as informações para a Linha de Base 1 (a título de se manter um histórico). Se houver uma mudança no futuro que justifique um replanejamento, ele deveria salvar a Linha de Base 0 novamente, considerando apenas as tarefas que sofreram alteração, e então copiar a Linha de Base 0 na Linha de Base 2, novamente a fim de histórico - e assim por diante.

    Seguindo este parâmetro, a partir do momento em que a Linha de Base 2 foi salva, já sabemos que o plano original foi modificado pelo menos uma vez - e então não é mais necessário aplicar o mesmo critério da Linha de Base 2 em diante, o que torna a fórmula mais simples.

    2) De acordo com os critérios adotados nessa fórmula, o cálculo de atraso está olhando sempre para o que deveria ter acontecido até agora (comparando a data de término com a função Agora). Porém, a fórmula não prevê nenhum sinalizador caso haja um atraso que comprometa a data de término do projeto. Por exemplo: uma tarefa que tem duração de 5 dias e está no caminho crítico. Se duração real for, digamos, 8 dias, a data de término do projeto será afetada, mas a fórmula não está sinalizando este desvio.

    Por isso que eu mencionei a possibilidade de olhar para o campo [Variação de Término]. Mas é claro que isso irá depender dos parâmetros adotados no seu cliente, pois talvez este tipo de desvio não seja importante dentro dos critérios que ele utiliza.

    Forte abraço!


    http://projectserver.com.br | http://raphaelrsantos.blogspot.com

    • Marcado como Resposta Victor H. Neves terça-feira, 5 de fevereiro de 2013 11:37
    segunda-feira, 4 de fevereiro de 2013 16:57

Todas as Respostas

  • Olá Victor, boa noite.

    Qual erro é exibido ao utilizar a fórmula?

    Pode nos descrever melhor o seu cenário.

    Você utiliza o ambiente EPM 2013, correto?

    Seu ambiente foi migrado ou voce esta tentando inserir manualmente a formula?

    Existe essa informação sobre o uso de fórmulas personalizadas no Project Server 2013.

    Uma vez que uma fórmula é associado com um campo personalizado, que pode ser editada, mas ela não pode ser removida.

    Referência Microsoft:

    http://technet.microsoft.com/en-us/library/gg709726.aspx

    Espero ter ajudado.


    Hezequias Vasconcelos

    quarta-feira, 30 de janeiro de 2013 22:44
    Moderador
  • Olá Victor, boa noite.

    Qual erro é exibido ao utilizar a fórmula?

    Pode nos descrever melhor o seu cenário.

    Você utiliza o ambiente EPM 2013, correto?

    Seu ambiente foi migrado ou voce esta tentando inserir manualmente a formula?

    Existe essa informação sobre o uso de fórmulas personalizadas no Project Server 2013.

    Uma vez que uma fórmula é associado com um campo personalizado, que pode ser editada, mas ela não pode ser removida.

    Referência Microsoft:

    http://technet.microsoft.com/en-us/library/gg709726.aspx

    Espero ter ajudado.


    Hezequias Vasconcelos

    Olá Hezequias,

    Correto, utilizo o EPM 2013. Estou fazendo a formula na mão e o ambiente foi levantado. Na verdade ela não apresenta um erro, ela só não está retornando a informação, não sei se o EPM 2013 tem algum tipo de delay, pois no 2010 tinha bastante. Eu preciso que a formula calcule:

    - Se o projeto está no prazo

    - Se o projeto está atrasado

    - Se o projeto está atrasado com linha de base alterada

    - Se o projeto está no prazo com a linha de base alterada

    Mas ao salvar o projeto na Linha de Base (linha de base zero) ela não acusa se o projeto está atrasado ou no prazo. Se eu fizer alguma alteração e salvar na Linha de Base 1, ele acusa Atrasado com linha de base alterada. O meu problema é na Linha de Base. Botei a formula a baixo com alguma alterações que eu fiz. Ficou um pouco confuso de explicar o problema, pois esse tipo de formula eu nunca tinha feito.

    Obrigado!


    IIf([Término da Linha de Base] > 60000; "Sem Linha de Base"; IIf([% Concluída] = 100; "Tarefa Concluída"; IIf([Término] = Now(); "No Prazo"; IIf([Término] < Now(); "Atrasado"; IIf([Término] = Now() = [Término da Linha de Base1]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base2]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base3]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base4]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base5]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base6]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base7]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base8]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base9]; "No prazo com linha de base alterada"; IIf([Término] = Now() = [Término da Linha de Base10]; "No prazo com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base1]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base2]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base3]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base4]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base5]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base6]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base7]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base8]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base9]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base10]; "Atrasado com linha de base alterada"; IIf([Término] < Now() < [Término da Linha de Base]; "Atrasado"; IIf([Término] = Now() = [Término da Linha de Base]; "No Prazo"; "No Prazo"))))))))))))))))))))))))))



    quinta-feira, 31 de janeiro de 2013 14:15
  • Olá Victor,

    Pra poder tentar ajudar você da melhor maneira, é importante entender os critérios que você utiliza para validar a fórmula. A princípio o que pude entender é que você compara se há atraso em todas as linhas de base do Project.

    Mas de fato todas as linhas são utilizadas? Por exemplo, quando há uma alteração de escopo e é preciso salvar uma nova Linha de Base, os seus gerentes fazem isso na Linha de Base 1 e a zero deixa de ser utilizada? Daí, numa nova mudança, salva-se a 2 e a 1 deixa de ser utilizada?

    Pergunto isso pois, ao invés de fazer todos esses cálculos, talvez fosse mais fácil concentrar as mudanças apenas na Linha de Base 0, e salvando apenas o histórico nas adicionais (quando houver mudança). Assim, a construção da fórmula seria muito mais simples, e você poderia usar os campos de variação do Project (no caso, o campo [Variação do Término]).

    Se achar a sugestão válida (caso o processo de salvamento das Linhas de Base seja mesmo esse da minha pergunta), podemos continuar a ajustar a fórmula.

    Um abraço!


    http://projectserver.com.br | http://raphaelrsantos.blogspot.com

    quinta-feira, 31 de janeiro de 2013 22:52
  • Olá Victor,

    Pra poder tentar ajudar você da melhor maneira, é importante entender os critérios que você utiliza para validar a fórmula. A princípio o que pude entender é que você compara se há atraso em todas as linhas de base do Project.

    Mas de fato todas as linhas são utilizadas? Por exemplo, quando há uma alteração de escopo e é preciso salvar uma nova Linha de Base, os seus gerentes fazem isso na Linha de Base 1 e a zero deixa de ser utilizada? Daí, numa nova mudança, salva-se a 2 e a 1 deixa de ser utilizada?

    Pergunto isso pois, ao invés de fazer todos esses cálculos, talvez fosse mais fácil concentrar as mudanças apenas na Linha de Base 0, e salvando apenas o histórico nas adicionais (quando houver mudança). Assim, a construção da fórmula seria muito mais simples, e você poderia usar os campos de variação do Project (no caso, o campo [Variação do Término]).

    Se achar a sugestão válida (caso o processo de salvamento das Linhas de Base seja mesmo esse da minha pergunta), podemos continuar a ajustar a fórmula.

    Um abraço!


    http://projectserver.com.br | http://raphaelrsantos.blogspot.com

    Olá Raphael,

    Esse ambiente que implantamos é para um cliente, ninguém aqui sabe dizer se lá quando há alguma alteração a linha de base a antiga deixa de ser utilizada. Seguindo o seu pensamento, como que ficaria a formula usando a Variação de Término? No momento tenho 3 indicadores (farois) funcionando. A minha formula está assim no momento.

    IIf([% Concluída] = 100; "Tarefa Concluída"; IIf([Término] > Now(); "No Prazo"; IIf([Término] < Now(); "Atrasado"; "Atrasado"))))

    Obrigado

    segunda-feira, 4 de fevereiro de 2013 13:23
  • Olá Victor, tudo bem?

    Procurei manter a estrutura da fórmula que você já está utilizando, pra não sair da sua linha de raciocínio. A fórmula que testei aqui foi:

    IIf([Término da linha de base]=ProjDateValue("ND");"Tarefa sem Baseline";IIf([% concluída]=100;"Tarefa Concluída";IIf([Término]<Now() And [Término da Linha de Base2]<>ProjDateValue("ND");"Atrasado com Baseline Alterada";IIf([Término]<Now();"Atrasado sem Alteração de Baseline";"No Prazo"))))

    Acho importante fazer algumas considerações em relação a esta fórmula:

    1) O ideal para seu cliente seria trabalhar, a nível de controle de projeto, apenas com a Linha de Base 0. Pois todos os campos calculados do Project só utilizam esta linha como referência. Portanto, no cenário ideal, quando o plano de projeto está Ok, o cliente salva a Linha de Base 0 e copia as informações para a Linha de Base 1 (a título de se manter um histórico). Se houver uma mudança no futuro que justifique um replanejamento, ele deveria salvar a Linha de Base 0 novamente, considerando apenas as tarefas que sofreram alteração, e então copiar a Linha de Base 0 na Linha de Base 2, novamente a fim de histórico - e assim por diante.

    Seguindo este parâmetro, a partir do momento em que a Linha de Base 2 foi salva, já sabemos que o plano original foi modificado pelo menos uma vez - e então não é mais necessário aplicar o mesmo critério da Linha de Base 2 em diante, o que torna a fórmula mais simples.

    2) De acordo com os critérios adotados nessa fórmula, o cálculo de atraso está olhando sempre para o que deveria ter acontecido até agora (comparando a data de término com a função Agora). Porém, a fórmula não prevê nenhum sinalizador caso haja um atraso que comprometa a data de término do projeto. Por exemplo: uma tarefa que tem duração de 5 dias e está no caminho crítico. Se duração real for, digamos, 8 dias, a data de término do projeto será afetada, mas a fórmula não está sinalizando este desvio.

    Por isso que eu mencionei a possibilidade de olhar para o campo [Variação de Término]. Mas é claro que isso irá depender dos parâmetros adotados no seu cliente, pois talvez este tipo de desvio não seja importante dentro dos critérios que ele utiliza.

    Forte abraço!


    http://projectserver.com.br | http://raphaelrsantos.blogspot.com

    • Marcado como Resposta Victor H. Neves terça-feira, 5 de fevereiro de 2013 11:37
    segunda-feira, 4 de fevereiro de 2013 16:57
  • Olá Victor, tudo bem?

    Procurei manter a estrutura da fórmula que você já está utilizando, pra não sair da sua linha de raciocínio. A fórmula que testei aqui foi:

    IIf([Término da linha de base]=ProjDateValue("ND");"Tarefa sem Baseline";IIf([% concluída]=100;"Tarefa Concluída";IIf([Término]<Now() And [Término da Linha de Base2]<>ProjDateValue("ND");"Atrasado com Baseline Alterada";IIf([Término]<Now();"Atrasado sem Alteração de Baseline";"No Prazo"))))

    Acho importante fazer algumas considerações em relação a esta fórmula:

    1) O ideal para seu cliente seria trabalhar, a nível de controle de projeto, apenas com a Linha de Base 0. Pois todos os campos calculados do Project só utilizam esta linha como referência. Portanto, no cenário ideal, quando o plano de projeto está Ok, o cliente salva a Linha de Base 0 e copia as informações para a Linha de Base 1 (a título de se manter um histórico). Se houver uma mudança no futuro que justifique um replanejamento, ele deveria salvar a Linha de Base 0 novamente, considerando apenas as tarefas que sofreram alteração, e então copiar a Linha de Base 0 na Linha de Base 2, novamente a fim de histórico - e assim por diante.

    Seguindo este parâmetro, a partir do momento em que a Linha de Base 2 foi salva, já sabemos que o plano original foi modificado pelo menos uma vez - e então não é mais necessário aplicar o mesmo critério da Linha de Base 2 em diante, o que torna a fórmula mais simples.

    2) De acordo com os critérios adotados nessa fórmula, o cálculo de atraso está olhando sempre para o que deveria ter acontecido até agora (comparando a data de término com a função Agora). Porém, a fórmula não prevê nenhum sinalizador caso haja um atraso que comprometa a data de término do projeto. Por exemplo: uma tarefa que tem duração de 5 dias e está no caminho crítico. Se duração real for, digamos, 8 dias, a data de término do projeto será afetada, mas a fórmula não está sinalizando este desvio.

    Por isso que eu mencionei a possibilidade de olhar para o campo [Variação de Término]. Mas é claro que isso irá depender dos parâmetros adotados no seu cliente, pois talvez este tipo de desvio não seja importante dentro dos critérios que ele utiliza.

    Forte abraço!


    http://projectserver.com.br | http://raphaelrsantos.blogspot.com

    Obrigado pela ajuda Raphael! 

    terça-feira, 5 de fevereiro de 2013 11:37