Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование нескольких макетов в "Табличном Документе"
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Rumus
Здравствуйте. У меня такой вопрос к вам. Делаю печатную форму использую три макета для одного документа, структура макетов отличается. Вывожу все в один ТабДок. В зависимости от количества поданых на печать документов и от их вида вывожу все это дело на печать но выводится криво, строки смещаются. При печати одного документа соответственно выводится один макет, выводится ровно. Думаю что ошибка в разной структуре макета, если я прав то какие есть пути решения этой проблемы.

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

  Возврат ТабличныйДокумент;
alex040269
А зачем разные макеты в один табдок совать?
и код оформляйте так:
Код с отступами
World1С
Для начала нужно убрать вот это:
ТабличныйДокумент.Вывести(ВыводимаяОбласть, Выборка.Уровень());


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

и попробуйте.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.