Имя: Пароль:
1C
 
Параметры печати
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
(0)советую..
http://infostart.ru/public/58816/

там всё печатается на нужный принтёр.
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
в твоем цикле не перед каждыми ПараметрамиСтраницы будут вызваны Опции.
ЗЫ Устройству сделай СокрЛП()
Независимо от того, куда вы едете — это в гору и против ветра!