![]() |
![]() |
![]() |
|
Параметры печати | ☑ | ||
---|---|---|---|---|
0
St17
26.01.11
✎
13:56
|
Доброе время суток.
Делаю обработку по распечатке документации. В пользователь выбирает в список нужных клиентов, проставляет количество копий, устройство распечатки, просмотр или сразу печать. В обработке открываю формы нужных документов к примеру торг12, счет-фактура и.т.д. Передаю параметры устройство, количество копий, режим просмотр или печать. В параметрах печати прописываю ориентацию имя принтера, авто маштаб. Печатает не всегда на выбранный принтер и не учитывает параметры. Посоветуйте что не так? может кто сталкивался,Может есть особености. Спасибо зав внимание. |
|||
1
Denp
26.01.11
✎
13:57
|
код в студию. (кратко, только относящиеся к печати)
|
|||
2
andrewks
26.01.11
✎
13:57
|
кажи код, где задаёшь параметры и печатаешь
|
|||
3
Ёпрст
гуру
26.01.11
✎
13:59
|
||||
4
St17
26.01.11
✎
14:08
|
Обработка
... роцедура ПриОткрытии() заполняется писок. взял пример из форума Принтер.УдалитьВсе(); Нетворк = СоздатьОбъект("WScript.Network"); Принтеры = Нетворк.EnumPrinterConnections(); тзПринтеры = СоздатьОбъект("ТаблицаЗначений"); тзПринтеры.НоваяКолонка("Притер"); тзПринтеры.НоваяКолонка("Порт"); Для СчЦ=0 По Принтеры.length-1 Цикл тзПринтеры.НоваяСтрока(); тзПринтеры.Притер = Принтеры.Item(СчЦ + 1); тзПринтеры.Порт = Принтеры.Item(СчЦ); Принтер.ДобавитьЗначение(Принтеры.Item(СчЦ + 1)); СчЦ=СчЦ+1; КонецЦикла; По кнопке сформировать Если ч1=1 Тогда Если ПФ1>0 Тогда Параметры = СоздатьОбъект("СписокЗначений"); Параметры.ДобавитьЗначение(?((Модифицированность()=0) и (ПустоеЗначение(Док)=0), Док, глВзятьКонтекст(Док)), "Контекст"); Параметры.ДобавитьЗначение(Устройство, "Устройство"); Параметры.ДобавитьЗначение(ПФ1, "КоличествоКопий"); Параметры.ДобавитьЗначение(ПечСразу, "СразуНаПечать"); ОткрытьФорму("Отчет", Параметры, РН); КонецЕсли; КонецЕсли; Код из печатнйо формы Процедура ПриОткрытии() Конт = Форма.Параметр.Получить("Контекст"); Устройство = Форма.Параметр.Получить("Устройство"); КолвоКопий = Форма.Параметр.Получить("КоличествоКопий"); СразуНаПечать= Форма.Параметр.Получить("СразуНаПечать"); Если ПустоеЗначение(СразуНаПечать)=1 Тогда СразуНаПечать=0; КонецЕсли; ................ Процедура ПечатьПоУчету() Если СразуНаПечать = 0 Тогда Таб.Опции(0,0,0,0,"ОпцииПечатиНакладной","ОкноНакладной"); Таб.ТолькоПросмотр(1); Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда Таб.Защита(1); Иначе Таб.Защита(0); КонецЕсли; Таб.Показать(НазваниеДокумента,""); Иначе Таб.ПараметрыСтраницы(2,,,,,,,,,1,,Устройство); Таб.КоличествоЭкземпляров(КолвоКопий); Таб.Напечатать(0); КонецЕсли;апечатать(0); .......................... |
|||
5
andrewks
26.01.11
✎
14:13
|
имена проблемных принтеров - длинные с пробелами?
|
|||
6
St17
26.01.11
✎
14:17
|
К примеру мой список
Microsoft XPS Document Writer \\192.168.0.144\HP LaserJet 1018 \\192.168.0.154\Kyocera FS-1300D KX \\192.168.0.41\Canon LBP3010/LBP3018/LBP3050 \\COMP_152\Canon LBP2900 \\COMP_166\HP LaserJet 1020 \\COMP_KAPELKA\Kyocera FS-1116MFP \\COMP_MARK\Canon iP1600 \\USER\Kyocera FS-1116MFP |
|||
7
andrewks
26.01.11
✎
14:18
|
имена сделай до 8 симв без пробелов
например: LJ_1018, LJ_1020, FS1300D и т.д. |
|||
8
Ёпрст
гуру
26.01.11
✎
14:24
|
(4) у тебя ошибка в коде, причем существенная.
|
|||
9
St17
26.01.11
✎
14:26
|
(7) спасибо
(8) на пример? |
|||
10
Ёпрст
гуру
26.01.11
✎
14:27
|
(9)
Таб.Опции вынеси наверх за ветку условия. И всё будет работать. |
|||
11
Ёпрст
гуру
26.01.11
✎
14:29
|
+10 по-поводу ориентации/масштаба и т.д. - у тебя она всегда такая, которую ты в ПараметрыСтраницы задал, а не та, которую ты где-то "выбрал"
|
|||
12
andrewks
26.01.11
✎
14:34
|
(11) не скажи, если сначала ПараметрыСтраницы(), а потом Опции()...
|
|||
13
St17
26.01.11
✎
14:35
|
(9)Спасибо.
(10) это я понимаю! |
|||
14
Ёпрст
гуру
26.01.11
✎
14:36
|
(12) ну-ну.. ПараметрыСтраницы применяются только к последним объявленным опциям печати.
|
|||
15
Ёпрст
гуру
26.01.11
✎
14:37
|
+14 поиграйся с одновременной печатью на разные принтеры..
увидишь сам. |
|||
16
St17
26.01.11
✎
14:37
|
Сижу и думаю как я сейчас все 20 принтеров буду переименовывать. И у каждого пользователя прописывать их заново. писец. Спасибо за помощь я побежал делать.
|
|||
17
St17
26.01.11
✎
14:38
|
(15) т.е оставить все как было?
Таб.ПараметрыСтраницы(,,,,,,,,,1,,Устройство); |
|||
18
Ёпрст
гуру
26.01.11
✎
14:38
|
(16) пробуй сперва (10), переименовать всегда успеешь..
|
|||
19
St17
26.01.11
✎
14:40
|
ок
|
|||
20
andrewks
26.01.11
✎
14:43
|
(14) т.е. ты хочешь сказать, что если я сначала в ПараметрыСтраницы() укажу портрет, а потом укажу Опции() где у меня сохранён альбом, то на печать пойдёт всё равно портрет? уверен?
|
|||
21
St17
26.01.11
✎
14:44
|
Обратился к старым обработка с другой фирмы поглядел как там сделано. На той фирме все работало хорошо!
Обнаружил разницу только в объявлении принтеров а вот как выглядит код Если Устройство = 0 Тогда ПечТабл.Опции(0,0,0,0,"ДляРеализации"); Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда ПечТабл.Защита(1); Иначе ПечТабл.Защита(0); КонецЕсли; ПечТабл.ТолькоПросмотр(1); ПечТабл.Показать(глНазваниеДокументаВжурнале(Докум),""); Иначе ПечТабл.ПараметрыСтраницы(,,,,,,,,,1,,); ПечТабл.КоличествоЭкземпляров(КолвоКопий); ПечТабл.Напечатать(0); КонецЕсли; И принтера называют коротко и без пробелов |
|||
22
Ёпрст
гуру
26.01.11
✎
14:47
|
(21) скажем так, нет ни одного принтёра с коротким именем в системе и всё работает.
|
|||
23
andrewks
26.01.11
✎
14:50
|
(22) верю тебе. но принтеры с длинными именами с пробелами в 7-ке глючат (периодически-спорадически, причём насколько я понял большую роль играют именно пробелы). это было проверено мной много-много раз. и не все же могут так сделать код, чтобы эта проблема не проявлялась. лучше назвать принтеры так, чтобы 7-ка была довольна
|
|||
24
Йохохо
26.01.11
✎
15:03
|
(21) если я правильно понял, тебе напоминают про багофичу
Таб.Опции(ляляля); Таб.ПараметрыСтраницы(.. Принтер1); Таб.ПараметрыСтраницы(.. Принтер2); Таб.Напечатать(0) - улетит на принтер1 --- Таб.Опции(ляляля); Таб.ПараметрыСтраницы(.. Принтер1); Таб.Опции(бебебе); Таб.ПараметрыСтраницы(.. Принтер2); Таб.Напечатать(0) - улетит на принтер2 в твоем цикле не перед каждыми ПараметрамиСтраницы будут вызваны Опции. ЗЫ Устройству сделай СокрЛП() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |