Enums de locura

Etiquetado: , ,

Este debate contiene 2 respuestas, tiene 2 mensajes y lo actualizó  Bleika hace 4 meses, 2 semanas.

Viendo 3 publicaciones - del 1 al 3 (de un total de 3)
  • Autor
    Publicaciones
  • #8300

    Bleika
    Participante

    Hola hermanas – ¡cuanto tiempo!

    Después de NTD me tiré a la piscina y ya tengo mi proyecto bien avanzado.

    Pero… hay un tema que me tiene atascada y me temo que el equipo de documentación de Microsoft no ha facilitado información bastante útil sobre él: los dichosos Enums.

    No sé si os acordaréis, pero estoy haciendo un refactoring completo de NAV2009 a BC OnPrem.

    Estoy siendo muy estricta conmigo misma en el desarrollo y prácticamente no toco nada en C/SIDE (salvo algún problemilla con claves imprescindibles). Cuando necesito crear eventos, los solicito en GitHub y así espero llegar a que solo queden las claves.

    Ahora he llegado al punto en que tengo que extender campos tipo Option del estándar.
    Entiendo que se debe hacer a través de Enums, pero erre que erre… no lo consigo 🙁

    Según la ayuda (https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/devenv-extensible-enums) dicen que hay que cambiar 3 atributos del campo en C/SIDE: Extensible, EnumTypeId y EnumTypeName.

    El primero es fácil porque es cambiar el booleano a sí. Pero luego ¿qué ocurre?
    Supongamos que quiero ampliar el campo 77.1
    En EnumTypeId, qué se debe poner? 50###, 77 o ???
    En EnumTypeName, qué se debe poner? Lo debo elegir yo (ej. ReportSelectionsUsage) u tendría que solicitarlo en GitHub (no he encontrado más casos ahí).

    Una vez hay hecho el campo en C/SIDE extensible, ¿cómo lo implemento en mi extensión?

    He hecho una prueba (poniendo 77 y ReportSelectionsUsage en C/SIDE), pero luego no me deja seguir en VSCode:
    Si solo creo una enumextension:
    enumextension 50001 EYR_ReportSelectionsUsage extends ReportSelectionsUsage
    {
    value(50000;EYR_Report1) { Caption = ‘Mi informe’;}
    }

    me dice que nanay… (porque 77/ReportSelectionsUsage «no existe»)

    Si también creo lo siguiente:
    enum 77 ReportSelectionsUsage
    {
    Extensible = true;
    value(0; S.Quote) { Caption = ‘Sales Quote’;}
    value(1;S.Order) { Caption = ‘Sales Order’;}
    […]
    }

    Parece que no me deja coger el número 77 (que también veo lógico). Si le cambio al rango 50.### lo acepta, pero entonces mi enumextension da un error diciendo que ya existe una definición de esto dentro del proyecto.

    La última prueba que he hecho ha sido SOLO crear el Enum y he añadido mi 50000 al final.
    Con eso me da un error de «Could not create package»

    Resumiendo – locura total:
    Si no defino el Enum base en el proyecto: se queja
    Si lo defino junto con mi extensión del mismo: se queja también
    Si lo defino y añado mi opción dentro con el 77: se queja del número
    Si lo defino con mi opción pero con 50###: no consigue crear el paquete

    ¿Vosotras lo habéis conseguido?

     

     

    #8303

    Laura Nicolàs
    Jefe de claves

    Bleika,

    Estamos en un proyecto en el que nos va a tocar extender enums del estandard… pero todavía no hemos llegado a ese punto.
    Entre esta semana y la que viene nos vamos a pelear con este tema y te decimos como lo gestionamos.

    Si das con la solución antes, actualiza este post y así nos ayudas tu a nosotras ,-)

    Salut!
    Laura Nicolàs

    ¿Quieres conocer las últimas novedades sobre Business Central? Dynamics ScaleUp 2019.

    Consulta fechas en
    DynamicsScaleUp.com

    #8309

    Bleika
    Participante

    Hola Laura,

    Al final publiqué lo mismo en Yammer y ya me han contestado.

    Dicen que mi primera opción (de solo crear una enumextension con mis valores/miembros):
    enumextension 50001 EYR_ReportSelectionsUsage extends ReportSelectionsUsage
    {
    value(50000;EYR_Report1) { Caption = ‘Mi informe’;}
    }

    Por supuesto (como sospechaba), habría que solicitar la «extensibilidad» del campo en cuestión a través de GitHub y debe ser Microsoft quién determine tanto en EnumTypeId como el EnumTypeName para evitar conflictos entre extensiones). Lo que no veo claro de todos modos es que si yo le pongo el 50000 en mi App y detrás vienes tu y pones también 50000 en tu App…

    Sin embargo me han soltado un rollo de que habían tenido problemas con esto y querían saber mi versión, etc. Cómo mínimo parece que vaya a funcionar en la versión de abril, pero espero que proporcionen una solución viable antes…

    Por cierto ¿cómo os va con el libro?

    Salut!

    Eyrún

Viendo 3 publicaciones - del 1 al 3 (de un total de 3)

Debes estar registrado para responder a este debate.

Members Currently Active: 1
czv
Keymaster | Moderator | Participant | Spectator | Blocked
Additional Forum Statistics
Threads: 816, Posts: 2.655, Members: 866
Welcome to our newest member, ragullo
Most users ever online was 15 on 5 April, 2019 9:31 am