#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