Добрый день.
Столкнулся с проблемой при открытии отчета в клиенте.
Отчет создается и открывается скриптом вида:
procedure RLCustomReport(reportTemplate: string);
var
aReport: TM_Report;
aPeriod: Integer;
begin
(* Ограничиваем период *)
aPeriod := _ReportDTPeriod.Value;
if (aPeriod < 900) and (aPeriod <> -1) then //Исключение (-1) - это выборка за месяц
begin
aPeriod := 900; // Минимум 15 мин в сек
_ReportDTPeriod.Value := aPeriod;
end;
(* Строим отчет *)
aReport := ReportBuild(reportTemplate);
AddMessage(Now, mkMessage, "Создание произвольного отчета." +
" Начало: " + DateTimeToStr(_ReportDTStart.AsDateTime) +
" Конец: " + DateTimeToStr(_ReportDTEnd.AsDateTime) +
" Период: " + IntToStr(_ReportDTPeriod.Value) +
" Шаблон: " + reportTemplate, False, False);
(* Открываем отчет для просмотра на клиенте *)
aReport.View(GetClientName);
end;
При первом создании отчета, отчет открывается в клиенте. Тут все ОК.
Закрываем просмотрщик отчетов на клиенте.
После непродолжительного времени ожидания (до 10 сек иногда и дольше).
Повторно создаем отчет, но отчет на клиенте не открывается.
Тут проблема! В логах просмотрщика появляется запись, что "... файл используется другим процессом". Однако в логах сервера написано, что отчет создан.
15.11.2024 11:09:46.185 | Error while read file "D:\Simple-Scada 2\Received\15.11.2024 11.09.46 (178).recview". Процесс не может получить доступ к файлу "D:\Simple-Scada 2\Received\15.11.2024 11.09.46 (178).recview", так как этот файл используется другим процессом.
15.11.2024 11:09:54.318 | Error while read file "D:\Simple-Scada 2\Received\15.11.2024 11.09.54 (308).recview". Процесс не может получить доступ к файлу "D:\Simple-Scada 2\Received\15.11.2024 11.09.54 (308).recview", так как этот файл используется другим процессом.
15.11.2024 11:10:13.550 | Error while read file "D:\Simple-Scada 2\Received\15.11.2024 11.10.13 (538).recview". Процесс не может получить доступ к файлу "D:\Simple-Scada 2\Received\15.11.2024 11.10.13 (538).recview", так как этот файл используется другим процессом.
15.11.2024 11:10:15.453 | Error while read file "D:\Simple-Scada 2\Received\15.11.2024 11.10.15 (447).recview". Процесс не может получить доступ к файлу "D:\Simple-Scada 2\Received\15.11.2024 11.10.15 (447).recview", так как этот файл используется другим процессом.
После продолжительного времени ожидания (около минуты).
Повторно создаем отчет, отчет открывается в клиенте. Тут все ОК.
Версия Simple-Scada v2.6.14.0.
У пользователя Windows тип учетной записи "ограниченный пользователь" (не админская учетка).
Редактор отчетов во время создания отчетов закрыт. Хотя до этого был открыт.
Просмотрщик отчетов закрыт.
Как я понимаю, процесс просмотрщика отчетов не успевает закрыться/выгрузиться из памяти windows перед повторным открытием отчетов?
Хочу понять, так должно быть или нет?
Я понимаю, что отчеты в здравом уме никто не будет создавать каждые 10 сек.