Etiquetado: AL, Enum, extensiones
- 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.
Enums de locura
-
BleikaParticipanteBleikaHola 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?
5 febrero 2019 a las 13:23 #8300
Laura NicolàsSuperadministradorLaura NicolàsBleika,
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às5 febrero 2019 a las 15:31 #8303
BleikaParticipanteBleikaHola 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
5 febrero 2019 a las 17:13 #8309
José Ignacio Mendive RomeoParticipante6 septiembre 2019 a las 08:46 #13646
Cristina NicolàsSuperadministradorCristina NicolàsHola 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às12 septiembre 2019 a las 10:16 #13684
Debe iniciar sesión para responder a este tema.