Имя: Пароль:
1C
1С v8
Печать табличного документа в COM-соединении
0 Михаил Анянов
 
29.04.12
12:29
Подскажите, кто-нибудь решал эту проблему?

Есть ТСД, который собирает номенклатуру, после завершения в базе 1С создается и проводится документ.

Необходимо при проведении документа печатать документ (в зависимости от настроек пользователя на тот или иной сетевой принтер), только вот одна проблема - на стороне сервера (ТСД через промежуточную базу соединяется при помощи COM-соединения) метод ТабДокумент.Напечатать() - недоступен.

Кто-нибудь сталкивался с данной проблемой? Как напечатать документ?
Самое простое, что пришло в голову, на сервере запускать клиент, который будет при появлении записи в в определенном регистре со ссылкой на документ - распечатывать его, после запись в регистре удалять. Но хотелось бы решения "на прямую".
1 Wobland
 
29.04.12
12:30
Напечатать() экспортный, конечно, да?
2 Михаил Анянов
 
29.04.12
12:32
(1) - причем тут экспортный - это стандартный метод объекта ТабличныйДокумент
3 Михаил Анянов
 
29.04.12
12:32
ТабличныйДокумент (SpreadsheetDocument)
Напечатать (Print)
Синтаксис:

Напечатать(<ДиалогПечати>)
Параметры:

<ДиалогПечати> (необязательный)

Тип: РежимИспользованияДиалогаПечати.
Определяет необходимость показа диалога печати перед печатью.
Значение по умолчанию: НеИспользовать
Описание:

Выводит табличный документ на печать.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
4 Wobland
 
29.04.12
12:34
(3) Доступность:

Тонкий клиент, веб-клиент, толстый клиент.

дальше объяснять?
5 ДенисЧ
 
29.04.12
12:37
(4) Да! Да! Да! Продолжай! Объясни ему по полной! По самые помидоры!....
6 Михаил Анянов
 
29.04.12
12:38
(4) ты прикалываешься или как? Я знаю что метод недоступен. Я спрашиваю - кто и как решал эту задачу "в обход"!
7 Михаил Анянов
 
29.04.12
12:40
(4) более того - я знаю уже одно решение этой задачи, но мне не нравится обязательность запущенного экземпляра клиента 1с на сервере.
8 ДенисЧ
 
29.04.12
12:41
(6) А чем тебе метод повременного запуска задачи не нравится?
9 Wobland
 
29.04.12
12:43
(6) нет. со скидкой на собственный выходной нет
(7) поставь себя на место сервера (ну того соединения, к которому коннектишься). какие нафих принтеры? что это?
10 Михаил Анянов
 
29.04.12
12:44
(9) - обычные "расшаренные" сетевые принтеры
11 Wobland
 
29.04.12
12:45
(10) я как сервер такого не понимаю. нужен клиент, пускай он и разбирается с принтерами, не?
12 Михаил Анянов
 
29.04.12
12:46
(8) Ты о указанном мною варианте? Экземпляр 1с постоянно запущенный. Плюс - интенсивность проверки (допустим каждые 5 секунд) - задержка как никак.
13 Михаил Анянов
 
29.04.12
12:47
(11) т.е. тот вариант о котором я написал - единственный?
14 Wobland
 
29.04.12
12:48
(13) имхо да. но я в себе сомневаюсь ;)
15 Михаил Анянов
 
29.04.12
12:50
(14) вот и я сомневаюсь, очень сомневаюсь, что нельзя использовать какие-нибудь скрипты (по типу того, как буфер обмена читается/устанавливается), вот только в JS не силен :)
16 ДенисЧ
 
29.04.12
12:54
даблин...

Сохрнять сформированный файл в каталог (Не помню, умеет это ком-моединение или нет...) Потом в винде тупая программка с подпиской на изменения в каталоге. и она уже гонит на принтер...


Хотя, это я гоню... Но и автор тоже гонит....
17 Михаил Анянов
 
29.04.12
12:58
(16) суть чего я хочу - именно добиться печати кодом 1с, без использования сторонних программ, пусть и с применением WSH или еще чего, но главное в одной процедуре допустим при проведении :)
18 Wobland
 
29.04.12
13:01
(17) при проведении? зло. юзеры любят ОК нажимать после просмотра. о программном проведении вообще молчу.
имхо печать документа - задача юзера
19 Wobland
 
29.04.12
13:03
ну я, когда ставил себе задачу распечатать список документов, вызывал экспортную Печать().. но это была разовая работа
20 Михаил Анянов
 
29.04.12
13:04
(18) боже мой :) пусть тычут, если у дока нет признака допустим "СозданТСД" - ничего не происходит... Эту ерунду обсуждать уже не интересно. Пока что еще один вариант - сохраняем документ в Excel (во временную директорию), печать при помощи WSH и удаление документа.

Код вроде даже нашел:
Const wdDoNotSaveChanges = 0
Set objWord = CreateObject("Word.Application")
objWord.Visible = False
objWord.DisplayAlerts = False
objWord.Documents.Open("mydoc.doc")
objWord.Options.PrintBackground = False
objWord.ActiveDocument.PrintOut
objWord.Application.Quit wdDoNotSaveChanges
21 Михаил Анянов
 
29.04.12
13:05
Тока на Wxcel переделать и потестить :)
22 Михаил Анянов
 
29.04.12
13:06
Такое ощущение, как будто постановку задачи никто не читал. Если бы не ТСД - никаких проблем бы вообще не было с печатью.
23 etc
 
29.04.12
15:25
А ТСД то как работает? Через RDP сессию на терминале?
24 etc
 
29.04.12
15:27
(0) вопрос снят. не заметил сразу что "ТСД через промежуточную базу соединяется при помощи COM-соединения"
Че печатаем? Документ или этикетку на принтер этикеток?
25 Михаил Анянов
 
04.05.12
06:58
Печатаем документ
Независимо от того, куда вы едете — это в гору и против ветра!