Имя: Пароль:
1C
 
Печать двух страниц на одном листе
0 zawod
 
16.11.05
00:31
Можно ли программным способом задать печать двух страниц на одном листе?
Например, в WS WORD при настройке печать есть фишка Количество страниц на листе (не путать в настройке принтера в 1С опцию Экземпляров на страницу - работает не так).
1 OFF
 
модератор
16.11.05
06:20
ВывестиСекцию, ПрисоеденитьСекцию еще никто не отменял
Ну а дальше маштабом играйся
2 smaharbA
 
16.11.05
06:35
(16) Сейчас во всех(почти) принтерах такое встроено, не экземпляров, а страниц
3 Vint Kras
 
16.11.05
06:42
я настроил в системе два принтера на один, один обычные настройки, второй как 2 сказал, нужно две страницы на листе печатаю на втой, нет на первый (он по умолчанию) все работает на ура.
4 smaharbA
 
16.11.05
07:13
(3) Можно программно, вот пример
Перем Сп;
Процедура НастройкаПечати(ИмяПринтераКакВСистеме)
   Предупреждение("Настройте параметры печати для "+СокрЛП(ИмяПринтераКакВСистеме),5);
   КомандаСистемы("rundll32 printui.dll,PrintUIEntry /e /n """+СокрЛП(ИмяПринтераКакВСистеме)+"""");
   ВЗ="";НЗ="";ПредстСп="";
   Если Сп.ВыбратьЗначение(ВЗ,"Выберите профиль для сохранения",НЗ,,1)=1 Тогда
       ЗапуститьПриложение("rundll32 printui.dll,PrintUIEntry /Ss /n """+СокрЛП(ИмяПринтераКакВСистеме)+""" /a "+Сп.ПолучитьЗначение(НЗ));
       Сп.ПолучитьЗначение(НЗ,ПредстСп);
       Сп.УстановитьЗначение(НЗ,Сп.ПолучитьЗначение(НЗ),"+"+Сред(ПредстСп,2));
   КонецЕсли;
КонецПроцедуры // НастройкиПринтера
//*******************************************
Процедура ПрименитьНастройкиПечати(ИмяПринтераКакВСистеме)
   ВЗ="";НЗ="";ПредстСп="";
   Сп2=Сп;
   РС=Сп2.РазмерСписка();
   Для к=0 По РС-1 Цикл
       Сп.ПолучитьЗначение(РС-к,ПредстСп);
       Если Лев(ПредстСп,1)="-" Тогда
           Сп.УдалитьЗначение(РС-к);
       КонецЕсли;
   КонецЦикла;
   Если Сп2.ВыбратьЗначение(ВЗ,"Выберите профиль для применения",НЗ,,1)=1 Тогда
       Предупреждение(Сп2.ПолучитьЗначение(НЗ));
       ЗапуститьПриложение("rundll32 printui.dll,PrintUIEntry /Sr /n """+СокрЛП(ИмяПринтераКакВСистеме)+""" /a """+СокрЛП(Сп2.ПолучитьЗначение(НЗ))+"""");
   КонецЕсли;
КонецПроцедуры

Процедура Печать()
   
КонецПроцедуры    // Печать  

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   ПрименитьНастройкиПечати(ИмяПринтераКакВСистеме);
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Контрагенты = Справочник.Контрагенты.ТекущийЭлемент;
   |Группировка Контрагенты;
   |"//}}ЗАПРОС
   ;
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   к=0;
   Пока Запрос.Группировка(1) = 1 Цикл
       Таб.ВывестиСекцию("Контрагенты");
       к=к+1;
   КонецЦикла;
   Таб.ПараметрыСтраницы(,,,,,,,,,,,СокрЛП(ИмяПринтераКакВСистеме));
   Таб.Напечатать(1);
   //Таб.ТолькоПросмотр(1);
   //Таб.Показать("Сформировать", "");
КонецПроцедуры

Сп=СоздатьОбъект("СписокЗначений");
Сп.Установить(?(ФС.СуществуетФайл(КаталогПользователя()+"Duplex.dat")=1,"+","-")+"Двухсторонняя печать",КаталогПользователя()+"Duplex.dat");
Сп.Установить(?(ФС.СуществуетФайл(КаталогПользователя()+"NoDuplex.dat")=1,"+","-")+"Односторонняя печать",КаталогПользователя()+"NoDuplex.dat");
Сп.Установить(?(ФС.СуществуетФайл(КаталогПользователя()+"Other.dat")=1,"+","-")+"Другая какаято печать",КаталогПользователя()+"Other.dat");
...
Тут можно сохранять любые настройки принтера и вызывать их когда надо, программно...
5 Vint Kras
 
16.11.05
07:18
(4) :-), да с тобой все давно ясно..... :-)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.