А что делать, если очень нужно? А то в день на каждом принтере уходит по 4-5 упаковок бумаги. Принтеров штук 10... Начальство кричит, экономить надо... Как быть?
(1)Неправда, можна и автоматом. (0) - создаешь Справочник.ДуплексПринтеры с реквизитом ИмяПринтера (полное сетевое). Заходишь через Пуск\Настройка\Принтеры...в нужный принтер, выставляешь дуплексную печать, сохраняещь в каталоге пользователя дуплексную настройку; потом снимаешь галочку дуплексной печати и сохраняешь моно-настройку. Код примерно такой (dll-ка и параметры командной строки могут быть другими, настройка для принтера "hp LaserJet 1320 PCL 6"):
Процедура СохранитьНастройку(ТипПечати)//ТипПечати "mono" или "duplex" - задаешь в диалоге на форме Если фПринтер.Выбран()=0 Тогда //(реквизит формы обработки НачальнаяНастройка - тип Справочник.ДуплексПринтеры) Предупреждение("Не выбран принтер"); Возврат; КонецЕсли; С="rundll32 printui.dll,PrintUIEntry /Ss /n """+СокрЛП(фПринтер.ИмяПринтера)+""" /a """+КаталогПользователя()+СокрЛП(фПринтер.Наименование)+"_"+ТипПечати+".dat"+""""; ЗапуститьПриложение(С); КонецПроцедуры
После того, как в каталоге пользователя уже существуют нужные настройки можно например на панели инструментов в 1С добавить 2 кнопки - Моно-печать и Дуплекс-печать и вставить в эти кнопки обработки соответственно МоноПечать и ДуплексПечать, ниже приведен пример обработки дуплексПечать, моно - аналогично...Для коректной работы нужно ввести дополнительный реквизит ДуплексПринтер в справочнике "Пользователи" и переменную в глобальном модуле, смотри по тексту ниже
Процедура ПриОткрытии() Принтер=глПользователь.ДуплексПринтер; Если Принтер.Выбран()=0 Тогда Если ПустоеЗначение(Форма.Параметр)=1 Тогда Предупреждение("Для текущего пользователя не выбран дуплекс принтер"); КонецЕсли; СтатусВозврата(0); Возврат; КонецЕсли; Если ФС.СуществуетФайл(КаталогПользователя()+СокрЛП(Принтер.Наименование)+"_duplex.dat")=0 Тогда Предупреждение("Для текущего пользователя отсутствует настройка дуплексного принтера "+Принтер.Наименование+" в режиме дуплекс"); СтатусВозврата(0); Возврат; КонецЕсли; попытка С="rundll32 printui.dll,PrintUIEntry /Sr /n """+СокрЛП(Принтер.ИмяПринтера)+""" /a """+КаталогПользователя()+СокрЛП(Принтер.Наименование)+"_duplex.dat"+""""; ЗапуститьПриложение(С); Предупреждение("Для дуплексного принтера "+СокрЛП(Принтер.Наименование)+" установлен ДУПЛЕКС режим"); глДуплекс=1; СтатусВозврата(0); исключение Предупреждение("Не доступен сетевой дуплекс-принтер !"); КонецПопытки; КонецПроцедуры
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший