Имя: Пароль:
1C
 
Выбор принтера в 1с8
0 Маленький Вопросик
 
23.11.09
13:28
Народ, подскажите следующее: возможно ли программно выбирать настройку принтера в 1с?
1 Ygich
 
23.11.09
13:32
синтаксис помощник запретили?
2 Маленький Вопросик
 
23.11.09
13:34
(1) я его уже изрыл весь... какие методы у табличного документа
3 Ygich
 
23.11.09
13:36
а что именно нужно? выбрать определенный принтер и на него напечатать? средствами драйвера принтера распечатать как постер?
4 Маленький Вопросик
 
23.11.09
13:50
(3) нужно следующее - выбрать определенную настройку принтера (из 1с) например настройку с двухторонней печатью и напечатать по этой настройке...
заданное количество..
5 Ygich
 
23.11.09
13:57
это настройка именно драйвера принтера. стандартными средствами из 1с в нее не дотянуться
6 Маленький Вопросик
 
23.11.09
13:58
(5) нестандпртными как??
7 Ygich
 
23.11.09
13:59
либо подгонять табличный документ имеющимися средствами, либо как то исхитрятся. кунгфу вроде дотнета винапи активикс и другие страшные слова
8 Маленький Вопросик
 
23.11.09
14:08
(7) мы не ищем легких путей... как работает 1с через ActiveX .. где про это прочитать...
задача - нужно обязательно отправлять параметры печати в драйвер принтера через 1с.
что имеется ввиду под подгонять табличный документ???
9 H A D G E H O G s
 
23.11.09
14:13
Какая КОНКРЕТНО стоит задача перед тобой?
10 Ygich
 
23.11.09
14:17
(8) манипуляции с полями, переносами страниц, печатью диапазонов и прочее.
11 Маленький Вопросик
 
23.11.09
14:21
(9) КОНКРЕТНАЯ задача:
1.Отправляется поток документов на принтер ОДНОЙ Кнопкой.
2.Каждый документ может иметь свое количество.
3.Некоторые документы в потоке (по настройкам формы) печатаются с обеих сторон.

Все.
12 Ygich
 
23.11.09
14:23
(11) а принтер поддерживает двухстороннюю печать?
13 Маленький Вопросик
 
23.11.09
14:24
(12) ну конечно!
14 xzorkiix
 
23.11.09
14:26
(0) у меня
[code]
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПринтера = Принтер;
ТабличныйДокумент.ИмяПараметровПечати = "Параметр_" + ИмяКомпьютера() + "_" + ИмяПользователя() + "_" + Принтер;        
           
ТабличныйДокумент.АвтоМасштаб = Истина;
ЗаполнитьАКТ(ТабличныйДокумент);            
           
ТабличныйДокумент.Напечатать(не РежимНастройкиПечати);
[/code]

Для каждого ИмяПараметровПечати (тип строка) будут сохряняться последние настройки печати.

РежимНастройкиПечати - булевая пеерменная - в первый раз задаем истина и настраеваем нужные нам параметры печати (для указанного имени параметра печати)

Минус: у каждого пользователя необходимо в первый раз настроить печать ручками.

Список принтеров получаем так [i]под виндой[/i](возможно на мисте и нашел код):
[code]
Функция ПолучитьСписокДоступныхПринтеров()
//    Принтеры установленные в системе
   Список = Новый СписокЗначений;
   #Если Клиент Тогда
       Попытка
           КОМОбъект =  Новый COMОбъект ("WScript.Network");
           Принтеры =  КОМОбъект.EnumPrinterConnections();
           шшш = 0;
           Пока шшш < Принтеры.Count()-1 Цикл
               Список.Добавить(Принтеры.Item(шшш+1), Принтеры.Item(шшш+1));
               шшш = шшш + 2;
           КонецЦикла;
       Исключение
           Сообщить(ОписаниеОшибки());
       КонецПопытки;
   #КонецЕсли
   возврат Список;
КонецФункции
[/code]
15 Ygich
 
23.11.09
14:27
настроить на всегда двухстороннюю и через страницу пускать пустую кроме двойных.
16 Ygich
 
23.11.09
14:27
))) это была шутка
17 Маленький Вопросик
 
23.11.09
14:29
(15) я думал об этом, но принтер не работает только с 1с
18 H A D G E H O G s
 
23.11.09
14:35
Заведите 2 принтера, один - односторонний, другой - двухсторонний.
Ну и их в константы: ИмяПринтераОдносторонний,ИмяПринтераДвусторонний
19 xzorkiix
 
23.11.09
14:36
из личного опыта говорю сразу 1С v8.Х не вникает в настройки по умолчанию сетевых принтеров (даже если под виндой настроить ту печать как тебе надо - ворд, ехель, блокнот будут поддаваться жестко прописанным правилам - а 1С один хрен будет не понятно откуда брать "а4,книжка")

а вот если принтер локальный она беспрекословно печатает так как задано в самом принтере.
20 Маленький Вопросик
 
23.11.09
14:52
(19) из экспериментов получилось следующее:

1.Настроил 1 физический принтер как 2.
В одном установил печать на 2-х сторонах, в другом - нет.


отправил макет с выбором того или иного принтера - распечаталось правильно.

теперь последний момент - как задавать имя принтера при печати?

в сети он называется так
"\\DX\HP LaserJet P2050 Series PCL 6_2x" - 2-х сторонний
"\\DX\HP LaserJet P2050 Series PCL 6" - 1-х сторонний (он же).
21 H A D G E H O G s
 
23.11.09
14:55
(20) Видишь, ты сам дошел до того, что я тебе сказал в (18). Молодец.

ТабДок.ИмяПринтера
22 Маленький Вопросик
 
23.11.09
14:56
Вот так.

Если ДвеСтороны = Истина Тогда
ТабличныйДокумент.ИмяПринтера = "\\DX\HP LaserJet P2050 Series PCL 6_2x";
Иначе
ТабличныйДокумент.ИмяПринтера = "\\DX\HP LaserJet P2050 Series PCL 6";
КонецЕсли;
23 H A D G E H O G s
 
23.11.09
15:06
(22) Плохо, очень плохо.
24 xzorkiix
 
23.11.09
16:33
(22) смотри в (14) там правильные имена принтеров для параметра ИмяПринтера
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.