Мастер-Деталь на разных Page (Альбомная-Портретная)
Приветствую.
Мне нужно сделать вот что.
Есть Мастер-Деталь запрос. Для него надо построить табличку. Данная табличка строится на листе Альбомного формата.
Но после таблички должны печататся все документы, входящие в эту табличку.
Получается взаимосвзять Master-Detail1-Detail1. Такой пример в Демо примерах фаста есть, он так и зовется )))
Только у меня чуть чуть по другому. Detaile2 должен печататься на листах Портретного вида. И что гораздо хуже в зависимости от типа - должна печататся разная форма !!!...
Отчет, если по сути, прост - табличка в которой указаны позиции кратко (Master-Detail1). Затем должны идти сами накладные (Detail2+чилды -см. ниже, я описал как я сделал что то подобное, но все листы были одного типа).... Просто табличка широкая -должна быть на альбомном листе, а накладные Портретном.... Собсна у мну вопрос как енто сделать...
Совсем недавно, к моему счасть, все страницы в отчете были Портретного режима. Поэтому я сделал данный отчет очень просто - первый Мастер-Деталь стандартно распечатал (просто табличка) - а вот со вторым деталем схитрил (как я указал выше мне нужно в зависимости от типа документа печатать разную форму) - я сделал Detaile2 невидимым а в скрипте сделал простейшую проверку по типу документа - и после чего печатал разные чилды (с помощью Engine.ShowBand (Child1) . А уже на чилад были СабРепорты (можно было бы и на чилде нарисовать, но тогда просто некрасиво плучается - отчет становится визуально огромным очень - поэтому на кажом чилде был СабРепорт и уже в саб репорте я печатал форму)!!! Получилось все просто класно и логично с минимумом скриптов.
Ну так вот. А теперь появилась необходимость главную табличку (Мастер-Деталь) сделать Альбомной.... И все рухнуло )))))
Вообще ФастРеп позволяет печатать отчет из различных типов листов. Для этого нужно просто создать новый Page и указать его тип. Но я застрял (((((((( Я кинул чилд на каждый из листов (думал что при печати чилда - он распечатается с настройкаими того Листа, на котором расположен)... НО НЕТ, оказалось не так (((((( Чилд распечатался с настройками того листа, который печатал чилда (даже не смотря на то, что чилд распологался на отдельном листе, у которого НЕ СТОЯЛО настройки Печатать на предыдущем листе, и также у чилда был включен параметр StartNewPAge)....
Собственно в этом и вопрос - как распечатать разные страницы отчета Связаные связью Мастер-Деталь (объекты page) в зависимости от типа.
Сейчас две проблемы у меня:
1.Думал сделать это с поомщью датасетов - но там проблема что надро привязать их сущностью Мастер-Деталь, но в Фасте Репорте на новой странице нельзя распологать детальные датасеты сами посебе !!!!!!! Т.е. там обязательно должны быть Датасеты первого уровня !!!!
2. Соотвественно если не привязывать Мастер-Деталью, то предпологаю что нужно использовать Мастер датасет с 1 виртуальной записью. Но тогда надо как то решать проблему того, что как то печатать только нужный датасет (ну на примере чилда у меня в описании... Как то так... Сам пока не придумал как сделать на Датасетах это)
Если что то не понятно в задаче могу уточнить что не ясно...
Мне нужно сделать вот что.
Есть Мастер-Деталь запрос. Для него надо построить табличку. Данная табличка строится на листе Альбомного формата.
Но после таблички должны печататся все документы, входящие в эту табличку.
Получается взаимосвзять Master-Detail1-Detail1. Такой пример в Демо примерах фаста есть, он так и зовется )))
Только у меня чуть чуть по другому. Detaile2 должен печататься на листах Портретного вида. И что гораздо хуже в зависимости от типа - должна печататся разная форма !!!...
Отчет, если по сути, прост - табличка в которой указаны позиции кратко (Master-Detail1). Затем должны идти сами накладные (Detail2+чилды -см. ниже, я описал как я сделал что то подобное, но все листы были одного типа).... Просто табличка широкая -должна быть на альбомном листе, а накладные Портретном.... Собсна у мну вопрос как енто сделать...
Совсем недавно, к моему счасть, все страницы в отчете были Портретного режима. Поэтому я сделал данный отчет очень просто - первый Мастер-Деталь стандартно распечатал (просто табличка) - а вот со вторым деталем схитрил (как я указал выше мне нужно в зависимости от типа документа печатать разную форму) - я сделал Detaile2 невидимым а в скрипте сделал простейшую проверку по типу документа - и после чего печатал разные чилды (с помощью Engine.ShowBand (Child1) . А уже на чилад были СабРепорты (можно было бы и на чилде нарисовать, но тогда просто некрасиво плучается - отчет становится визуально огромным очень - поэтому на кажом чилде был СабРепорт и уже в саб репорте я печатал форму)!!! Получилось все просто класно и логично с минимумом скриптов.
Ну так вот. А теперь появилась необходимость главную табличку (Мастер-Деталь) сделать Альбомной.... И все рухнуло )))))
Вообще ФастРеп позволяет печатать отчет из различных типов листов. Для этого нужно просто создать новый Page и указать его тип. Но я застрял (((((((( Я кинул чилд на каждый из листов (думал что при печати чилда - он распечатается с настройкаими того Листа, на котором расположен)... НО НЕТ, оказалось не так (((((( Чилд распечатался с настройками того листа, который печатал чилда (даже не смотря на то, что чилд распологался на отдельном листе, у которого НЕ СТОЯЛО настройки Печатать на предыдущем листе, и также у чилда был включен параметр StartNewPAge)....
Собственно в этом и вопрос - как распечатать разные страницы отчета Связаные связью Мастер-Деталь (объекты page) в зависимости от типа.
Сейчас две проблемы у меня:
1.Думал сделать это с поомщью датасетов - но там проблема что надро привязать их сущностью Мастер-Деталь, но в Фасте Репорте на новой странице нельзя распологать детальные датасеты сами посебе !!!!!!! Т.е. там обязательно должны быть Датасеты первого уровня !!!!
2. Соотвественно если не привязывать Мастер-Деталью, то предпологаю что нужно использовать Мастер датасет с 1 виртуальной записью. Но тогда надо как то решать проблему того, что как то печатать только нужный датасет (ну на примере чилда у меня в описании... Как то так... Сам пока не придумал как сделать на Датасетах это)
Если что то не понятно в задаче могу уточнить что не ясно...
Комментарии
На рисунке идет снчалоа обычнейший мастер-деталь в виде таблицы на альбомном листе. А вот затем идет интересное - затем идут опять детали, но развернутые в Портретном виде. И все бы ничего - но эти вот вторые детали могут состоять из различных типов листов. Т.е. в зависимости от типа - должна печататся своя форма.
Еще раз отмечу что пока весь отчет состоял из единого формата листов - все решалось ОЧЕНЬ просто - я просто кидал второй дата-бенд, на нем ничего не печатал, а в его скрипте делал проверку по типу и печатал нужный Чилд-бенд... А вот после смены листов такое уже не работает ((((( Оказалось что чилд (даже если он кинут на другой Page, у которого другие параметры листа) печатается на том листе и с теми параметрами - на кототором дана команда Engine.ShowBand