Имя: Пароль:
1C
1С v8
печать через веб-сервис
,
0 temmy70
 
16.04.14
09:14
Добрый день.
Очень хочется печатать из внешнего приложения на принтер, который указывается ручками. Но печать не проходит. По логам строку печати проходит, но результата никакого. Вообще возможно печатать через веб-сервис?
Еще заметил, при запуске теста печати из обработки, что у одного пользователя 1С работает установка принтера ТабДок.ИмяПринтера = "Прринтерр", а другому пользователю побарабану, он печатает на тот, что стоит поумолчанию.
Это как-то связано между собой?
1 temmy70
 
16.04.14
09:15
Платформа (8.2.19.83).
Апач стартует под пользователем с правами на принтер.
2 temmy70
 
16.04.14
14:26
ап
3 braslavets
 
16.04.14
14:29
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
4 temmy70
 
16.04.14
14:37
(3) это доступность чего?
ИмяПринтера
5 temmy70
 
16.04.14
14:39
у свойства табличного документа ИмяПринтера

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

у общего модуля, из которого печать
Доступность: Клиент, Сервер, ВнешнееСоединение
6 braslavets
 
16.04.14
14:43
(4) Напечатать()
7 temmy70
 
16.04.14
14:55
(6) то есть никак не напечатать из веб-сервиса? (
8 braslavets
 
16.04.14
15:07
можно получить base64 закодированный печ.файл - к примеру пдф, сохранить его и запулить на печать. Зависит от приложения которое пользует вебсервис. У меня было так: из одной базы через веб-сервис запрашивал пакет печатных форм из другой - zip с mxl файлами. Разворачивал и печатал.
9 temmy70
 
16.04.14
15:10
(8) имеется ввиду сохранить файл, и 1Синой же его напечатать?
10 braslavets
 
16.04.14
15:12
У меня было так - на складе печатали расходку, налоговую и ттн из УТ. Склад удаленный, у него своя конфа.
11 temmy70
 
16.04.14
15:17
(10)спасибо, интересная идея. можно пожалуйста поподробнее про base64? не совсем понял как реализовать.
12 braslavets
 
16.04.14
15:21
А это на уровне выходного параметра у операции вебсервиса - устанавливаешь ему тип: "base64Binary (http://www.w3.org/2001/XMLSchema)";, направление: выходной.
А в методе назначаешь ему значение:
ИмяПараметра = Base64Строка(Новый ДвоичныеДанные(ИмяЗипаФайла));
13 braslavets
 
16.04.14
15:21
А на стороне получателя разворачиваешь.
14 temmy70
 
16.04.14
15:34
(12) аа вот как. ясно. у меня немного другая задача, клиентское приложение только отдает команду печати, а печатать надо на сетевом принтере с сервера.
15 braslavets
 
16.04.14
17:03
(14) Ну, сохраняй в ексель, открывай через COMОбъект("Excel.Application") и печатай
16 temmy70
 
16.04.14
17:42
(15) [b]braslavets[/b] спасибо большое за советы, буду так пробовать.
17 Serginio1
 
16.04.14
18:26
(16) Еще на 8.1 помню изворачивался для сохранения файлов в xls через запуск 1С конфигурации в которой при запуске проверял параметры запуска в котором хранился путь к документу и пересохранял его в экселевский формат.

ЗапуститьПриложение(ИсполняемыйФайл,"ENTERPRISE /F """+путьКБазе+""" /C """+ИмяФайлаМХЛ+"""");

А в Базе уже ПриНачалеРаботыСистемы анализируешь ПараметрЗапуска печатаешь и выходишь.
18 temmy70
 
16.04.14
19:34
(17) тоже была мысль запуска 1С под пользователем для печати, но это не очень хорошо. Если вдруг лицензий будет не хватать, то весь функционал встанет.
А как печатать через COMОбъект на указанный принтер?
19 Serginio1
 
17.04.14
10:36
20 temmy70
 
17.04.14
15:10
(19) спасибо, буду изучать
21 temmy70
 
17.04.14
16:41
Запуск 1С работает быстрее чем COMОбъект Excel. Но дальше столкнулся с предыдущей проблемой. Не устанавливается имя принтера. Точнее оно устанавливается, но не воспринимается при печати, используется принтер по умолчанию. Может быть причина в самом табличном документе? или в пользователе?
22 temmy70
 
23.04.14
09:27
продолжаем биться с печатью из вебсервиса.
принято решение формировать файл Excel через COMОбъект, заполнять печатать и закрывать не сохраняя.

Из обработки из под пользователя печатает. Но из вебсервиса ругается на команде
Лист.PrintOUT(,,,,PrinterName,,,);
говорит что не установлены принтеры.
Как быть? как ему (и кому?) установить принтеры?
23 Serginio1
 
23.04.14
10:31
Вообще то для принтеров нужно устанавливать драйвера пути.
Устройства и Принтеры\Установка принтера
24 temmy70
 
23.04.14
10:36
(23) так принтеры установлены. вебсервис возвращает клиенту список принтеров, но печатать на них не хочет.
25 Serginio1
 
23.04.14
10:44
(24) Надо так понимать, что печать из под сервиса из 64 разрядного приложения?
Проблема может быть в драйверах и правах доступа
26 braslavets
 
23.04.14
10:54
(22) пользователю, от имени которого работает агент сервера 1С.
27 temmy70
 
23.04.14
11:20
(25) извините, не понял вопроса. Команды в вебсервис идут из приложения на java, из браузера. Первые два раза печатал, потом перестал. сначала просто перестал, потом стал ругаться на принтеры. Какие права доступа посмотреть? Апач работает от пользователя со всеми правами. От пользователя 1С, под которым подключается вебсервис, вроде ничего зависить не должно.
(26) база файловая.
28 Serginio1
 
23.04.14
12:20
Очередь печати смотрел?
29 temmy70
 
23.04.14
12:55
(28) да, пусто
может можно как-то программно установить принтер?
30 Serginio1
 
23.04.14
13:55
(21) По уму печить из запускаемой 1С должна быть такой же как при интерактивной печати. Печатать из 1С с программной установкой пробовал?
31 temmy70
 
23.04.14
17:02
(30) да, но у меня получается что сеанс 1С не запускается. Или когда приходит команда в вебсервис из внешнего источника что-то запускается?
Что значит печатать из 1С с программной установкой?

Печатать Табличный документ не выходит, потому что команда недоступна для внешнего соединения.

Печатать запуская батник или сеанс 1С тоже не получится, так не доступно для внешнего соединения.
32 Serginio1
 
23.04.14
19:07
(30) в 17 если ты в ИмяФайлаМХЛ можешь передать имя файла в котором сохранишь путь к табличному документу и имя принтера
то А в Базе уже ПриНачалеРаботыСистемы анализируешь ПараметрЗапуска печатаешь и выходишь.
По сути должно выполняться как интерактивный запуск.
33 temmy70
 
23.04.14
19:57
(32) а, понял, но команда ЗапуститьПриложение() не доступна для внешнего соединения. :( я так уже пробовал.
34 Serginio1
 
23.04.14
20:37
35 Serginio1
 
23.04.14
20:38
36 temmy70
 
24.04.14
10:18
(35) ух ты! Спасибо огромное, сейчас буду пробовать.
37 Serginio1
 
24.04.14
10:30
(36) Если что описание и DLL лежит здесь http://1c.proclub.ru/modules/mydownloads/personal.php?cid=142&lid=9569
38 temmy70
 
24.04.14
11:09
(37) что-то у меня по ссылке на вирусы ругается :(.
видимо у меня библиотеки нет, потому что COMОбъект создать не может: "недопустимая строка класса".
39 temmy70
 
24.04.14
11:14
регистрация comcntr.dll не помогла.
40 Serginio1
 
24.04.14
11:21
(38) Ты читал описание в 37?
Для проведения тестов нужно распаковать архив . Затем нужно  зарегистрировать
Нужные DLL. Запускаем РегистрацияКомСервера.exe и выбираем NetObjetToIDispatch45.dll которая лежит в DLLNetObjetToIDispatch45

Соответственно на компьютере должна быть установлена
\Windows\Microsoft.NET\Framework\v4.0.30319\
41 temmy70
 
24.04.14
11:23
(37) скачал, изучаю, спасибо большое
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.