Имя: Пароль:
1C
1С v8
Запуск скрипта консоли из 1С
0 tabarigen
 
29.01.16
17:57
Пытаюсь выполнить простой скрипт из 1С. Код такой:

&НаСервере
Процедура РаспаковатьПрайс()
    WshShell = Новый COMОбъект("WScript.Shell");
    WshShell.Run("""C:\Program Files\WinRAR\Rar.exe"""  + " x" + " Y:\price\price.rar" + " N:\" ,7,-1);
КонецПроцедуры
Скрыть


Если смотреть отладчиком то """C:\Program Files\WinRAR\Rar.exe""" + " x" + " Y:\price\price.rar " + "N:\" дает валидную строку скопировав которую в консоль команда выполняется.
Пробовал разные варианты, прописывал также переменные окружения пробовал запускать вот так:
WshShell.Run("rar x Y:\price\price.rar N:\" ,7,-1);

но все без толку
1 Cyberhawk
 
29.01.16
17:58
База файловая?
2 Cyberhawk
 
29.01.16
17:58
Если нет, то проверяй интерактивно из-под пользователя, под которым крутится служба агента сервера 1С
3 tabarigen
 
29.01.16
18:06
(2)Да файловая
4 tabarigen
 
29.01.16
18:07
Все на моем декстопе который и является сервером для базы.
5 mehfk
 
29.01.16
18:17
(0) А вопрос, собственно, в чем?
6 Cyberhawk
 
29.01.16
18:19
В режиме обычного приложения проверь, что твой скрипт работает
7 HardBall
 
29.01.16
18:27
КомандаСистемы(<СтрокаКоманды>, <ТекущийКаталог>) нет?
8 tabarigen
 
29.01.16
18:29
(7) да.
Но что если я хочу выполнять ее регламентным заданием на сервере?
9 Garykom
 
гуру
29.01.16
18:32
10 Garykom
 
гуру
29.01.16
18:34
11 tabarigen
 
29.01.16
18:39
(9) у меня тоже самое.
(10)  попробую сначала разобраться в чем трабл, а потом замены искать.
12 HardBall
 
29.01.16
18:59
Cгенерируй батник. Запиши.И выполни.
Чо еще.
13 tabarigen
 
29.01.16
19:25
проблема была в пробеле в пути. Написал так, все гуд.

&НаКлиенте
Процедура РаспаковатьПрайс()
    //WshShell = Новый COMОбъект("WScript.Shell");
    //WshShell.Run("""C:\PROGRA~1\WinRAR\Rar.exe"""  + " x" + " Y:\price\price.rar" + " N:\" ,7, 1);
    
    
    Кат = КаталогВременныхФайлов();
    ИмяТемпФайла = ПолучитьИмяВременногоФайла(".cmd");
    
    прм_Строка = "C:\PROGRA~1\WinRAR\Rar.exe x Y:\price\price.rar N:\";
    пауза = "pause";
    
    fso=Новый COMОбъект("Scripting.FileSystemObject");
    Если Не fso.FileExists(ИмяТемпФайла) Тогда
        file=fso.CreateTextFile(ИмяТемпФайла, -1, 0); //создать файл, перезаписывая существующий.
        file.WriteLine(прм_Строка);
        file.WriteLine(пауза);
        file.Close();
    Иначе
        file=fso.OpenTextFile(ИмяТемпФайла, 8, 0); //дополнить файл
        file.WriteLine(прм_Строка);
        file.WriteLine(пауза);
        file.Close();
    КонецЕсли;
    
    WshShell = Новый COMОбъект("WScript.Shell");
    WshShell.Run(ИмяТемпФайла);
КонецПроцедуры
14 tabarigen
 
29.01.16
19:33
кстати как то покрасивее нельзя было записать строку C:\PROGRA~1\WinRAR\Rar.exe x Y:\price\price.rar N:\   в файл?
Закон Брукера: Даже маленькая практика стоит большой теории.