Etiquetado: AL, INICIAR PÁGINA AL INICIO
- Este debate tiene 6 respuestas, 2 mensajes y ha sido actualizado por última vez el hace 3 años, 8 meses por
juanjo.mauriz.
-
AutorEntradas
-
30 noviembre 2022 a las 10:42 #1025181
juanjo.maurizParticipanteBuenos 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:59 #1025182oscarmingte
ParticipanteHola 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 11:09 #1025184
juanjo.maurizParticipanteBuenos 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:47 #1025185oscarmingte
ParticipanteHola , 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 12:57 #1025186
juanjo.maurizParticipanteBuenos días, de nuevo.
¡¡¡PERFECTO!!!
Ahora si que funciona, por lo que el problema era del “type” porque lo de commit() también lo había puesto en una ocasión, incluso con sleep para que tardara un poco mas, pero fallaba igualmente.
Saludos y muchisimas gracias!!!
30 noviembre 2022 a las 13:26 #1025190oscarmingte
ParticipanteHola , si así es el commit lo metí yo y esta mal hecho los commit hay que usarlos con limitación.
Un saludo Óscar.
30 noviembre 2022 a las 17:10 #1025191
juanjo.maurizParticipanteHola Oscarmingte.
Si, se que es problematico porque mata los procesos activos y pueden haber pérdida de integridad de datos. Intento no utilizarlo.
Muchisimas gracias de verdad.
Saludos!!!
-
AutorEntradas
- Debes estar registrado para responder a este debate.