Ваши комментарии

Если в генераторе отчетов выбрать шаблон и нажать "Сформировать отчет", появляется указанное окно с ошибкой.

А эта ошибка всегда возникает, независимо от того, какой отчет выбран.

Версия 4.7.6.50 Pro.

В общем, мне так и не удалось найти нормальный способ генерации отчетов.

Мне нужно сделать, чтобы при возникновении определенного события (авария в системе), 

делать 10-минутный срез всех основных параметров с секундной дискретностью.

Проблема в том, что модуль генерации отчетов не позволяет выгружать отчет в формате Excel (2007).

Возникает ошибка доступа (скриншот - во вложении). 

Формат PDF мне не подходит, поскольку мне нужно потом эти данные обрабатывать и строить по ним графики. 

Я пробовал идти другим путем: написал скрипт, который при возникновении определенных условий в системе, запускает посекундную запись в файл csv. Возникает проблема, связанная с тем, что возникают пропуски в данных: значения отдельных каналов не обновляются по 5 и более секунд. Получается, что Simp Light не успевает записывать 2 десятка параметров со скоростью 1 значение в секунду! 

Я вижу, на данный момент, единственный вариант решить эту задачу:

в момент определенного события (авария в системе) извлекать данные из базы данных функцией StreamReadFromDatabase, затем извлекать отдельные значения при помощи функции 

GetValueFromStream и дальше записывать эти значения с меткой времени в строку,

а из строк формировать уже файл csv.

Однако, мне кажется, данный путь трудоемким и нерациональным - хотелось бы найти более простое решение.


Что вы можете порекомендовать?!

Screenshot - 19.02.2021 , 11_22_01.png

Нет. Я прочитал в документации, как это сделать вручную.

А мне нужно понять по шагам, как это автоматизировать.

Я работаю под учетной записью с правами администратора.

Если вкратце: исходя из того что каждый скрипт в СИМП работает в отдельном потоке, то для создания экземпляра Excel, вызывается функция CoInitializeEx для инициализация работы с СОМ объектом в потоке.

Результат этой функции - успешность или не успешность, инициализации. Одна из ошибок которая может произойти - это то что - библиотека COM уже инициализирована в этом потоке. Могу предположить что после того как создали объект Excel, внесли изменения, и закрыли его, при следующем создании объект находится ещё на стадии завершения работы, т.е. деинициализация библиотеки для работы в потоке ещё не завершена, по этой причине повторная инициализация становится не возможной.


И что с этим делать? Я сделал так, чтобы скрипт вызывался однократно при нажатии на кнопку. 

Результат тот же.

Какие возможные причины возникновения данной ошибки?

Опишите, пожалуйста, механизм работы ваших функций с точки зрения ОС.

Что происходит при вызове функции OpenTemplate и процедуры Close?

Можно ли управлять явным образом запуском и остановкой процесса Excel.exe?

Например, через CreateOleObject('Excel.Application'). 

Если да, то приведите, пожалуйста, пример рабочего кода.

Обычно после запуска Монитора висит процесс Excel. После закрытия Монитора продолжает висеть. Я его вручную убиваю.

Windows 7 SP 1

SimpLight v4.7.5.101

Смысл в том, чтобы заносить данные в журнал периодически (несколько десятков параметров). 

После того, как проведу наладку, буду вызывать скрипт раз в час.

Сейчас нужно понять, в чем проблема. В другом проекте практически такой же код работает нормально.

Напишите, пожалуйста, подробнее: изменение каких настроек приводит к разрыву связи с базой данных?



Сервис поддержки клиентов работает на платформе UserEcho