• Este debate tiene 4 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 1 año, 7 meses por AvatarBETEA.
Viendo 5 entradas - de la 1 a la 5 (de un total de 5)

Respuestas del foro


  • Avatar
    BETEA
    Participante
    BETEA

    Buenos dias,

    Estoy pasando a extension un desarrollo que tenemos. Entre otras cosas, he tenido que crear una tabla nueva. He publicado la extension sobre nuestro docker, y hasta ahi todo «bien». He conseguido que compile en AL el codigo traido desde el object designer, y ahora toca pulirlo y arreglaro para hacer un estandar.

    El problema ha venido al quitar 2 campos de la tabla nueva que he creado, y re-publicar la extension:

    [2019-01-10 17:55:08.54] Sending request to http://beteabc:7049/NAV/dev/metadata

    [2019-01-10 17:55:46.79] Sending request to http://beteabc:7049/NAV/dev/apps?SchemaUpdateMode=synchronize

    [2019-01-10 17:56:04.78] The request for path /NAV/dev/apps?SchemaUpdateMode=synchronize failed with code 422. Reason: Table Disp. producto por Almacen:: Unsupported field change. Field:Inventario X; Change:Remove

    Table Disp. producto por Almacen:: Unsupported field change. Field:Inventario Y; Change:Remove

    Como veis, parece que no le gusta que haya quitado lso campos. He despublicado la extension, he reiniciado el docker, incluse he ido al SQL manager y he borrado fisicamente la nueva tabla creada, pero me sigue dando error… Parece que queda algo por ahi. Existe alguna forma de publicar la extension haciendo una especie de «Force»?

     

    Muchas gracias

    #7757
    Avatar
    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    Hola,

    En el launch.json tienes que añadir el parámetro «schemaUpdateMode»: «Recreate»

    Con esto el sistema recrea todo el esquema de datos por lo que te permite eliminar tablas y campos creados, o cambiar de tipo de datos los campos. Ojo, también pierdes todos los datos de prueba que hayas generado.

    Esto lo puedes hacer mientras estés en un entorno de desarrollo, pero no lo podrás hacer en un entorno de producción, porque en PROD no puedes permitirte perder los datos! En PROD tendrías que gestionar el tema de los datos con una codeunit de Upgrade.

    Si la app la publicas en el cloud (ya sea en la AppSource, o una personalización de cliente), no vas a poder eliminar los campos nunca. En su lugar, tendrías que marcarlos como obsoletos, y gestionar los datos con una codeunit de upgrade. Te dejo alguna documentación: https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/upgrade/deprecated-fields

    Salut!
    Laura Nicolàs

    #7759
    Avatar
    BETEA
    Participante
    BETEA

    Muchas gracias Laura!

    Con el recreate parece que no me da ya ese fallo, aunque me sale esto:

    [2019-01-11 09:54:42.45] Sending request to http://beteabc:7049/NAV/dev/metadata
    [2019-01-11 09:55:06.75] Sending request to http://beteabc:7049/NAV/dev/apps?SchemaUpdateMode=recreate
    [2019-01-11 09:55:08.21] The request for path /NAV/dev/apps?SchemaUpdateMode=recreate failed with code 422. Reason: The following SQL error was unexpected:
    No item by the name of ‘»dbo».»CRONUS ES$Sales Line$7d27f5f1-6084-471d-8b5a-770eefbfe6a1″‘ could be found in the current database ‘FinancialsES’, given that @itemtype was input as ‘(null)’.

    Como andube borrando tablas de SQL sin pensar demasiado, se habra quedado alguan dependencia por ahi… Al ser un entorno nuestro propio, me puse a borrar cosas sin miedo, y al final pasa lo que pasa… Intentare depurar un poco el SQL, y si me lelva demasiado, borrar docker, crear uno nuevo, y adelante.

    De  todas formas lo dicho, el recreate parefe haberme solucionado el tema de los campos borrados.

     

    Muchas gracias!

    #7762
    Avatar
    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    Yo no me liaria con el SQL e iria a recrear el docker directamente… si tocas el SQL, aunque consigas solventarlo, siempre te puede salir por otro lado en unos días o semanas…

    Salut!
    Laura Nicolàs

    #7766
    Avatar
    BETEA
    Participante
    BETEA

    Efectivamente, he borrado y creado uno nuevo. Tengo un script que me borra el docker, y me crea otro de igual nombre, asique sin darle demasiadas vueltas, es lo que he hecho….

     

    Un saludo y muchas gracias de nuevo!

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

Debe iniciar sesión para responder a este tema.