0
- 10.03.2012 - 22:20
|
Доброго здоровья всем, чего то не получается запустить батник из модуля на котором стоит галка "сервер": сделал бат файл с текстом запуска опред. базы конфигуратором (с указанием имени пользователя и пароля,из под которого будет происходить запуск и параметром /DumpIB, в общем со всеми делами, которые нужны; если запустить его Shell.Run("C:\File.bat") из пользовательского режима кнопкой обработки например, то все ОК), положил его на диск С; в вышеупомянутом модуле написал процедуру отключения всех сеансов (текущий так и не понял как будет называться - теоретически должен иметь имя учетки из под которой запускается служба агента сервера, но запись на диск текстового документа с установленным в него текстом ТекущийПользователь() дала пустоту, но это не суть - база, бэкап которой надо сделать - отличная от той, где создал рег.задание и внешний модуль). Итого: в базе1 рег задание запускает процедуру общего модуля (на модуле галка Сервер), в которой написано отключение всех сеансов базы2 и запуск bat файла с диска С, в файле написан Запуск конфигуратора с последующим дампом базы2 в сетевую папку - схема работает только в случае запуска такой процедуры обработкой (процедура в форме обработки), в случае размещения процедуры в общем модуле - не работает, не важно как запускать - рег заданием или кнопкой формы. Смотря на процессы в таскменеджере видно что смд запустился от имени пользователя, под которым запускается служба агента сервера, от него же запущен Конфигуратор, но дальше никаких движений - оба процесса висят мертвым грузом, что может быть не так? | |
1
- 11.03.2012 - 09:59
| Сопсно все - у пользователя, из под которого запускается служба агента, нет прав на сетевую шару, вопрос снят | |
2
- 13.03.2012 - 14:02
|
и все таки не понятно... в контексте сервера не хочет отрабатывать Процедура Выгрузка() Экспорт Файл = Новый Файл("\\workstation\Share\BackUp.bat") Если Файл.Существует() Тогда WshShell=Новый COMОбъект("Wscript.Shell"); WshShell.Run(Файл.ПолноеИмя); КонецЕсли; КонецПроцедуры написано это в общем модуле с галкой "Сервер", запускаю процедуру кнопкой обработки Процедура Кнопкаобработки() ОбщийМодульСГалкойСервер.Выгрузка(); КонецПроцедуры Вот содержимое батника "c:\Program Files\1cv82\8.2.14.519\bin\1cv8.exe" CONFIG %Base% /DisableStartupMessages /DumpIB\\workstation\Share\BackUpBase_%dt%.dt /NUser /PPassword /OUT\\workstation\Share\BackUpLog_%dt%.log -NoTruncate При нажатии кнопки в обработке приложение виснет навечно - не исключений, ни ошибок, хотя если запустить батник мышкой то все нормально отрабатывает, если поместить содержимое процедуры "Выгрузка" в процедуру обработки нажатия кнопки на форме - тоже нормально, пользователь службы агента сервера имеет все необходимые права, например код ТекстДок = Новый ТекстовыйДокумент; ТекстДок.УстановитьТекст("123321"); ТекстДок.Записать("\\workstation\share\123321.txt" ); делает то, что его просят. В итоге получается что в режиме клиента (исполнение кода клиентом) конструкция WshShell.Run(ПутьКФайлу) работает нормально, а в контексте сервера - нет. Понимаю, что проблема может быть сугубо индивидуальной - настройки доменных пользователей, организация сети или еще что, но насколько эта схема корректна, может чего упустил? пс: сервер приложений - MS 2008, 32 бит (не хочет зараза shell.Run() делать) | |
3
- 13.03.2012 - 14:07
| А точно Run виноват? WshShell создается? | |
4
- 13.03.2012 - 14:36
|
да, проверял так Попытка WshShell=Новый COMОбъект("Wscript.Shell"); ТекстДок = Новый ТекстовыйДокумент; ТекстДок.УстановитьТекст(WshShell); ТекстДок.Записать("\\workstation\share\123321.txt" ); Исключение КонецПопытки; в файл написал "ComОбъект" ну а в принципе был успешный опыт запуска такой конструкции в серверном модуле? может оно ему не доступно? | |
5
- 13.03.2012 - 14:42
| А чего эту муть не запихать в планировщик виндавс? | |
6
- 13.03.2012 - 14:47
| виндовс - прерогатива админов, не сегодня - завтра стукнет в голову винду переставлять или еще какие идеи, да и вообще это "ихнее", а рег.задание свое, родное :) | |
7
- 13.03.2012 - 14:52
| Извращение из одной базы запускать архивацию другой базы. Админ админом, а регламентные задания тоже могут подвисать. | |
8
- 13.03.2012 - 15:12
| так сделал исключительно для теста - во второй базе нет активных сеансов, что бы не заморачиваться с отловом своего пользователя... да просто удобно, не вижу принципиальной разницы, к тому же архивация делается батником, кодом просто выгоняю пользователей и хочу запустить бат. Рег. задания, с работоспособным кодом в зависаниях заподозрены не были | |
9
- 14.03.2012 - 15:04
|
попа.... почему серверный код не отрабатывает WshShell.Run("\\workstation\share\file.bat"); В файле написано ping 127.0.0.1, после нажатия на кнопку, которая запускает процедуру запуска бата, приложение безнадежно виснет, шо это занах О_о | |
10
- 14.03.2012 - 15:39
|
ВозвращенноеЗначение = WshShell.Run("\\workstation\share\file.bat",,-1); и отладчиком ВозвращенноеЗначение посмотреть? | |
11
- 14.03.2012 - 17:55
| Потомушто шелл окно хочет. | |
| Интернет-форум Краснодарского края и Краснодара |