Имя: Пароль:
1C
 
Вопрос про ЗапуститьПриложение на сервере
0 Азат
 
30.06.25
11:31
Всем доброго!

Пытаюсь выполнить скрипт python на сервере 1С (8.3.27).
Для этого запускаю команду вида "C:\Program files\Python313\python.exe C:\Folder\my_file.py"

Почему-то скрипт не отрабатывает, Return code = 1
Если в RDP открываю командную строку и выполняю этот код, то все отрабатывает норм
Служба сервера 1С работает под Local system account. права на все файлы есть.

Подскажите, куда можно копать?
1 Волшебник
 
30.06.25
11:33
может добавить кавычек?
ЗапуститьПриложение("""C:\Program files\Python313\python.exe"" C:\Folder\my_file.py");
2 Азат
 
30.06.25
12:12
(1) к сожалению, не взлетело, как и с Progra~1
3 Garykom
 
гуру
30.06.25
12:41
(0) 1. Копать в сторону bat/cmd и запуска его из 1C
2. Использовать не ЗапуститьПриложение а КомандаСистемы

bat/cmd можно программно создавать в темп
4 Kongo2019
 
30.06.25
14:11
(0)Справку читал?

При запуске "1С:Предприятия" в пакетном режиме, а также при вызове метода на сервере будет сгенерировано исключение.
5 Garykom
 
гуру
30.06.25
14:21
(4) Кстати это пример странного в 1С
Почему на сервере исключение но сама процедура доступна на сервере?

Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
6 arsik
 
гуру
30.06.25
14:25
(0) А не проще http сервис на том же питоне развернуть? Я бы так сделал.
7 Garykom
 
гуру
30.06.25
14:27
(6) ух ты а питон научился сам без веб-сервера запросы принимать?
8 Kongo2019
 
30.06.25
14:27
(6) Мы так дойдем до сервера API на Node.js
9 arsik
 
гуру
30.06.25
14:30
(6) Так вебсервер на самом питоне наваять можно, еще и скомпилировать в исполнительный, но я не про такой вариант.
Я про тот вариант, что на апаче + питон. Вебсервер скорее всего где то развернут, хоть для той же 1С.
10 Garykom
 
гуру
30.06.25
14:30
(8) одно время я думал что нода это почти серебряная пуля
но потом сильно разочаровался, закостылили все js скриптокодеры в либах
11 Garykom
 
гуру
30.06.25
14:32
(9) лично я думаю что питон там нафиг не нужен на сервере
можно или на 1С сразу сделать нужное
или использовать нечто иное

ЗЫ
Сейчас питон это как бейсик раньше
Чем то напоминает вызов из 1С скриптов на бейсике
12 Kongo2019
 
30.06.25
14:32
(9) Так если есть веб сервер на 1С, то нафиг нам тот Питон?
13 Garykom
 
гуру
30.06.25
14:33
(12) он подразумевал вызов микросервиса вместо запуска консольной проги
14 arsik
 
гуру
30.06.25
14:33
(11) На питоне сейчас много всяких парсеров, скорее оттуда ноги растут. На 1С парсер сложно реализовать.
15 Мультук
 
гуру
30.06.25
14:33
1) Не понимаю зачем питон сразу не поселили в
C:\Python313\python.exe

2) А  есть ли у Local system account права на запуск python.exe ?

3) ЗапуститьПриложение чудно конвертит pdf в jpg на сервере через ImageMagic

КодВозврата = 0;
ЗапуститьПриложение(СтрокаВыполнить, ПутьКФайлам, Истина, КодВозврата);



P.S.
Когда прозвучит волшебное "Напишите уже сервис на Go" ? :-)
16 Kongo2019
 
30.06.25
14:33
(11) Ну не скажи, я с ним всякие извращения в экселе делаю например. 1С так с экселем работать не может.
17 Garykom
 
гуру
30.06.25
14:35
(16) в смысле не может?
ты через COM/OLE с экселем или через либу?
в курсе что либ дофига есть и не только под питон
на питоне чаще всего обертки
18 Fish
 
гуру
30.06.25
14:36
(16) "1С так с экселем работать не может." - В 1С дофига платформенных методов работы с xml, который в экселе лежит.
19 rozer76
 
30.06.25
14:42
20 Kongo2019
 
30.06.25
14:44
(17) Через либу конечно. Я в курсе что их дофига. Но на Питоне тама самое простое получается. Я обычно openpyxl пользую
21 Kongo2019
 
30.06.25
14:46
(18) Дык это надо распаковать, найти, наваять, запаковать обратно.
Так и получится что я свою либу напишу, нафиг если уже готовые есть.
22 b_ru
 
30.06.25
15:41
Предположу, что какой-то пакет у Local system не установлен. По-правильному такие вещи надо с venv запускать
23 Азат
 
30.06.25
15:51
(3) пробовал, не полетело. в темп папку складывал .py, .bat и запускал.
от юзера все работает, от SYSTEM нет
24 sikuda
 
30.06.25
16:05
(20) Прямо чердачок справа сверху🔥
Я не понимаю тех людей которые это лепят.
Если у Вас система на 1С используйте его платформу (чтение в табличный документ) или наработки БСП или инфостарт.

Если Python то уж научитесь уж запускать Django или подобное и прикрутите туда свой openpyxl
(Кстати многие хостеры уже предлагаю Python. Сам развлекаюсь http://django.t9163188.beget.tech/catalogs/  )

Зачем совместный огород ваять? Вы ненавидете тех людей, которым будете это передавать в случае ухода?
25 Fedor-1971
 
30.06.25
16:07
(23) Если есть возможность - перенастрой запуск сервиса 1С предприятия от доменного пользователя. (Не факт, что поможет, но попробуй)
Ещё, возможно, нужно проверить настройки DEP - типа система защищается от непонятных скриптов
26 Garykom
 
гуру
30.06.25
16:12
(23) runas /netonly /user:administrator "start.bat " < pass.txt
27 Kongo2019
 
30.06.25
16:13
(24) А с чего решил все что у меня все в куче?
1С своим занимается, Питон своим, Нода АПИ держит. Все четко и просто.
28 arsik
 
гуру
30.06.25
16:14
(27) Нода для питона? Не жирновато? Она жрет как не в себя.
29 Kongo2019
 
30.06.25
16:18
(28) Зато просто. Железо щас дешевое.
30 Fedor-1971
 
30.06.25
16:22
(26) Спросит пароль администратора, а вводить его некому
С таким раскладом, проще шедулер настроить на запуск скрипта раз в Сколько-то минут (и пользователя можно указать и пароля в открытом доступе нет)
31 Garykom
 
гуру
30.06.25
16:35
(30) хе pass.txt записать тоже из 1С
32 Timon1405
 
30.06.25
16:36
(0) странный хардкод, храните скрипты в обработке
Скрипт = ЭтотОбъект.ПолучитьМакет(ИмяСкрипта);
ИмяВременногоФайла = ПолучитьИмяВременногоФайла(".py");
Скрипт.Записать(ИмяВременногоФайла);
ЗапуститьПриложение("python.exe " + ИмяВременногоФайла + " " + "аргументы скрипта");
УдалитьФайлы(ИмяВременногоФайла);
33 Азат
 
30.06.25
17:14
(32) это один фиг запускать на сервере придется
34 Timon1405
 
30.06.25
17:24
(33) смысл что ПолучитьИмяВременногоФайла гарантировано создаст файл в директории доступной текущему пользователю, а не c\Folder наши админы бы за такое канделябром дали.
35 Азат
 
30.06.25
19:00
(34) пробовал так тоже. не полетело
36 Сеньор Программист
 
30.06.25
20:12
https://disk.yandex.ru/d/d-7nCwr8FvTNzg

Смотри папку ПРИМЕРЫ ВНЕШНИХ ОБРАБОТОК
Обработка "Внешний анализ.epf"

Там функции с именами ЗапуститьПриложениеPythonНаСервере.....()
Используют ЗапуститьПрограмму() (Из типовой УТ)

Добавка
В демо версии есть папка со скриптом как установить библиотеки для Питон, чтобы он хватался и на сервере и на клиенте. Возможно дело в этом. В процессе установки Питона галки надо поставить по другому если не прокатило
Ничего другого кроме типового Питона не ставить (всякие добавки к Питону могли себя прописать в качестве среды исполнения скрипта)

Еще как вариант разные языки (русский / английский) под именем клиента и под именем сервера
Тогда в скрипте надо четко указать язык перед текстовыми строками
r"Текстовая строка"
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой