Etiquetado: AL, INICIAR PÁGINA AL INICIO
- Este debate tiene 6 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 1 año por
juanjo.mauriz.
INICIAR UNA PÁGINA AUTOMÁTICAMENTE AL INICIO DEL SISTEMA ( VERSIÓN WEB)
-
juanjo.maurizParticipantejuanjo.maurizBuenos días a todos.
Tengo que iniciar una página justo al terminar el inicio del sistema y he hecho una unidad de código donde pongo la apertura de la página, justo despues del inicio del sistema, pero da error y no inicia el sistema sino quito la línea del RunModal… sin ella funciona perfectamente toda la carga de datos, etc.
Adjunto el código…
codeunit 50100 “Iniciar_Sistema”
{
[EventSubscriber(ObjectType::Codeunit, Codeunit::”System Initialization”, ‘OnAfterLogin’, ”, false, false)]
local procedure OnAfterLogin();
var
Comprobar: page “Customer Ledger Entries”;
Notificacion: record Customer;
UserSetup: record TablaUsuarios;
Filtro: Text;
Posicion: Integer;
begin
Clear(Filtro);
Posicion := 1;
if (UserSetup.Get(UserID) = true) then begin
UserSetup.SetFilter(CodigoUser, UserID);
if (UserSetup.Contabilidad = true) then begin
Notificacion.SetFilter(Seguimiento, format(true));
if Notificacion.FindSet(false) then begin
repeat
if Posicion = 1 then
Filtro := Notificacion.”No.”
else
Filtro += ‘|’ + Notificacion.”No.”;
Posicion += 1;
until Notificacion.Next() = 0;
end;Comprobar.RecibirDatos(Filtro);
Comprobar.RunModal(); <- Esto hace que falle (las dos primeras veces si que me entró, pero ahora no lo consigo)
end;
end;end;
}
El error que arroja es…
…se produjo el siguiente error: “Se produjo un error y la transacción se detuvo. Póngase en contacto con el administrador o con el socio para obtener más ayuda.”
Seguimiento pila AL:
Iniciar_Sistema(CodeUnit 50100).OnAfterLogin line 24 – Extensiones Plus
“System Initialization”(CodeUnit 150).OnAfterLogin(Event) line 2 – System Application by Microsoft
“System Initialization Impl.”(CodeUnit 151).InitCompany line 5 – System Application by Microsoft
“Company Triggers”(CodeUnit 2000000003).OnCompanyOpenCompleted(Event) line 2
” y seguimiento de la pila de AL:
Iniciar_Sistema(CodeUnit 50100).OnAfterLogin line 24 – Extensiones Plus
“System Initialization”(CodeUnit 150).OnAfterLogin(Event) line 2 – System Application by Microsoft
“System Initialization Impl.”(CodeUnit 151).InitCompany line 5 – System Application by Microsoft
“Company Triggers”(CodeUnit 2000000003).OnCompanyOpenCompleted(Event) line 2A ver si podéis orientarme a que puede ser debido, porque no lo entiendo, ya que en principio debería funcionar.
Saludos y muchas gracias!!!
30 noviembre 2022 a las 10:42 #1025181
oscarmingteParticipanteoscarmingteHola Juanjo ,
Un par de cosas antes por simplificar tu código:
if (UserSetup.Get(UserID) = true) then begin
Pueds hacer esto:
if UserSetup.Get(UserID) then begin
no necesitas poner = true
y lo que seguramente te este fallando es que si ejecutas runmodal el sistema se queda esperando a que el usuario interactúe , por eso el sistema para la transación , prueba usando Comprobar.run.
Un saludo Óscar.
30 noviembre 2022 a las 10:59 #1025182
juanjo.maurizParticipantejuanjo.maurizBuenos días oscarmingte.
Muchas gracias por la respuesta y por la sugerencia, que efectivamente es mucho mas estética y que para mas INRI, la tenía puesta como comentas, en otras partes del código jeje
Por otro lado, también probé con Run y con RunModal, ya que efectivamente es la diferencia entre ellas lo que me has comentado, pero sigue quedandose anclado, igualmente.
No tengo ni idea del motivo…
Saludos!!!
30 noviembre 2022 a las 11:09 #1025184
oscarmingteParticipanteoscarmingteHola , te paso la solución:
[EventSubscriber(ObjectType::Codeunit, Codeunit::”System Initialization”, ‘OnAfterLogin’, ”, false, false)]
local procedure MyProcedure()
var
Comprobar: page “Customer Ledger Entries”;
begin
if Session.CurrentClientType in [ClientType::Web, ClientType::Desktop, ClientType::Windows, ClientType::Tablet, ClientType::Phone] then begin
Commit();
Comprobar.RunModal();
end;end;
Aquí tienes la clave:
Dynamics 365 Business Central: be careful when using the OnCompanyOpen trigger
Si no lo controlas con el session type no funciona.
ya me cuentas.
Un saludo Óscar.
30 noviembre 2022 a las 11:47 #1025185
juanjo.maurizParticipante30 noviembre 2022 a las 12:57 #1025186
oscarmingteParticipante30 noviembre 2022 a las 13:26 #1025190
juanjo.maurizParticipante30 noviembre 2022 a las 17:10 #1025191
Debe iniciar sesión para responder a este tema.