Procesos que Modifican Claves de Tablas
En este manual, abordaremos los procesos necesarios para modificar las claves de las tablas en Dynamics NAV y Business Central. Es fundamental entender que cualquier cambio en las claves debe realizarse utilizando la función RENAME
. Esta función garantiza que las modificaciones se realicen de manera segura y eficiente, preservando la integridad de los datos.
Con Dynamics NAV
PostCode.RESET;
PostCode.SETRANGE(ID_Fisersa, 0);
IF PostCode.FINDSET(TRUE, TRUE) THEN BEGIN
REPEAT
Int_FisersaID2 := Int_FisersaID2 + 1;
PostCode1 := PostCode;
PostCode1.RENAME(PostCode1.Code, PostCode1.City, Int_FisersaID2); // Son las keys de la tabla postcode
UNTIL PostCode.NEXT = 0;
END;
Con Business Central AL
procedure UpdatePostCodes()
var
PostCode: Record "Post Code";
PostCode1: Record "Post Code";
Int_FisersaID2: Integer;
begin
PostCode.Reset();
PostCode.SetRange(ID_Fisersa, 0);
if PostCode.FindSet(true, true) then begin
repeat
Int_FisersaID2 := Int_FisersaID2 + 1;
PostCode1 := PostCode;
PostCode1.Rename(PostCode1.Code, PostCode1.City, Int_FisersaID2); // Son las keys de la tabla postcode
until PostCode.Next() = 0;
end;
end;
Eliminar caracteres no imprimibles
A veces pasa, que de tanto copiar y pegar, y tratar con diferentes documentos o proveedores extranjeros, se cuelan caracteres no reconocidos en Español, y en este caso os expongo un ejemplo real, que sería el siguiente:
Se indica la columa, debido a que el fichero .xlsx, es un comprimido de varios elementos.
Entonces para detectar el Carácter no imprimible, lo que realice es lo siguiente:
- Instalar un descompreso (.zip o .rar).
- Cambiar la extensión de .xlsx a .zip y descomprimir el fichero en una carpeta.
- Luego entar en la carpeta dónde esta el XML del excel, en el error indica que esta en «\xl\worksheets|sheet1.xml»
- Instalar Notepad++
- Instalar plugin XML TOOLS
- Con XML TOOLS, descomprimir el fichero, para que no este todo el contenido comprimido en un línea:
Concretamente el carácter con el conflicto era el siguiente
Código para aplicar un solución automática a lo anteriormente comentado
Entonces, para aplicar una solución automática y que se arregle el error antes de crear este fichero con Dynamics NAV, con la solución que indique al principio de la entrada.
Con Dynamics NAV
CleanString(URL : Text) : Text
Name DataType Subtype Length
StringConversionManagement Codeunit StringConversionManagement
EXIT(StringConversionManagement.WindowsToASCII(URL));
Con Business Central AL
procedure CleanString(URL: Text): Text
var
StringConversionManagement: Codeunit StringConversionManagement;
begin
exit(StringConversionManagement.WindowsToASCII(URL));
end;
Esta funcionalidad estándard de Dynamics NAV que limpia todos los carácteres no-imprimibles en, definida en:
A continuación, se presenta un resumen de las funciones:
https://learn.microsoft.com/en-us/dynamics365/business-central/application/base-application/codeunit/system.text.stringconversionmanagement
-
Función WindowsToASCII:
-
Descripción: Esta función convierte una cadena de texto en formato Windows a su equivalente en formato ASCII.
-
Parámetros:
-
InText: Texto de entrada en formato Windows.
-
-
Operación:
-
Itera a través de cada carácter en la cadena y utiliza la función WindowsToASCIIChar para realizar la conversión.
-
Retorna la cadena convertida.
-
-
-
Función WindowsToASCIIChar:
-
Descripción: Convierte un carácter individual en formato Windows a su equivalente en formato ASCII.
-
Parámetros:
-
c: Valor numérico del carácter en formato Windows.
-
-
Operación:
-
Utiliza reglas de conversión específicas para manejar diferentes rangos de caracteres.
-
Retorna el carácter convertido en formato ASCII.
-
-
-
Funciones WindowsToASCIIChar8Bit, WindowsToASCIIChar16Bit, WindowsToASCIICharEPC:
-
Estas funciones auxiliares manejan conversiones específicas para caracteres de 8 bits, 16 bits y caracteres especiales de EPC.
-
-
Función GetPaddedString:
-
Descripción: Añade relleno a una cadena de texto para alcanzar una longitud específica.
-
Parámetros:
-
StringToModify: Texto original.
-
PadLength: Longitud deseada.
-
PadCharacter: Carácter utilizado para el relleno.
-
-
Operación:
-
Agrega el carácter de relleno al principio de la cadena hasta alcanzar la longitud deseada.
-
Retorna la cadena modificada.
-
-
-
Función RemoveDecimalFromString:
-
Descripción: Elimina los decimales de una cadena de texto.
-
Parámetros:
-
StringToModify: Texto original.
-
PadLength: Longitud deseada.
-
PadCharacter: Carácter utilizado para el relleno.
-
FinalString: Texto resultante después de la eliminación de decimales.
-
-
Operación:
-
Verifica si hay decimales en la cadena y los elimina.
-
Retorna la cadena modificada sin decimales.
-
-