Имя: Пароль:
1C
1С v8
Выполнить скрипт на сервере
0 slafor
 
10.11.22
14:06
Подскажите, как можно выполнить bat-файл со строками вида "@echo off
    cscript.exe upload.vbs 1460717 .\Gruz.txt". При этом сам bat-файл, upload.vbs (скрипт) и Grus.txt находятся в сетевом каталоге: \\Server\PriceIM\. Сама 1С серверная, SQL. Такое ощущение, что когда делаю ЗапуститьПриложение и прописываю такой путь к bat-файлу, 1С не находит остальные файлы.
1 Жан Пердежон
 
10.11.22
14:11
У 1Сной учетки прав то хватает?
2 Garykom
 
гуру
10.11.22
14:19
(0) или в батнике полные права пропиши
или cd \\Server\PriceIM
3 Garykom
 
гуру
10.11.22
14:19
(2) тьфу *полные пути
4 Garykom
 
гуру
10.11.22
14:20
echo off
\\Server\PriceIM\cscript.exe \\Server\PriceIM\upload.vbs 1460717 \\Server\PriceIM\Gruz.txt
5 slafor
 
10.11.22
14:32
(4) cscript.exe-то он находит, а дальше возникают "нюансы": если запускаю батник не через 1С, а через cmd, то мне пишет "Ошибка GScript: Ошибка <Не найдено сетевое имя. > при загрузке сценария \\Server\PriceIM\upload.vbs". И в кавычки помещал - то же самое.
6 slafor
 
10.11.22
14:35
(2) А если пишу cd \\Server\PriceIM, то в cmd пишет такое сообщение: "CMD.EXE не поддерживает пути UNC в качестве текущей папки".
7 Garykom
 
гуру
10.11.22
14:40
8 Garykom
 
гуру
10.11.22
14:45
(5) >cscript.exe

а ты уверен что нужный cscript.exe находится ? ;)
9 Garykom
 
гуру
10.11.22
14:49
Еще лучше на 1С копируй свой скрипт в Temp, там запускай и результат копируй обратно
Создавай временные имена файлов! Чтобы двойной запуск (фоновые и т.д.) ничего не испортил
10 Garykom
 
гуру
10.11.22
14:50
(9)+ Подчистить за собой Temp не забудь, файлы которые насоздавал
11 slafor
 
10.11.22
14:52
(8) Уверен. И самое интересно, что скрипт уже запускается. Только теперь другая проблема - судя по всему, не находит сам файл для выгрузки ) . Хотя путь к нему я тоже прописываю полностью:
cscript.exe \\Server\PriceIM\upload.vbs 1460717 \\Server\PriceIM\Gruz.txt
И в cmd мне пишет: "Start uploading incremental file.. <...> WshShell.Exec: Не удается найти указанный файл."
12 Garykom
 
гуру
10.11.22
15:00
(11) внутри vbs с unc путями тоже засада ))
13 Garykom
 
гуру
10.11.22
15:01
так что делай (9) и (10)
14 Garykom
 
гуру
10.11.22
15:02
ну или net use на любую букву, например T
и cscript.exe T:\upload.vbs 1460717 T:\\Gruz.txt
15 slafor
 
10.11.22
15:05
(9) Вроде бы отличное решение!
Но у меня почему-то файл не копируется: "Ошибка копирования файлов из '\\Server\PriceIM\start.bat' в 'C:\Users\USR1CV8\AppData\Local\Temp' : Ошибка доступа к файлу"
16 slafor
 
10.11.22
15:13
(15) Хотя доступ точно есть, это шара.
17 slafor
 
10.11.22
15:36
(14) А это будет работать, если выгрузка запускается регламентным заданием, системным пользователем DefUser?
18 slafor
 
10.11.22
15:41
+(15) У меня вообще ни один файл из шары во временную директорию не копируется. Везде пишет "Ошибка доступа к файлу".
19 Kassern
 
10.11.22
15:42
(15) нда...У вас служба 1с под каким юзвером запускается? Только не говорите, что под системной учеткой.
20 slafor
 
10.11.22
15:57
(19) Конкретно не знаю, сейчас посмотрю.
Но тут вот в чем дело. Запустил копию базы в файловом варианте, попробовал сделать то же самое - скопировать файлы во временную папку ("КопироватьФайл("D:\PriceIM\start.bat",КаталогВременныхФайлов());"), и 1С мне выдает точно такую же ошибку! ("Ошибка копирования файлов из 'D:\PriceIM\start.bat' в 'C:\Users\1SPr0g\AppData\Local\Temp\2' : Ошибка доступа к файлу). Что это может быть?
21 Garykom
 
гуру
10.11.22
16:05
(20) Это кто то даже СП походу не осилил ))
22 Kassern
 
10.11.22
16:07
(21) "Что это может быть?"-> (21)  Почитайте за метод КопироватьФайл в СП
23 slafor
 
10.11.22
18:06
(21)(22) Действительно, здесь моя вина - надо было указать файл-приемник )

Во временную директорию копируется нормально.
Если я запускаю батник руками - тоже все нормально идет, скрипт работает, файлы передаются.
А вот если запускаю из 1С - не находит передаваемый файл Gruz.txt. И если запускаю через cmd - то же самое. Батник нормально работает, только если запустить его "двойным нажатием" из каталога временных файлов. Понимаю, что скорее всего это связано с тем, что он ищет уже в другой директории. Как мне это исправить? Помогите, пожалуйста.

Сам батник я сейчас создаю программно, чтобы в нем прописались пути к файлам скрипта и к Gruz.txt. Так что пути прописаны в батнике полностью. Вот текст кода:

КопироватьФайл("\\Server\PriceIM\upload.vbs",КаталогВременныхФайлов() + "upload.vbs");
КопироватьФайл("\\Server\PriceIM\curl.exe",КаталогВременныхФайлов() + "curl.exe");
КопироватьФайл("\\Server\PriceIM\Gruz.txt",КаталогВременныхФайлов() + "Gruz.txt");
Текст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку("@echo off");
Текст.ДобавитьСтроку("    cscript.exe " + КаталогВременныхФайлов() + "upload.vbs 1460717 " + КаталогВременныхФайлов() + "Gruz.txt");
Текст.Записать(КаталогВременныхФайлов() + "start.bat");
Попытка
ЗапуститьПриложение(КаталогВременныхФайлов() + "start.bat");
Исключение
Сообщить(ОписаниеОшибки());        
КонецПопытки;
24 slafor
 
10.11.22
19:33
Нашел решение.

В формируемом файле start.bat надо добавить строку после echo off:
Текст.ДобавитьСтроку("Set path=%path%;" + КаталогВременныхФайлов());

Тогда каталог временных файлов станет основным каталогом, и все заработает. Всем спасибо, отдельное спасибо тем, кто порекомендовал воспользоваться каталогом временных файлов )
25 Garykom
 
гуру
10.11.22
19:39
(24)
достаточно было
Текст.ДобавитьСтроку("cd " + КаталогВременныхФайлов());
26 Garykom
 
гуру
10.11.22
19:43
>Текст.ДобавитьСтроку("    cscript.exe " + КаталогВременныхФайлов() + "upload.vbs 1460717 " + КаталогВременныхФайлов() + "Gruz.txt");

длинные пути надо брать в кавычки
КаталогВременных = КаталогВременныхФайлов();
ПутьVBS = """" + КаталогВременных + "upload.vbs" + """";
ПутьGruz = """" + КаталогВременных + "Gruz.txt" + """";
Текст.ДобавитьСтроку("cscript.exe " + ПутьVBS + " 1460717 " + ПутьGruz);
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.