Имя: Пароль:
1C
1С v8
Печать pdf из веб-сервиса.
0 TolikoSprosit
 
08.08.17
10:23
Есть веб сервис, есть pdf файл.
Код выглядит так:
ЗапуститьПриложение("""AcroRd32.exe"" /N /T ""E:\TEMP\123.pdf"" HPIT",,ИСТИНА);
Под пользователем под которым работает сервер 1с в командной строке все печатает. Но если выполнить этот код через веб-сервис, то выполнение зависает на этой строчке. Куда смотреть, в чем может быть дело? Я думаю, что при запуске через веб сервис выскакивает какая-то модальшина и по этому все останавливается, но почему через командную строку(и просто через предприятие) все работает?


Жду ответа, как соловей лета.
1 Юрий Лазаренко
 
08.08.17
10:38
А "AcroRd32.exe" точно есть на сервере? Может вы его на клиентских машинах запускаете, поэтому там все работает, а на серваке - дуля.
2 sFAQer
 
08.08.17
10:40
(0) НачатьЗапускПриложения() и виснуть не будет
3 Юрий Лазаренко
 
08.08.17
10:46
(2)НачатьЗапускПриложения() выполняется только на клиенте, а клиент из модуля веб-сервиса недоступен.
4 Blumawolf
 
08.08.17
11:02
Код
ЗапуститьПриложение("""AcroRd32.exe"" /N /T ""E:\TEMP\123.pdf"" HPIT",,ИСТИНА);
разместите в какой-нибудь процедуре общего модуля, у которого сделайте вызов сервера.
После чего - запускайте его из веб-сервиса, данный код будет выполняться в контексте сервера.
5 TolikoSprosit
 
08.08.17
11:17
(1) ЗапуститьПриложение("""C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"" /N /T ""E:\TEMP\123.pdf"" HPIT",,ИСТИНА);

Точно такое же поведение
6 Вафель
 
08.08.17
11:19
А просто из серверного модуля печатает?
7 TolikoSprosit
 
08.08.17
11:19
(4) Код расположен в модуле, с галочками сервер, клиент, внешнее соединение. Но я думаю это не критично, так как весь код веб-сервиса выполняется в контексте сервера вроде)
8 TolikoSprosit
 
08.08.17
11:20
(6) Да, но если вызываю из предприятия
9 TolikoSprosit
 
08.08.17
11:22
Еще как вариант что-то не так с именем принтера, но конструкция вида \\сервер\принтер ничего не дала
10 TolikoSprosit
 
08.08.17
11:33
Принтер находится, дело не в принтере
11 TolikoSprosit
 
08.08.17
11:33
Функция ПринтерНайден(ИмяПринтера)
    Попытка
        Locator = Новый COMОбъект("WbemScripting.SWbemLocator");
        Сервисы = Locator.ConnectServer(".");
        Объекты = Сервисы.InstancesOf("Win32_Printer");
        // Теперь переберем все принтеры системы
        Для Каждого Принтер из Объекты Цикл
            Если ИмяПринтера = Принтер.Name Тогда
                Возврат Истина;            
            КонецЕсли;
        КонецЦикла;
        Возврат Ложь;
    Исключение
        Возврат Ложь;
    КонецПопытки;
КонецФункции // ()
12 Fedor-1971
 
08.08.17
11:35
(0) Есть ограничение на доступ к файловой системе веб-клиента. Уладил сей вопрос? (типа "расширение работы с файлами" или как-то так)
""AcroRd32.exe"" - на сервере есть? укажи полный правильный путь
/N /T - флаги печати
""E:\TEMP\123.pdf"" - то же есть и именно на сервере по указанному пути?
HPIT - это имя принтера в системе, он прямо так называется (так виден в диалоге "Печать")

как тест: запускаешь командную строку и набираешь то, что пытаешься сделать из 1С
13 TolikoSprosit
 
08.08.17
11:37
(12) Расскажите подробнее про ограничение на доступ к файловой системе. Где смотреть?

Все остальное ок
14 TolikoSprosit
 
08.08.17
11:41
(12) ПодключитьРасширениеРаботыСФайлами это про веб-клиент, у меня веб-сервис же ну)
15 Вафель
 
08.08.17
11:42
(7) оставь только галку Сервер
(12) у сервера нет таких ограничений
16 Юрий Лазаренко
 
08.08.17
11:50
А в ЖР есть ошибки?
17 Юрий Лазаренко
 
08.08.17
11:50
Пользователь, под которым запускается веб-сервис, имеет все необходимые права?
18 TolikoSprosit
 
08.08.17
11:57
(15) Спасибо. Оставил галочку "Сервер" и все заработало. Буду благодарен если объясните почему)
19 Юрий Лазаренко
 
08.08.17
12:44
(18) Потому что веб-сервис при инициализации общего модуля делает для него проверку, что-то вроде Ctrl+F7. Видит в нем что-то, что относится к клиенту, и отваливается.
20 TolikoSprosit
 
08.08.17
12:45
(19) Но эту проверку модуль проходит в конфигураторе. Нуралиев как обычно(
21 Юрий Лазаренко
 
08.08.17
12:47
(20) Привыкайте!
22 ptiz
 
08.08.17
12:48
(20) Галочки для синтаксической проверки сначала правильно расставь в конфигураторе.
23 h-sp
 
08.08.17
12:48
(20) не проходит модуль эту проверку.
24 TolikoSprosit
 
08.08.17
13:03
(23) (22) Вы мне хотите сказать, что при нажатии на Ctrl+F7(Сервис-Параметры-Проверка(галочка сервер)) в модуле с галочкой "Клиент" найдутся ошибки?
25 TolikoSprosit
 
08.08.17
13:05
(24) Ошибки про галочку "Клиент", а не в коде.
26 h-sp
 
08.08.17
13:08
(24) Параметры - Модули - Проверка. Чего у вас указано? Толстый клиент?
27 TolikoSprosit
 
08.08.17
13:11
(26) Сервер, я же написал
28 h-sp
 
08.08.17
13:13
(27) то есть Ctrl-f7 у вас только сервер проверяет? странно. Вы сами там так задали?
29 TolikoSprosit
 
08.08.17
13:18
(28) да сам
30 TolikoSprosit
 
08.08.17
13:21
Короче хватит, модуль проходит проверку(Сервер) если у него установлена галочка "Клиент". Но, видимо, не проходит во время выполнения через веб-сервис. Поэтому мы и любим Нуралиева.
31 h-sp
 
08.08.17
13:23
(30) под столом.
32 Юрий Лазаренко
 
08.08.17
13:30
(30) Нуралиев тоже любит вас.
33 aka AMIGO
 
08.08.17
13:31
(30) Нуралиев-то может и не знать об этом..
34 TolikoSprosit
 
08.08.17
13:41
(30) Я тут еще подумал. Модуль и на веб-сервере нормально работает и проходит проверку(У меня в этом модуле не только печать). Проблемы с тем что "ЗапуститьПриложение" не корректно работает, видимо с галочкой "Клиент" она выполняется где-то в другом месте, не на сервере или вообще не выполняется. Где-то бы про это почитать, но это видимо секретные знания нашего усатого друга.
35 ildary
 
08.08.17
13:56
(34) Правилами форума запрещена критика 1С, я бы не советовал называть нашего кормильца такими словами.
36 TolikoSprosit
 
08.08.17
14:03
(35) "Другом"?)