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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2008, 13:57   #1  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Отчет с разной ориентацией листов.
Нужно только аксаптовскими средствами напечатать отчет, у которого первые несколько страниц - в портретной ориентации, потом идут в альбомной. Соответственно, делаем:
X++:
    PS_ActWork.executeSection();  // портретная
    PS_End.executeSection(); 
    // дальше - альбомная
    element.design().paperOrientation(PrinterOrientation::Landscape);
    element.newPage();

    PS_RevertHeader.executeSection();
Ориентация в предпросмотре меняется. Но, если ширина секции в албомным превысит ширину портреной, то весь отчет превращается в альбомной.
Из вариантов вижу только - два отчета с различной ориентацией. Получаем на два телодвижения больше. Но это в моем случае, а если, скажем ориентация должна чередоваться, то это тоже не выход.
Как это можно сделать?
Старый 25.06.2008, 17:02   #2  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
сделайте 2 дизайна один с альбомной другой с портретной ориентацией и переключайтесь между ними
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 25.06.2008, 18:03   #3  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
X++:
 element.design("InstallDesignRevert");
Тогда валится с ошибкой doEventLines() failed. Видимо, нельзя переключать в fetch дизайны...

Если программно ставить позиции для контролов, тогда все нормально работает, но когда переключаемся на альбомную страницу в уже напечатанном отчете, выходит сообщение:
Цитата:
Информация:
Правый край бумаги превышен на странице 2 в SmmOrder(InstallDesign) - Отчет, 2 мм сверху.
Можно его отключить, также как и сообщение об масштабировании?

Последний раз редактировалось Eldar9x; 25.06.2008 в 18:07.
Старый 25.06.2008, 18:32   #4  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Тогда валится с ошибкой doEventLines() failed. Видимо, нельзя переключать в fetch дизайны...
в 3ке точно можно
X++:
element.design("Facture");
element.design("Facture").unpackPrintJobSettings(conPrintJobSettings);
element.design("Facture").orientation(2);
element.newPage();
this.printFacture();
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 30.09.2009, 10:27   #5  
koraman is offline
koraman
Участник
 
41 / 11 (1) +
Регистрация: 12.02.2008
Адрес: Казань
Цитата:
Сообщение от ivas Посмотреть сообщение
в 3ке точно можно
X++:
element.design("Facture");
element.design("Facture").unpackPrintJobSettings(conPrintJobSettings);
element.design("Facture").orientation(2);
element.newPage();
this.printFacture();
И дизайн переключил, и в превьюхе даже отобразил всё нормально (с инфологом, что правый край превышен ля-ля-ля), но вот на печать пошло всё равно с портретной ориентацией, какая была на первом дизайне, то есть обрезал справа... Может, ещё какие-нибудь идеи..?
__________________
I believe!
Старый 30.09.2009, 13:17   #6  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
просто мысль
может в PrintJobSettings тогда изменить paperOrientation для нового дизайна
Старый 30.09.2009, 13:33   #7  
koraman is offline
koraman
Участник
 
41 / 11 (1) +
Регистрация: 12.02.2008
Адрес: Казань
И это делал...
__________________
I believe!
Старый 30.09.2009, 14:00   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
как-то давно искал способа так сделать и не нашел
Старый 30.09.2009, 14:11   #9  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
Вроде как невозможно

Обратите внимание, что в момент отправки отчёта на печать опции закладки 'Параметры' недоступны. Получается эффект запоминания первоначально установленного значения 'Ориентация' и несмотря на то, что данные "обрезаются" корректно, для всех без исключения листов ориентация одна для всех: та, которую установили в самом начале формирования отчёта.
Миниатюры
Нажмите на изображение для увеличения
Название: SysPrintForm.png
Просмотров: 417
Размер:	7.8 Кб
ID:	5189  
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 30.09.2009, 14:19   #10  
koraman is offline
koraman
Участник
 
41 / 11 (1) +
Регистрация: 12.02.2008
Адрес: Казань
Значит, решение только одно. Убедить, что отчёт выглядит гораздо красивее, когда он весь, включая титульник, имеет альбомную ориентацию.
__________________
I believe!
Старый 08.10.2009, 13:43   #11  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от koraman Посмотреть сообщение
Значит, решение только одно. Убедить, что отчёт выглядит гораздо красивее, когда он весь, включая титульник, имеет альбомную ориентацию.
Блин ну вы чего ваще?)
Я ж привел работающий код, который меняет ориентацию в fetch'е.

вот весь код метода
X++:
boolean  fetch()
{
    real                    checkedHeight, numOfLines;
    boolean                 firstRow;
    mapIterator             mapIterator = new mapIterator(chi_invFormatMap);
    CHI_InvoiceFormat       invoiceFormat;
    DictEnum                dictEnum    = new DictEnum(EnumNum(chi_invoiceFormat));
    PrintJobSettings        chi_printJobSettings;
    boolean                 pr; // Признак наличия услуг
    container               conPrintJobSettings;
    #define.designStandard("Standard")
    ;
    firstIteration = true;
    chi_printJobSettings = new PrintJobSettings(SalesFormLetter::getPrinterSettingsFormletter(DocumentStatus::Invoice));
    while (mapIterator.more())
    {
        invoiceFormat = mapIterator.key();
        if (invoiceFormat == CHI_Invoiceformat::LabelParcel)
            chi_printJobSettings.copies(1);
        else
            chi_printJobSettings.copies(2);
        if (firstIteration == false)
            element.reset();
        if (invoiceFormat == CHI_InvoiceFormat::InvoiceFacture ||
            invoiceFormat == CHI_InvoiceFormat::Torg12Akt)
        {
            element.design(#designStandard);
        }
        else
        {
            element.design(DictEnum.index2Symbol(invoiceFormat));
        }
        if (mapIterator.value() != conNull())
            conPrintJobSettings = mapIterator.value();
        else
            conPrintJobSettings = chi_printJobSettings.packPrintJobSettings();
        element.printJobSettings(conPrintJobSettings);
        TmpSalesPurchReportTable_RU_1 = headerData;
        firstRow = false;
        while select headerData
        {
            this.send(headerData);
            pr = false;
            converter = new RNumDateInWordConverter(headerData.LanguageId);
            element.design().languageID(headerData.LanguageId);
//            while (salesPurchReport.preSendReportHeader(headerData.RecId, headerData.LanguageId))
            {
                if (firstRow)
                    element.newPage();
                firstRow    = true;
                if (invoiceFormat == chi_invoiceFormat::Facture)
                    this.chi_printFacture();
                if (invoiceFormat == chi_invoiceFormat::Check)
                    this.chi_printCheck();
                if (invoiceFormat == chi_invoiceFormat::LabelParcel)
                    this.chi_printLabelParcel();
                if (invoiceFormat == chi_invoiceFormat::Akt)
                    this.chi_printAkt();
                if (invoiceFormat == chi_invoiceFormat::Torg12Akt ||
                    invoiceFormat == chi_invoiceFormat::Standard ||
                    invoiceFormat == chi_invoiceFormat::InvoiceFacture)
                {
                    this.initSections();
                    this.clearTotalsOnPage();
                    startPageNo = element.page();
                    if (invoiceFormat == chi_invoiceFormat::Torg12Akt)
                        this.chi_removeTotalsFromHeader();
                    numOfLines = headerData.LineNum;
                    element.execute(3); // PageHeader
                    element.execute(1); // Logo
                    element.execute(7); // Body header
                    while select dynamicData
                    order by LineNum
                    where dynamicData.InternalId    == headerData.InternalId
                    {
                        if (invoiceFormat == chi_invoiceFormat::Torg12Akt &&
                            dynamicData.CHI_ItemIsService == NoYes::Yes)
                        {
                            pr = true;
                            continue;
                        }
                        this.prepareDynamicSection();
                        if (dynamicData.LineNum <  numOfLines ||
                            dynamicData.LineNum == 1)
                        {
                            checkedHeight = sectionBody.heightValue()       +
                                            sectionFooter.heightValue()     +
                                            sectionPageHeader.heightValue();
                        }
                        else
                        {
                            checkedHeight = sectionBody.heightValue()       +
                                            sectionFooter.heightValue()     +
                                            sectionTotal.heightValue()      +
                                            sectionPageHeader.heightValue() +
                                            sectionEpilog.heightValue();
                        }
                        if ((pageHeight - this.currentYmm100()/100) < checkedHeight)
                        {
                            element.execute(14);// Footer
                            element.newPage();
                            element.execute(3); // PageHeader
                            element.execute(7); // SectionHeader
                            this.clearTotalsOnPage();
                        }
                        this.send(dynamicData);
                    }
                    this.send(headerData); //ivas bugfix
                    element.execute(13);// Total
                    element.execute(2); // Epilog
                    salesPurchReport.postSendReportHeader();
                    if (invoiceFormat == chi_invoiceFormat::Torg12Akt && pr == true)
                    {
                        element.design("Akt");
                        element.design("Akt").unpackPrintJobSettings(conPrintJobSettings);
                        element.newPage();
                        this.chi_printAkt();
                        element.design(#designStandard);
                    }
                    if (invoiceFormat == chi_invoiceFormat::InvoiceFacture)
                    {
                        element.design("Facture");
                        element.design("Facture").unpackPrintJobSettings(conPrintJobSettings);
                        element.design("Facture").orientation(2);
                        element.newPage();
                        this.chi_printFacture();
                        element.design(#designStandard);
                    }
                }
            }
            firstIteration = false;
        }
        mapIterator.next();
    }
    return true;
}
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 08.10.2009, 17:45   #12  
Russland is offline
Russland
MCTS
Аватар для Russland
MCBMSS
 
267 / 116 (4) +++++
Регистрация: 17.10.2005
Адрес: Донеччина, Україна
данный код меняет ориентацию как на экране так и при печати?

А можете, если у вас есть время, сделать небольшой отчётик и выложить проектом сюда?
__________________

В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню
Старый 08.10.2009, 18:41   #13  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от Russland Посмотреть сообщение
данный код меняет ориентацию как на экране так и при печати?

А можете, если у вас есть время, сделать небольшой отчётик и выложить проектом сюда?
Да, меняет. Одновременно может печататься накладная Торг12 и Акт, а они с разной ориентацией
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Старый 08.10.2009, 19:18   #14  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Цитата:
Сообщение от Russland Посмотреть сообщение
А можете, если у вас есть время, сделать небольшой отчётик и выложить проектом сюда?
хм, набросал проектик TestOrientationReport.xpo
действительно, если в рамках одного отчета менять дизайн то при печати ориентация не меняется, проглядел в коде reset()
если использовать element.reset(), то получается 2 отчета с разной ориентацией, может устроит такой вариант.

X++:
public boolean fetch()
{
    ;
    //ReportDesign1
    element.execute(1);
    //ReportDesign2
    element.reset();
    element.design("ReportDesign2");
    element.design("ReportDesign2").orientation(2);
    element.execute(1);
    return true;
}
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy
Теги
orientation, paperorientation, отчет

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отчет Кассовая книга AlexeyBP DAX: Функционал 8 26.01.2011 10:53
Вписать динамический отчет в страницу (DAX 4.0) Qaz Qwerty DAX: Программирование 2 17.07.2008 05:46
Как получить указатель на отчёт когда пользователь выбрал Печать на принтер в просмотрщике, в форму SysPrintForm? rkorchagin DAX: Программирование 10 17.04.2008 11:59
Отчет "Запасы в наличии" evb DAX: Программирование 19 17.01.2008 07:37
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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