AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.05.2009, 18:18   #1  
_AxDevel_ is offline
_AxDevel_
Участник
 
69 / 12 (1) ++
Регистрация: 20.08.2008
Адрес: Ижевск-Москва
параметры принтера
Для печати отчёта пользуюсь классом ComExcelDocument_RU. У пользователя возникло желание сразу отправлять (без предпросмотра) на принтер (это реализовано) на печать в ДУПЛЕКСНОМ режиме. Никак не получается справиться с этим. Как задавать параметры принтера?
Старый 26.05.2009, 23:19   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Устанавливать на принтере по умолчанию перед выводом на печать режим дуплексной печати и снимать его после.
Здесь есть пример для Visual Basic. Этот код можно переложить на Аксапту и реализовывать изменения из нее
А вот здесь этот же код адаптирован для VBA
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 26.05.2009 в 23:23.
За это сообщение автора поблагодарили: Logger (8).
Старый 08.09.2009, 13:17   #3  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Цитата:
Сообщение от AndyD Посмотреть сообщение
Устанавливать на принтере по умолчанию перед выводом на печать режим дуплексной печати и снимать его после.
Здесь есть пример для Visual Basic. Этот код можно переложить на Аксапту и реализовывать изменения из нее
А вот здесь этот же код адаптирован для VBA
А кто то уже адаптировал на X++?
Очень нужно. А времени мало.

Спасибо.
Старый 08.09.2010, 11:56   #4  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от _AxDevel_ Посмотреть сообщение
У пользователя возникло желание сразу отправлять (без предпросмотра) на принтер (это реализовано)
В ComExcelDocument_RU я не нашёл подходящего метода. Вы это сами дописывали или где-то всё-таки есть?
__________________
С уважением,
Вячеслав
Старый 08.09.2010, 12:49   #5  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Нет, в стандартном классе нету.
Старый 08.09.2010, 12:55   #6  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
про дуплексную печать...
все на самом деле просто, изначально в windows в настройках принтера нужно поставить галку "Двухсторонняя печать". Затем нужно отправлять на печать всю книгу целиком, одним заданием. Если будете выводить на печать перебирая листы, дуплексной печати не получиться, потому что каждый лист будет уходить отдельным заданием, а принтер каждое задание начинает с нового листа.

по поводу реализации вывода сразу на печать. делаете галку в отчете "На принтер". Если галка стоит то делаете следующее (у нас написана своя обертка для вывода в Excel, но думаю вы поймете что к чему):
1. печатаем книгу:
X++:
excel.activeWorkBook().PrintOut(1, // From: OleVariant;
                                        32767, // To_: OleVariant;
                                        cntCopies ? cntCopies : 1, //Copies: OleVariant;
                                        false, // Preview: OleVariant;
                                        activePrinter, // ActivePrinter: OleVariant;
                                        false, // PrintToFile: OleVariant;
                                        true); //Collate: OleVariant; галка печатать "всю книгу"
2. Закрываем документ:
X++:
excel.ActiveWindow().Close(false); // save changes
или
X++:
excel.finalize();
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем

Последний раз редактировалось lev; 08.09.2010 в 13:12. Причина: добавил вариант закрытия экселя
За это сообщение автора поблагодарили: pitersky (1), kornix (1).
Старый 08.09.2010, 13:00   #7  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
да забыл, перед формированием отчета конечно надо сделать excel.visible(false) что бы ничего лишнего на экран не выпрыгивало.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 08.09.2010, 14:08   #8  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от lev Посмотреть сообщение
по поводу реализации вывода сразу на печать...
X++:
excel.activeWorkBook().PrintOut(1, // From: OleVariant;
                                        32767, // To_: OleVariant;
                                        cntCopies ? cntCopies : 1, //Copies: OleVariant;
                                        false, // Preview: OleVariant;
                                        activePrinter, // ActivePrinter: OleVariant;
                                        false, // PrintToFile: OleVariant;
                                        true); //Collate: OleVariant; галка печатать "всю книгу"
Наверное, я чего-то не знаю. Но никакого activeWorkBook() на excel я не нашёл. Может это вы дописывали сами?
__________________
С уважением,
Вячеслав
Старый 08.09.2010, 14:26   #9  
Freeangel is offline
Freeangel
Участник
 
173 / 55 (2) ++++
Регистрация: 01.04.2005
Добавьте метод в класс ComExcelDocument_RU

void printOut(int _cntCopies = 1)
{
m_ComDocument.PrintOut(1, // From: OleVariant;
32767, // To_: OleVariant;
cntCopies, //Copies: OleVariant;
false, // Preview: OleVariant;
1, // ActivePrinter: OleVariant;
false, // PrintToFile: OleVariant;
true);
}
За это сообщение автора поблагодарили: pitersky (1), axalex (1).
Старый 08.09.2010, 14:46   #10  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от pitersky Посмотреть сообщение
Наверное, я чего-то не знаю. Но никакого activeWorkBook() на excel я не нашёл. Может это вы дописывали сами?
activeWorkBook можно получить так

т.е. сначала от ComExcelDocument_RU можно получить getComDocument(), потом то что получили можно сохранить в COM, и от этой COM-переменной вызвать метод Application(), как написано в статье из ссылки:
X++:
    excel = new ComExcelDocument_RU(); 
    excel.newFile(fileName,true);
    doc = excel.getComDocument(); 
    app = doc.Application();             
    Workbook = app.ActiveWorkbook();
__________________
AXIOMA

Последний раз редактировалось kornix; 08.09.2010 в 15:01. Причина: добавил пример AndyD
За это сообщение автора поблагодарили: Ganna (1).
Старый 08.09.2010, 14:58   #11  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от pitersky Посмотреть сообщение
Наверное, я чего-то не знаю. Но никакого activeWorkBook() на excel я не нашёл. Может это вы дописывали сами?
excel это ком:
X++:
excel = new COM("Excel.Application");
а уже у com объекта есть необходимая функция activeWorkBook(). После точки просто напишите это и все будет ок аксапта откомпилируется, и будет вам счастье.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 10.09.2010, 16:13   #12  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Цитата:
Сообщение от pitersky Посмотреть сообщение
Наверное, я чего-то не знаю. Но никакого activeWorkBook() на excel я не нашёл. Может это вы дописывали сами?
Вы не нашли activeWorkBook(), потому что доступ к методам классов COM, ComExcelDocument_RU, ComWordDocument_RU происходит по принципу позднего свзвания, т.е. во время исполнения кода программы, в то время как при работе с другими классами срабатывает технология IntelliSense, благодаря которой при указании точки после экземпляра класса всплывает список доступных методов. Поэтому следуйте совету автора предыдущего сообщения
__________________
С уважением, Александр.
Старый 10.09.2010, 16:45   #13  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от kornix Посмотреть сообщение
activeWorkBook можно получить так

т.е. сначала от ComExcelDocument_RU можно получить getComDocument(), потом то что получили можно сохранить в COM, и от этой COM-переменной вызвать метод Application(), как написано в статье из ссылки:
X++:
    excel = new ComExcelDocument_RU(); 
    excel.newFile(fileName,true);
    doc = excel.getComDocument(); 
    app = doc.Application();             
    Workbook = app.ActiveWorkbook();
В данном конкретном случае две последние строки лишние, т.к. переменная doc в 3-й строке уже содержит ссылку на worbook, который active. Т.е. и doc, и Workbook после отработки этих 5 строк ссылаются на один и тот же объект.
Старый 16.12.2022, 19:39   #14  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от AndyD Посмотреть сообщение
Здесь есть пример для Visual Basic. Этот код можно переложить на Аксапту и реализовывать изменения из нее
А вот здесь этот же код адаптирован для VBA
Ссылка битая но через архив доступна
https://web.archive.org/web/20130915...cle.asp?ID=116

На всякий случай сохранил как файл.
Вложения
Тип файла: rar Controlling the Printer from Word VBA_asp.rar (111.3 Кб, 16 просмотров)
Теги
дуплексный режим, печать

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Параметры ГК по расчету курсовой разницы Ax 4.0 nmariya DAX: Функционал 2 10.12.2007 11:34
Параметры обработки НДС в книге Покупок sev DAX: Функционал 1 11.08.2005 20:41
Query, параметры введенные пользователем kostas DAX: Программирование 8 26.05.2005 16:43
Система не видит новые параметры методов при работе Anais DAX: Программирование 28 20.01.2005 22:38
LookUp форма и параметры SnowMan DAX: Программирование 7 18.09.2003 16:04

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:23.