Etiquetado: , ,

  • Este debate tiene 4 respuestas, 4 mensajes y ha sido actualizado por última vez el hace 3 años, 9 meses por Cristina Nicolàs.
Viendo 5 entradas - de la 1 a la 5 (de un total de 5)

Enums de locura



  • Bleika
    Participante
    Bleika

    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?

     

     

    #8300

    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    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

    #8303

    Bleika
    Participante
    Bleika

    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

    #8309
    José Ignacio Mendive Romeo

    Buenos días Laura,
    Viendo los comentarios en este apartado y como conocedoras ya de BC15, me surge la duda, de si Microsoft, ha publicado en BC15 los valores de EnumTypeId y EnumTypeName?
    Un saludo.

    #13646

    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    Hola José,

    He estado revisando el preview de Business Central 15 y si que existen ya algunos Enums en el estándar, pero muy poquitos.

    He encontrado estos:
    “Assisted Setup Group”
    “Auto Format”
    “Client Type”
    “Cues and KPIs Style”
    “Manual Setup Category”
    “OData Protocol Version”
    “Recurrence – Day of Week”
    “Recurrence – Month”
    “Recurrence – Monthly Pattern”
    “Recurrence – Ordinal No.”
    “Recurrence – Pattern”

    No hay ninguno de los realmente importantes de la lógica de negocio de Business Central.

    Un saludo,
    Cristina Nicolàs

    #13684
Viendo 5 entradas - de la 1 a la 5 (de un total de 5)

Debe iniciar sesión para responder a este tema.