Версия для печати темы (https://pro1c.org.ua/index.php?s=e65354f0c995eed1c4ff1eabd4925d1a&showtopic=2116)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Использование нескольких макетов в "Табличном Документе"

Автор: Rumus 03.11.10, 13:45

Здравствуйте. У меня такой вопрос к вам. Делаю печатную форму использую три макета для одного документа, структура макетов отличается. Вывожу все в один ТабДок. В зависимости от количества поданых на печать документов и от их вида вывожу все это дело на печать но выводится криво, строки смещаются. При печати одного документа соответственно выводится один макет, выводится ровно. Думаю что ошибка в разной структуре макета, если я прав то какие есть пути решения этой проблемы.

// Создаем табличный документ и устанавливаем имя параметров печати.
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПараметрыПечати_Справки";
    
    ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;    
    
    Запрос = новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    СостояниеУчащихсяСрезПоследних.Учащийся.Владелец КАК ФИОУчащийся,
                   |    СостояниеУчащихсяСрезПоследних.Курс,
                   |    СостояниеУчащихсяСрезПоследних.ФормаОбучения,
                   |    Справка.ВидСправки,
                   |    Справка.Ссылка,
                   |    Организации.Учредитель,
                   |    СостояниеУчащихсяСрезПоследних.Специальность.Код КАК ШифрСпециальности,
                   |    ПриказОЗачисленииАбитуриенты.Ссылка.Номер КАК НомерПриказа,
                   |    ПриказОЗачисленииАбитуриенты.Ссылка.Дата КАК ДатаПриказа,
                   |    Справка.Номер,
                   |    Справка.Дата,
                   |    СостояниеУчащихсяСрезПоследних.УчебноеПодразделение.ПолноеНаименование КАК ПодразделениеПолное,
                   |    СостояниеУчащихсяСрезПоследних.УчебноеПодразделение КАК Подразделение,
                   |    ОрганизацииКонтактнаяИнформация.Представление КАК Телефон,
                   |    ОрганизацииКонтактнаяИнформация1.Представление КАК Адрес
                   |ИЗ
                   |    Документ.Справка КАК Справка
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеУчащихся.СрезПоследних(, ) КАК СостояниеУчащихсяСрезПоследних
                   |            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриказОЗачислении.Абитуриенты КАК ПриказОЗачисленииАбитуриенты
                   |            ПО СостояниеУчащихсяСрезПоследних.Учащийся = ПриказОЗачисленииАбитуриенты.ЛичноеДело
                   |        ПО Справка.Учащийся = СостояниеУчащихсяСрезПоследних.Учащийся
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
                   |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации.КонтактнаяИнформация КАК ОрганизацииКонтактнаяИнформация
                   |            ПО (ОрганизацииКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонОрганизации))
                   |            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации.КонтактнаяИнформация КАК ОрганизацииКонтактнаяИнформация1
                   |            ПО (ОрганизацииКонтактнаяИнформация1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресОрганизации))
                   |        ПО Справка.Организация = Организации.Ссылка
                   |ГДЕ
                   |    Справка.Ссылка В(&МассивОбъектов)";
                  
    Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    МакетПоТребованиюНалоговой        = УправлениеПечатью.ПолучитьМакет("Документ.Справка.ПФ_MXL_ПоТребованиюНалоговой");
    МакетПоМестуЖительства              = УправлениеПечатью.ПолучитьМакет("Документ.Справка.ПФ_MXL_ПоМестуЖительства");
    МакетПоМестуЖительстваСоСроком = УправлениеПечатью.ПолучитьМакет("Документ.Справка.ПФ_MXL_ПоМестуЖительстваСоСрокомОбучения");
                
    Пока Выборка.Следующий() Цикл
        
        НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
        Дата = Формат(Выборка.Дата, "ДФ=dd.MM.yyyy");        
        
        Если Выборка.ВидСправки = Перечисления.ВидыСправок.ПоТребованиюНалоговойИнспекцией Тогда
            
            ОбластьПоТребованиюНалоговой = МакетПоТребованиюНалоговой.ПолучитьОбласть("ОбластьПоТребованиюНалоговой");    
            ОбластьПоТребованиюНалоговой.Параметры.Заполнить(Выборка);
            //ОбластьПоТребованиюНалоговой.Параметры.Дата = Дата;
            ВыводимаяОбласть = ОбластьПоТребованиюНалоговой;
            
        ИначеЕсли Выборка.ВидСправки = Перечисления.ВидыСправок.ПоМестуЖительства Тогда
            
            ОбластьПоМестуЖительства = МакетПоМестуЖительства.ПолучитьОбласть("ОбластьПоМестуЖительства");
            ОбластьПоМестуЖительства.Параметры.Заполнить(Выборка);
            ОбластьПоМестуЖительства.Параметры.Дата = Дата;
            ВыводимаяОбласть = ОбластьПоМестуЖительства;
            
        ИначеЕсли Выборка.ВидСправки = Перечисления.ВидыСправок.ПоМестуЖительстваСоСрокомОбучения Тогда
            
             ОбластьПоМестуЖительстваСоСрокомОбучения = МакетПоМестуЖительстваСоСроком.ПолучитьОбласть("ОбластьПоМестуЖительстваСоСрокомОбучения");
             ОбластьПоМестуЖительстваСоСрокомОбучения.Параметры.Заполнить(Выборка);
             ОбластьПоМестуЖительстваСоСрокомОбучения.Параметры.Дата = Дата;        
             ВыводимаяОбласть = ОбластьПоМестуЖительстваСоСрокомОбучения;
            
        КонецЕсли;    
            
        ТабличныйДокумент.Вывести(ВыводимаяОбласть, Выборка.Уровень());
                                
        УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, 1, ОбъектыПечати, Выборка.Ссылка);
        
    КонецЦикла;

  Возврат ТабличныйДокумент;

Автор: alex040269 03.11.10, 14:23

А зачем разные макеты в один табдок совать?
и код оформляйте так:

Код с отступами

Автор: World1С 03.11.10, 16:56

Для начала нужно убрать вот это:

ТабличныйДокумент.Вывести(ВыводимаяОбласть, Выборка.Уровень());


Замените на вот это
ТабличныйДокумент.Вывести();

и попробуйте.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua