![]() |
![]() |
![]() |
|
Как понять что принтер напечатал документ | ☑ | ||
---|---|---|---|---|
0
DoNT
12.11.08
✎
15:58
|
Задача такая: Имеется документ с печатной формой, нужно узнать печатался он или нет. Т.Е. не признак того выводилась ли на экран печатная форма или нет, а зафиксировать сам факт того что документ на принтер послан и успешно был с него распечатан. Может кто сталкивался с такой задачей.
|
|||
1
Sadovnikov
12.11.08
✎
15:59
|
(0) Никак :(
|
|||
2
Falcon
12.11.08
✎
15:59
|
(0) поглядеть на лоток
|
|||
3
DoNT
12.11.08
✎
15:59
|
точно
|
|||
4
Fragster
гуру
12.11.08
✎
16:01
|
давай внятные имена документам при печати, а потом смотри лог сервера печати
|
|||
5
DoNT
12.11.08
✎
16:01
|
А можно поподробней про лоток. Я просто начинающий программер
|
|||
6
Fragster
гуру
12.11.08
✎
16:02
|
(5) бугагаг!
|
|||
7
Господин ПЖ
12.11.08
✎
16:03
|
рыдаю...
|
|||
8
DoNT
12.11.08
✎
16:05
|
А программно скриптами никак нельзя узнать
|
|||
9
DoNT
12.11.08
✎
16:08
|
у меня просто сетка большая под разными OS, не знаю что с лотками получится ли, а признак болжен быть однозначный
Все равно за идею спасибо. |
|||
10
AntiBuh
12.11.08
✎
16:08
|
(5) гыыыыы
лоток аппаратная штука, программисты ими не занимаются |
|||
11
Молодой 1Снег
12.11.08
✎
16:08
|
(5)+(8)Узнать "программно скриптами" есть ли в лотке распечатанный док? о_0 Хм... ща покурю...
|
|||
12
YHVVH
12.11.08
✎
16:09
|
посылай на печать документ печатай на нем случайное число , потом проси опертаора ввести это случайное число, если ввод будет праивльный значит он напечатан, если нет то не напечатан.
|
|||
13
YHVVH
12.11.08
✎
16:10
|
имхо (12) изврат но зато позволяет точно узнать что документ напечатан и принят юзвером
|
|||
14
RomaH
naïve
12.11.08
✎
16:10
|
сталкивался - решил так:
модальный диалог с вопросом пользователю "Докмент распечатан?" - "Да" "Нет" |
|||
15
TitanLuchs
12.11.08
✎
16:10
|
(12) Операторы за такую фичу разорвут прога на фиг ))))))
|
|||
16
YHVVH
12.11.08
✎
16:12
|
(15) иногда жесткие меры требуются, например при таком вводе док помечается как напечатнный и больше не доступный для печати. типа не хрен бумагу перводить 100 раз :-) шутка кончено но иногда и правда требуется в разных целях.
|
|||
17
Санта Клаус
12.11.08
✎
16:13
|
мне вот интересно - зачем это все?
|
|||
18
YHVVH
12.11.08
✎
16:15
|
например задание на сборку печатется кладовщику, в этот момент после печати документ перводиться в статус исполняется. так вот лучше всего это делать после того как он получил из принтера этот листок.
|
|||
19
Молодой 1Снег
12.11.08
✎
16:15
|
(16) Как то делал нечто похожее. Только в моем случае, первый экземпляр дока печатался как обычно, а все последующие с пометкой "копия".
|
|||
20
YHVVH
12.11.08
✎
16:16
|
(19) ну или так тоже тема :-)
|
|||
21
minele
12.11.08
✎
16:18
|
по телефону или факсу, аськой, смс, просто NetMitting или чатом через сеть, почтой Notes Lotus, e-mail.
|
|||
22
minele
12.11.08
✎
16:19
|
шутка.
|
|||
23
trdm
12.11.08
✎
16:21
|
(0) купи вебкамеру, направь на принтер, и пусть транслирует картинку:)
|
|||
24
DoNT
12.11.08
✎
16:21
|
НУ а как он понимал что его второй раз печатают????
|
|||
25
trdm
12.11.08
✎
16:22
|
+(23) а что, вроде хорошая идея, главное дешево и соорудить плевое дело :)
|
|||
26
Злой Бобр
12.11.08
✎
16:22
|
(0) Если принтер поддерживает логи - тяни оттуда. Больше вариантов незнаю.
|
|||
27
DoNT
12.11.08
✎
16:23
|
и нужно это вовсе не для экономии бумаги, просто операторов много путаются они, а с признаком у них вся неразбериха закончится.
|
|||
28
Эльниньо
12.11.08
✎
16:23
|
Ввести новую должность в штат "Смотрящий за принтером". Ему журнал в зубы и заносит туда ручками запись о печати.
|
|||
29
Torquader Darigha
12.11.08
✎
16:24
|
Если пользователь хочет напечатать несколько экземпляров одного документа, то он при печати документа приоткрывает лоток бумаги, принтер говорит - ошибка. При закрытии повторяет лист ещё раз - а ксероксы вообще никто не отменял.
В ресторанных программах для отслеживания печати заказов на заказе печатается Штрих-код, и если человек берёт заказ с принтера, он проводит штрих-кодом возле сканера - тогда система знает, что заказ ушёл в исполнение. P.S. если листок вышел из принтера это не означает, что документ ушёл в обработку, это означает, что листок вышел из принтера. |
|||
30
YHVVH
12.11.08
✎
16:30
|
(29) это означает что он получил задания на сборку , не печатал же он его чтоб в туалет сходить с ним.
|
|||
31
DoNT
12.11.08
✎
16:30
|
Да не хочу я им повторную печать отменить, просто признак хочу поставить и все.
|
|||
32
YHVVH
12.11.08
✎
16:32
|
как говориться время пошло негры пошли собирать, и если честно мало волнует что с этим листком будет делать, получил расписался по 3.14ил собирать!
|
|||
33
trdm
12.11.08
✎
16:33
|
(0) "Имеется документ с печатной формой, нужно узнать печатался он или нет."
1. Запретить печать незаписанные документы. 2. Завести справочник "ЛогПечати" по кнопке "напечатать" писать в это лог документ и количество раз печати(инкрементарно). 3. поправить процедуру "ПриУдаленииДокумента", что-бы подчищались логи этого справочника... Так пойдет? |
|||
34
DoNT
12.11.08
✎
16:34
|
У пользователей в другой проге что то подобное реализовано,но там другой случай там на печать сразу пакет посылается и все признаки сразу раставляются. Т.е. обычной печати нет у документа(даже форму не показывает). Привыкли они.
|
|||
35
YHVVH
12.11.08
✎
16:38
|
да сделай проще просто при отправки на печачть счетки прибовляй в результате оригинал будет со счетчиком 1 напечатан , 2 - копия, 3 - уже задолбали печатать
:-) |
|||
36
Молодой 1Снег
12.11.08
✎
16:41
|
(34) Если под другой прогой понимается 1С-ка, то там наверняка заюзано Напечатать(). Сделай также, а в сам док добавь реквизит Отпечатан и прибавляй к нему 1 при каждой печати.
|
|||
37
trdm
12.11.08
✎
16:42
|
(36) А при печати можифицировать документ - кошерно?
|
|||
38
DoNT
12.11.08
✎
16:43
|
Уважаемый(ая) trdm, мне все понятно, кроме кнопки "напечатать". Что делает эта кнопка выводит печ форму или непосредственно распечатывает. мне нужно чтобы возможность первого осталась, а по второму событию поставить признак.
|
|||
39
foxey
12.11.08
✎
16:45
|
(38) - А как ты узнаешь, напечатали ли печатную форму, что ты вывел на предпросмотр?
Напечатать(<?>); Синтаксис: Напечатать(<Флаг>) Назначение: Напечатать таблицу без предварительного просмотра (печать без открытия окна редактирования). Параметры: <Флаг> - необязательный параметр. Режим запроса диалога печати: 1 - запрашивать диалог печати (по умолчанию), 0 - не запрашивать. Замечание: Метод может использоваться при работе с таблицей в режиме ввода данных. |
|||
40
DoNT
12.11.08
✎
16:45
|
Весь вопрос сводится к тому чтобы программно отловить момент печати
|
|||
41
Молодой 1Снег
12.11.08
✎
16:46
|
(37) низнаю, маладой ищо :)
|
|||
42
trdm
12.11.08
✎
16:46
|
trdm, он *-ый.
Имеется ввиду так кнопка, которая запускает процедуру печати. Она может называться как угодно, в зависимости от фантазий кодера... |
|||
43
trdm
12.11.08
✎
16:48
|
(40) блин, позови программиста, он тебе найдет точки входа....
Они разные, от тупого с кнопкой [Напечатать] и процедурой в теле модуля документа. До всяких хитровывернутых подключенных внешних форм. |
|||
44
Torquader Darigha
12.11.08
✎
16:50
|
Как вариант, сделать две кнопки - первая показывает форму с пустой областью печати, чтобы её не печатали, а вторая - печатает напрямую.
Но остаётся вопрос, что происходит с заданием на принтере - в Windows программа не может знать состояние принтера, если последний этого не хочет. Конечно, в настройках принтера можно поставить "Печатать Напрямую На Принтер", тогда вероятность потери напечатанного документа будет минимальной. |
|||
45
trdm
12.11.08
✎
16:52
|
(44) Ненапечатание в следствие неохоты принтера неработать нешоркает программиста.
|
|||
46
dimm7310
12.11.08
✎
16:52
|
Очень хорошая идея в (29) на счет штрихкода
|
|||
47
Молодой 1Снег
12.11.08
✎
16:53
|
(40) Тут 1Ска тебе не товарищ! Она отправляет док в спулер печати Windows, а что там с ним будет дальше ей пофиг. Спулер тоже не лучше, он отправит док в буфер принтера и тоже свободен. Да и принтер тоже не без греха - прогонит все свои механизмы печати, а в картридже уже давно тонера нет ;)
|
|||
48
dimm7310
12.11.08
✎
16:54
|
(44) Могут быть различные нюансы: зажевало бумагу, кончается тонер - короче нет полноценной распечатки
|
|||
49
dimm7310
12.11.08
✎
16:56
|
+(48) если только кому одному назначить полный доступ на печать (без ограничений), но это тоже не самый лучший способ,
мне про сканер штихкода идея понравилась |
|||
50
dimm7310
12.11.08
✎
16:57
|
+(49) "полный доступ на печать (без ограничений)" -- Это нас случай если нормально не распечаталось
|
|||
51
DoNT
12.11.08
✎
16:58
|
Две кнопки это классный вариант, но я жуткий формалист. А если пользователю захочется что то поменять на печ форме до печати, может дописать что или как, он меня всегда будет звать. Да и про возможность сохранить печ форму в каком- то фомате тоже можно, а дальше уже печатать.
|
|||
52
АЛьФ
12.11.08
✎
17:01
|
2(51) А еще пользователь может срисовать с экрана на бумажку, потом заново то же набить в Экселе и распечатать. Это тоже хочешь программно отслеживать?
|
|||
53
lea_220400
12.11.08
✎
17:03
|
(0) ПРОчитал ветку и ууууууулыбнуло
|
|||
54
skunk
12.11.08
✎
17:04
|
сделать лист бумаги бланком строгой отчетности... напичкать серийник и номер... выдовать под личную подпись заведующего филиалом или начальника департамента... в конце месяца последних заставить сдавать отчетность... сколько и куда бумаги ушло... испорченые листы прилагать к отчету
|
|||
55
Garik-1980
12.11.08
✎
17:06
|
strComputer = "имя компьютера"
strDomain = "домен" strUser = "ИмяПользователя" strPassword = "Пароль" Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _ "root\CIMV2", _ strUser, _ strPassword, _ "MS_409", _ "ntlmdomain:" + strDomain) Set dtmStartDate = CreateObject("WbemScripting.SWbemDateTime") Set dtmEndDate = CreateObject("WbemScripting.SWbemDateTime") DateToCheck = CDate("06/11/2008") dtmStartDate.SetVarDate DateToCheck, CONVERT_TO_LOCAL_TIME dtmEndDate.SetVarDate DateToCheck + 1, CONVERT_TO_LOCAL_TIME Set colLoggedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where Logfile = 'System' and TimeWritten >= '" _ & dtmStartDate & "' and TimeWritten < '" & dtmEndDate & "'" & " and SourceName = 'Print'" _ & " and EventCode = 10" _ & " and User = LIKE '%locUser%'") For Each objEvent in colLoggedEvents Wscript.Echo "*----------------------------------------------------------------------------*" Wscript.Echo "Category: " & objEvent.Category & VBNewLine _ & "Logfile: " & objEvent.logfile & VBNewLine _ & "Computer Name: " & objEvent.ComputerName & VBNewLine _ & "Event Code: " & objEvent.EventCode & VBNewLine _ & "Message: " & objEvent.Message & VBNewLine _ & "Record Number: " & objEvent.RecordNumber & VBNewLine _ & "Source Name: " & objEvent.SourceName & VBNewLine _ & "Date Written: " & objEvent.Data & VBNewLine _ & "Time Written: " & objEvent.TimeWritten & VBNewLine _ & "Event Type: " & objEvent.Type & VBNewLine _ & "User: " & objEvent.User Next |
|||
56
DoNT
12.11.08
✎
17:07
|
ладно, варианты копирования документа отбросим, как и то в каком сотоянии принтер. Нужен лишь признак "послали докумен или нет".
|
|||
57
Деметрио
12.11.08
✎
17:08
|
+(54) за пронос своей бумаги расстреливать.
|
|||
58
DoNT
12.11.08
✎
17:09
|
О скриптики пошли, ща мы их потестим.
|
|||
59
Garik-1980
12.11.08
✎
17:39
|
Этот скрипт только список событий успешного завершения печати выводит.
|
|||
60
Garik-1980
12.11.08
✎
17:48
|
А вот если кто подскажет каким образом отобрать только события определенного пользователя...
|
|||
61
Ковычки
12.11.08
✎
18:01
|
все делается без единого скрипта
(39) непренужденно |
|||
62
Ковычки
12.11.08
✎
18:02
|
(55) и умереть ? а с датетаймами обломишся при случае
а если и скриптовать, то все просче, все будет в одном месте и читай хоть через год |
|||
63
Torquader Darigha
12.11.08
✎
18:03
|
Написать where ... and user='1S-user' не пробовали.
Также можно напрямую писать в порт. Кроме того, если у вас HP скажет 1050, то если в нём кончился тонер, то принтер этого не заметит, и будет куча пустой бумаги. (46) - эта идея была реализована в Штрих-М ресторан - фронт-офис, но скорее там была попытка реализации, так как это не заработало. P.S. если ставить специальный принтер на термоленте, то у него есть возможность двустороннего управления из программы. |
|||
64
SERG73
12.11.08
✎
18:17
|
Можно посылать сразу на принтер, без предпросмотра, вот пример:
Если (Константа.Показывать=Да) ИЛИ (ПустоеЗначение(Константа.Показывать)=1)Тогда Таб.ТолькоПросмотр(1); Таб.Показать("Печать наряда на сборку","",1); Иначе Таб.ПараметрыСтраницы(1,100,,,,,,,,1,,СтрПринтер); Таб.Напечатать(0); КонецЕсли; Счетчик печати можно организовать так - для каждой печатной формы генерится уникальный номер, например: ИДДок = ЗначениеВСтрокуВнутр(Док) + Строка(НомерФормы); который при печати заносится в специальный справочник вместе с документом, при печати проверяешь наличие его в справочнике, если есть - значит печать повторная. Можно счетчик добавить. |
|||
65
Ковычки
12.11.08
✎
18:26
|
(64) а для Таб.Показать("Печать наряда на сборку","",1); кто будет считать ?
+ СтрПринтер="\\комьютервсемдающейбухши\самый задротный принтер на свете" |
|||
66
Euguln
12.11.08
✎
18:27
|
А ещё можно совместить принтер и сканер, сканировать распечатанное. Или совместить принтер и сканер штрихкода, при каждой печати новый штрихкод назначать документу и в колонтиткуле печатать. :)))
|
|||
67
Torquader Darigha
12.11.08
✎
18:29
|
(65).
На чужом компьютере вообще сложно узнать, что напечаталось, а что нет. Не факт, что на нём можно запустить WMI-запросы. Поэтому (1) был прав, а всё остальное - это рассуждения на тему, если нельзя, но очень хочется. |
|||
68
Ковычки
12.11.08
✎
18:33
|
(67) достойный ответ был в (4) но только он сам толком не понял о чем сказалЮ даже логов ненадо
|
|||
69
Ковычки
12.11.08
✎
18:34
|
хотя соглашусь, что самый-присамый верный (1)
|
|||
70
SERG73
12.11.08
✎
18:35
|
Приведу возможную процедуру выбора принтера:
Процедура ВыбПринтера() сзПринтер = СоздатьОбъект("СписокЗначений"); //Получить список принтеров: wshNetwork = createObject("WScript.Network"); oPrinters = wshNetwork.EnumPrinterConnections(); i = 0; While i < oPrinters.count() - 1 do сзПринтер.ДобавитьЗначение(СокрЛП(oPrinters.item(i + 1))); i = i + 2; enddo; ЗН = ""; Если сзПринтер.ВыбратьЗначение(ЗН, "Выберите принтер") = 1 Тогда СтрПринтер = СокрЛП(ЗН); КонецЕсли; КонецПроцедуры |
|||
71
Ковычки
12.11.08
✎
18:36
|
(70) а где локальные брать ? и где брать джетдиректовские ?
|
|||
72
Torquader Darigha
12.11.08
✎
18:43
|
Кстати, в настройках принтера есть возможность сохранять задания после печати - потом нужно посмотреть, где они сохраняются и как их читать.
(70), а что стандартный выбор принтеров не прокатывает ? |
|||
73
SERG73
12.11.08
✎
18:52
|
Похожая задача решена примерно так как описано выше. Печать идет через внешнюю обработку, вызывается из журнала. По каждому факту повторной печати автор пишет служебку. Вот такие пироги.
|
|||
74
Злопчинский
12.11.08
✎
20:51
|
резюмируем:
я так и не понял, могу я на своем компе узнать - успешно ли напечатался на расшаренный принтер на другом компе? где ведется лог успешных заданий печати! и прочее (Ковычки - сказал и молчит дальше)... |
|||
75
Злопчинский
12.11.08
✎
20:52
|
(59) а подробнее чуть - что "считает" - успешные печати на локальный притер или на расшаренный тоже?
|
|||
76
Ковычки
12.11.08
✎
20:54
|
(74) лог ненужен, достаточно (4) и (72) почитать и выкинув ненужное - получить результат, без программирования.
(ну а при админских правах, скрипт из 10 строк и все инфа по всей сети у тебя в кармане) |
|||
77
Ковычки
12.11.08
✎
20:56
|
(75) на всех, но он на первом же задании умрет
|
|||
78
Ковычки
12.11.08
✎
20:57
|
+(76) если хочется повозиться с вми ищи информацию о постояных получателях событий
|
|||
79
Злопчинский
12.11.08
✎
21:26
|
2 Ковычки: спсб, ибо я не спец в этих делах. Конспективно - где этот "лог сервера печати" (4) искать?
|
|||
80
sam_sam
12.11.08
✎
21:38
|
у меня была задача. Операторы из офиса посылали документы на печать на склад, у документа устанавливался признак распечатан. Кладовщик получая форму из принтера совал ее под сканер штрих кода, у документа устанавливался признак получен. Если с документом со статусом распечатан не производились никакие действия в течении 5 минут, он выделялся в журнале документов красным цветом и начинались разборки операторов с кладовщиками.
зы на самом деле это только часть задачи. |
|||
81
Холст
12.11.08
✎
23:06
|
(80) хорошо придумали, а какие другие части ?
|
|||
82
Злопчинский
12.11.08
✎
23:32
|
Да, это зачетное решение, спсб.
прикручу аналогичный подход к немного другому действию.... |
|||
83
sam_sam
12.11.08
✎
23:49
|
(81) это не я придумал это жизнь придумала. Складской учет + адресный склад + логистика. Еще статусы документов: собран, частично собран, не едет, возврат, частичный возврат. То есть комуникация офиса и склада посредством статусов документов. Учитывая что при этом меняется цвет строки журнала документов, этакое общение посредством цветов. я когда это придумывал использовал метод индейских костров. Индейцы чтобы передать информацию разжигали костры которые давали дым разных цветов.
зы а может и звиздеж, я про индейцев. |
|||
84
Ковычки
13.11.08
✎
00:19
|
(79) да там просто, на принтерах выставляешь сохранять документы после печати и радуйся
А с поставщиком/получателем где то так
Чтобы удалить поставщика |
|||
85
Ковычки
13.11.08
✎
00:20
|
|
|||
86
КонецЦикла
13.11.08
✎
00:30
|
(29) Так и делается обычно
А гланды через .опу - зачем? |
|||
87
КонецЦикла
13.11.08
✎
00:37
|
(80) А если заказ вылез а его никто не поднес к сканеру? А если он вообще не вышел из принтера (сбой, замятие, вырубили эл/эн)?
У нас печатают заявки на складе сами себе, тупо работает конвейер + заявки выстраиваются по приоритетам |
|||
88
КонецЦикла
13.11.08
✎
00:38
|
(79) Выложишь на инфостарт "свое" очередное исследование? :)
|
|||
89
Злопчинский
13.11.08
✎
03:11
|
(83) не ты первый - не ты последний... ;-)
на старой работе у мну аналогичная система года два вертелась по статусам заявок для общения между продажниками, складом и выпиской документов - с учетом того, что активно юзалась схема "заявки-заказы", причем под одну заявку от 5-6 поставщиков товар шел... и все это отслеживалось и отображалось... .. и на текущей работе аналогичная система работает месяцев 9 уже... |
|||
90
Sserj
13.11.08
✎
03:29
|
(0) Сам не использовала, но по памяти помню FormEx.dll ищи здесь http://dorex.ru/
Глобальный перехватчик ПриПечатиТаблицы |
|||
91
Злопчинский
13.11.08
✎
03:39
|
(88) обязательно! как только будет доведено мною (если осилю ;-) до "промышленного" исполнения по принципу "взял и юзай" (или подробная пошаговая инструкция)
.. а почему "свое" - в кавычках... намек на что? я где-то чужое за свое выдавал? |
|||
92
Злопчинский
13.11.08
✎
03:40
|
(90) формекс не решает вопроса "был ли напечатан" документ.
в свое время Абрахамс выкладывал решение мониторинга очереди заданий на печать... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |