:: Visual Foxpro, Foxpro for DOS
Re: Запуск exe-файла из планировщика заданий
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
dimuhametov

О чем и речь: не IF FILE(), а TRY...ENDTRY.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Аспид
поставьте =MESSAGEBOX("Первый этап висит") в самом начале
Не надо никаких диалогов для программы запускающейся из планировщика - если нужен лог, то только в файл.
Плюс глобальный обработчик ошибок - опять же с логом в файл (т.к. фокс 9-й, то вполне пойдёт сделать объемлющий ВЕСЬ код try блок).
Плюс специально предназначенная для "неинтерактивных" приложений установка SYS(2335,1) - хотя она, насколько я понимаю, не повлияет на работу COM серверов типа экселя, но по крайней мере в собственно фоксовой программе запускаемой не интерактивно никаких "диалогов" уже не будет - которые будут показаны невесть где и "подвесят" процесс.

С Workbooks(1) не стоит работать. Метод WorkBooks.Add возвращает ссылку на вновь созданную книжку - по этой ссылке и надо с ней работать, а не по каким-то там Workbooks(1), который вообще не обязан быть ссылкой на ЭТУ свежесозданную книжку (мало ли кто/когда/как откроет ещё что-то в этой копии экселя). ActiveSheet, Activate, Select, Selection - крайне не рекомендуется использовать в подобном коде работы с экселем.
Это вряд ли причина твоих проблем, но для надёжности и чистоты кода стоит так поступать.
В SaveAs стоит указать 2-й параметр - тип сохраняемого файла. Раз уж расширение xlsx используется.

А в общем я не уверен что можно хоть как-то побороть неадекватное поведение экселя при "не интерактивной" его работе - запуске из планировщика. Для теста сделай вместо создания новой книги открытие и модификацию существующей - т.е. WB.Open, чего-то поменять скажем на 1-м листе, и WB.Save - не SaveAs. Для теста возьми книжку открывающуюся в твоей версии экселя без лишних вопросов/предупреждений/диалогов и прочего - в текущем формате, с простым именем и "правильным" расширением, без макросов, внешних связей и прочих наворотов.
Плюс ко всему, проверять надо на машине БЕЗ антивирусов. Это г*но способно много кровушки попить при "программной" работе с офисными документами...

Альтернативный вариант (хотя он может и не подойти к твоей задаче) - создавать экселевский документ БЕЗ экселя. Новоформатные xlsx это особого рода архивы с xml-ями внутри, так что в принципе кроме zip-архива всё "сформировать" можно и в чистом фоксе, без внешних компонент, особенно таких сложных/массивных как собственно эксель.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Подправил.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Хочу сказать, что проблема не в коде (или его вариациях):
* Проверка наличия файла
if file("spravochnik.xlsx")
erase "spravochnik.xlsx"
ENDIF
который я вставил, чтобы удалять xlsx-файл, так как Excel будет ругаться при последующем запуске программы и сохранения ее работы в файл с тем же именем. При первоначальном запуске из планировщика заданий никаких Excel-файлов нет, а программа зависает.
Messagebox я использовал, чтобы посмотреть, выдает ли программа хоть какие-то информационные окна на экран при запуске через планировщик заданий. Оказывается при запуске программы, как фоновый процесс, никакие окна и сообщения на экран не выводятся.
Попробую сделать то, о чем написал Igor Korolyov ниже. Может получиться.



Исправлено 1 раз(а). Последнее : Vuk, 16.11.17 06:59
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Попробую сегодня.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Igor Korolyov
Не надо никаких диалогов для программы запускающейся из планировщика - если нужен лог, то только в файл.
Игорь, ты не понял смысл сих действий.
Это трассировка хода программы в реальном времени. И нужна только для нахождения проблемы.
Vuk

Попробуй вообще выкинуть всю логику. Всю работу с excel. (Тем более что до нее вроде как и не доходит)
Обвешай мессагами
=m('begin')
* Проверка наличия файла
if file("my.txt")
=m('Yes')
erase "my.txt"
else
=m('No')
ENDIF
=m('Go')
Ты просто пройдешь проблемное место по шагам.
Ну и выведи куда то путь.

Ну и конечно можно это в файл лога, тока по мне так неудобней.


------------------
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Похоже, у каждого свой Excel.
Ratings: 0 negative/1 positive
Re: Запуск exe-файла из планировщика заданий
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
Vuk
Хочу сказать, что проблема не в коде (или его вариациях):
* Проверка наличия файла
if file("spravochnik.xlsx")
erase "spravochnik.xlsx"
ENDIF
который я вставил, чтобы удалять xlsx-файл, так как Excel будет ругаться при последующем запуске программы и сохранения ее работы в файл с тем же именем. При первоначальном запуске из планировщика заданий никаких Excel-файлов нет, а программа зависает.
Messagebox я использовал, чтобы посмотреть, выдает ли программа хоть какие-то информационные окна на экран при запуске через планировщик заданий. Оказывается при запуске программы, как фоновый процесс, никакие окна и сообщения на экран не выводятся.
Попробую сделать то, о чем написал Igor Korolyov ниже. Может получиться.
И еще, для сохранения в формате Excel 2007/2003:
oExcel.ActiveWorkbook.SaveAs(lcFile, xlNormal, "","",.F.,.F.)
Для сохранения в формате Excel 2010 и выше:
oExcel.ActiveWorkbook.SaveAs(lcFile, xlOpenXMLWorkbook, "","",.F.,.F.)
А вообще можно весь код главного PRG-файла привести? А то что-то мне кажется дело было не в бабине...


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Vuk
Что я пытаюсь сделать?! Я хочу автоматизировать процесс создания Excel-файла по расписанию. Написал программу на VFP:

Попробовал ради интереса запустить приведенный код в ХР из-под суперадмина (VFP9, Excel 2010) - все проходит без проблем.
Т.е., возможно все дело с проблемной командой все-таки в правах на выполнение чего-то именно для фокспро?
Хотя в принципе можно еще конечно допустить и какую-то специфику ее отработки именно в среде Windows 10.

Vuk
Запускал задание также под логином администратора

Можно попробовать еще повысить уровень самого запускаемого файла, как описывалось в статье Крейга Бойда, перевод: forum.foxclub.ru Вроде на первый взгляд будет то же самое, но возможно окажутся и какие-то нюансы. Попытка не пытка.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Перминов Игорь

Сообщений: 1591
Откуда: Красная Орловка
Дата регистрации: 16.09.2001
LOCAL oExcel as "excel.application" OF "excel.application", loErr as Exception
STORE NULL TO oExcel, loErr, this.exception
TRY
oExcel = createobject("excel.application")
CATCH TO loErr
this.exception = loErr
ENDTRY
IF ISNULL(oExcel)
RETURN .F.
ENDIF
this.ActiveWorkbook = oExcel.Workbooks.Add()
DO WHILE this.ActiveWorkbook.Sheets.Count > 1
this.ActiveWorkbook.Sheets(this.ActiveWorkbook.Sheets.Count).Delete()
ENDDO
this.ActiveWorkbook.Sheets(1).Select()
oExcel.ReferenceStyle = -4150 && xlR1C1 xlA1
oExcel.ActiveWindow.View = 1 && xlNormalView
oExcel.DisplayAlerts = .F.
this.ActiveWorkbook.Saved = .T.
This.xls_viewmode = oExcel.ActiveWindow.View
This.activeprinter = oExcel.ActivePrinter
this.oexcel = oExcel


------------------
Без коментариев..
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Перминов Игорь
this.ActiveWorkbook.Saved = .T.
Saved НЕ сохраняет файл - только помечает его как "сохранённый". Чем это поможет автору темы? Ему то как раз надо сохранить файл...
Про вышенаписанный вариант SaveAs я и говорил - стоит как минимум 2 параметра указывать - кроме имени ещё и формат/тип. Константы, полагаю, автор вопроса сам найти сможет, в том же экселе подсмотреть Только не факт что это повлияет на поведение экселя... При его работе "под контролем и без десктопа".

Crispy
возможно все дело с проблемной командой все-таки в правах на выполнение чего-то именно для фокспро
Дело в особенностях работы программ запускаемых из планировщика. Точнее, программ работающих "как сервис" - т.е. БЕЗ доступа к десктопу. Любое телодвижение связанное с попыткой показать какой либо диалог приведёт к зависанию всего процесса, т.к. этот диалог такой программе-сервису попросту негде показывать. Решается сие, естественно, переписыванием программы под такой режим работы. Что нужно фоксу для такого режима, я написал выше, но проблема то с экселем - его не "переписать" никак.

Теоретически автор может настроить задачу так, чтобы она работала только когда "юзер залогинен" - по идее тогда задача (т.е. этот фоксовый процесс и запускаемый из него эксель) получат доступ к десктопу пользователя. Возможно что одного этого уже будет достаточно чтобы эксель не "зависал" на сохранении файла. Т.е. возможно что даже и диалога он никакого не покажет. Но, естественно, это приведёт к тому что эта задача НЕ будет выполняться когда пользователь "вышел из системы". И уж совсем коряво это будет выглядеть при установке на сервере.

В 10-ке в планировщике изменили фишки по работе задач запускаемых "во время простоя" - при работе на ноутбуках или иных "батарейно-питаемых" системах. Там уже состояние сна ноута не будет считаться "простоем" и во время него не будут запускаться всякие дефрагментации дисков, и прочие "обслуживания системы", пожирающие батарейку. А так принципиальных отличий нет ни от 8.1, 8, 7, ни даже от висты, где, насколько я в курсе, и появился этот "новый улучшенный планировщик". Вот под XP это было совсем другое приложение, со своими особенностями и порядком настройки...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
pasha_usue

Сообщений: 3647
Откуда: Е-бург
Дата регистрации: 06.10.2006
Igor Korolyov
Дело в особенностях работы программ запускаемых из планировщика. Точнее, программ работающих "как сервис" - т.е. БЕЗ доступа к десктопу. Любое телодвижение связанное с попыткой показать какой либо диалог приведёт к зависанию всего процесса, т.к. этот диалог такой программе-сервису попросту негде показывать. Решается сие, естественно, переписыванием программы под такой режим работы. Что нужно фоксу для такого режима, я написал выше, но проблема то с экселем - его не "переписать" никак.
Не "БЕЗ доступа к десктопу", а в виртуальном десктопе.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Равиль

Сообщений: 6547
Откуда: Уфа
Дата регистрации: 01.08.2003
pasha_usue
Igor Korolyov
Дело в особенностях работы программ запускаемых из планировщика. Точнее, программ работающих "как сервис" - т.е. БЕЗ доступа к десктопу. Любое телодвижение связанное с попыткой показать какой либо диалог приведёт к зависанию всего процесса, т.к. этот диалог такой программе-сервису попросту негде показывать. Решается сие, естественно, переписыванием программы под такой режим работы. Что нужно фоксу для такого режима, я написал выше, но проблема то с экселем - его не "переписать" никак.
Не "БЕЗ доступа к десктопу", а в виртуальном десктопе.

Да, было такое же - ну никак Com объект Excel не хотел работать с файлами (открывать/сохранять) из планировщика без логина пользователя, т.е. без активного десктопа.
Обсуждали здесь (еле нашел - оказывается 7 лет пролетело): forum.foxclub.ru
и на какое-то время помогло решение с созданием папки C:\Windows\SysWOW64\config\systemprofile\Desktop
с установкой прав доступа к ней (Server 2008 R2 64)

Но в последующих версиях - увы )) возможно прикрыли эту лазейку и теперь приходится на серваке держать залогиненным специально заведенного юзера.
Причем он может висеть в состоянии "отключен" - этого достаточно для нормальной работы.


------------------
Тяжело согнать курсором муху с монитора ...
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Спасибо большое за ответы. Я в выходные еще раз все просмотрю и в понедельник напишу о результатах. Код своего единственного prg-файла также покажу.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Спасибо за код. Попробую.
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
только я заметил проблему ТС?
проблема в самом решении задачи
есть куча вариантов сформировать файл нужного тебе формата
а вот сам эксель для серверного варианта не годится = отседа и все проблемы


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Я писал про альтернативы. Но, полагаю, ты и сам понимаешь во что выливается переделка уже налаженной схемы формирования "документов". Тем более если речь пойдёт о каких "шаблонах" в экселе, или, не дай бог, о собственно его макросах...
А так то оно, конечно, держать офисный пакет на сервере для формирования документов это неправильно...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
Vuk
Автор

Сообщений: 61
Дата регистрации: 07.12.2005
Мне необходимо сформировать Excel-файл в автоматическом режиме. Я пытаюсь эту задачу решить, как написано выше. Что Вы можете мне предложить?
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Vuk
Мне необходимо ...

Зачем, для чего?
Ratings: 0 negative/0 positive
Re: Запуск exe-файла из планировщика заданий
lulgu

Сообщений: 1838
Дата регистрации: 30.11.2016
Foxtrot
только я заметил проблему ТС?
проблема в самом решении задачи
есть куча вариантов сформировать файл нужного тебе формата
а вот сам эксель для серверного варианта не годится = отседа и все проблемы

Самой задачи ведь нет, а есть только ее решение, что и обсуждается.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 25 OlegA Равиль  (Гостей: 23)

© 2000-2024 Fox Club 
Яндекс.Метрика