Имя: Пароль:
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
 
01.07.25
09:28
(20) Прямо чердачок справа сверху🔥
Я не понимаю тех людей, которые это лепят.
Если у Вас система на 1С, используйте платформу (чтение в табличный документ) или наработки БСП или инфостарт.

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

Зачем совместный огород ваять? Вы ненавидите тех людей, которым будете это передавать в случае ухода?
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"Текстовая строка"
37 LLeonidov
 
01.07.25
14:26
(7) Да, можно на раз два в пару строчек поднять свой http сервис, на раз два получать события и обрабатывать, вот с веб сокет сервером чуть-чуть сложней.
Я ради развлечения поднимал в несколько потоков, хттп сервис слушает запросы, передает их выше, если надо ждет ответ от другого потока, отвечает в 1с. Работает хлеба не просит)
В прод не ушло.
38 Garykom
 
гуру
01.07.25
15:07
(37) с многопоточностью?
с любыми методами HTTP не только GET/POST?
httpS (ssl) и сертификаты?
методы авторизации кроме basic?
39 arsik
 
гуру
01.07.25
15:09
(38) Ну прям словарь какой то для айти. Осмысленное что-то будет?
40 Garykom
 
гуру
01.07.25
15:22
(39) Классический 1Сник?
41 arsik
 
гуру
01.07.25
15:25
(40) Нет, но связей между словами не вижу.
42 Garykom
 
гуру
01.07.25
15:28
(41) Связь прямая
В Питоне модуль http.server
Warning http.server is not recommended for production. It only implements basic security checks.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn