Запуск отчета из планировщика задач / заданий

#microsoft-dynamics #navision

#microsoft-dynamics #navision

Вопрос:

Я пытаюсь запустить отчет, который выполняет некоторые SQL-запросы в NAV 2015

Если я запускаю отчет вручную, он работает отлично, но когда я устанавливаю его в планировщик задач, он выдает ошибку, поскольку у него есть автоматизация, которая пытается загрузиться в клиенте.

Я изменил параметры СОЗДАНИЯ на (FALSE, FALSE) вместо (FALSE, TRUE), поэтому он запускается на сервере вместо клиента, но когда я пытаюсь скомпилировать его, он выдает эту ошибку:

введите описание изображения здесь

Перевод: не удается создать объект автоматизации «SqlConnection» в NAV Server. Вы должны создать его в клиенте.

Но если я создам его в client CREATE (FALSE, TRUE), это выдаст ошибку: введите описание изображения здесь

Перевод: сервер NAV пытался вернуть вызов клиента для создания объекта автоматизации. Возврат вызовов от клиента не разрешен на сервере NAV.

Это код: (циклическая таблица компаний)

 IF (STRPOS(LOWERCASE(Company.Name), 'prueba') = 0) AND (STRPOS(LOWERCASE(Company.Name), 'test') = 0) AND (STRPOS(LOWERCASE(Company.Name), 'uat') = 0) AND (STRPOS(LOWERCASE(Company.Name), 'prova') = 0) THEN BEGIN
  recWasteHeader.CHANGECOMPANY(Company.Name);
  IF recWasteHeader.COUNT > 0 THEN BEGIN
    recWasteLine.SETRANGE("Document Type", 4);
    recWasteLine.SETRANGE("Business Type", 2);
    recWasteLine.SETFILTER("Sub Contract No.", '<>%1', '*NUL*');
    IF recWasteLine.FINDSET THEN BEGIN
      IF ISCLEAR(sqlConnection) THEN
        CREATE(sqlConnection, FALSE, FALSE);
      sqlConnection.Open(ConnectionString);

      IF ISCLEAR(sqlCommand) THEN
        CREATE(sqlCommand, FALSE, FALSE);
      sqlCommand.ActiveConnection := sqlConnection;                      
      sqlCommand.CommandText := 'DELETE FROM [Noc Services Price] WHERE Empresa='   q   Company.Name   q;
      sqlCommand.CommandType := 1;
      sqlCommand.Execute;

      REPEAT
        querydata := STRSUBSTNO(dataset, Company.Name, recWasteLine."Document No.", recWasteLine."Line No.", recWasteLine.Amount);
        sqlCommand.CommandText := 'INSERT INTO [Noc Services Price] (Empresa, Contracte, [Linea contracte], [PREU ACTUAL]) VALUES ( '   querydata   ');';
        sqlCommand.Execute;
      UNTIL recWasteLine.NEXT = 0;

      sqlConnection.Close;      
    END;
  END;
END;
 

Я также не могу найти dotnet System.Data.SqlClient

введите описание изображения здесь

Комментарии:

1. Какой тип sqlConnection ? И какую версию Nav / BC вы используете?

2. Скорее всего, вам нужно использовать .net вместо типа автоматизации.

3. извините, забыл упомянуть, что это NAV 2015 .. SqlConnection — это автоматизация: «Библиотека Microsoft ActiveX Data Objects 6.1». Подключение

4. Затем используйте Ado. Вместо этого Net. Он будет выполняться на сервере.

5. должен ли я создать свою собственную dll или для нее уже есть dotnet в NAV defaults? заранее благодарю @MakSim