8.х Вопрос по печатным формам

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Junior_77, 8 июн 2012.

  1. TopicStarter Overlay
    Junior_77
    Offline

    Junior_77

    Регистрация:
    27 май 2012
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Всем доброго времени суток. Как новичок прошу помощи у более опытных.
    Вопрос такой: как при определенном условии в печатной форме вставить разрыв страницы (ТабДок.ВывестиГоризонтальныйРазделительСтраниц()) и в начале каждой новой страницы добить область шапки. Надеюсь вопрос сформулировал более менее понятно.
    Код:
    Макет = ПолучитьМакетНаСервере();
    ОблЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОблШапка = Макет.ПолучитьОбласть("Шапка");
    ОблЭлемент = макет.ПолучитьОбласть("Элемент");
    ТабДок.Вывести(ОблЗаголовок);
    ОблШапка.Параметры.НомерДня = День(ЭтаФорма.Отчет.СсылкаДок.Дата);
    ТабДок.Вывести(ОблШапка);
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.Дата КАК Дата,
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.Машина КАК Машина,
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.Статус КАК Статус,
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.МоментВремени,
    |    ЗагрузкаМашиныЗаказыКлиентов.ПриоритетПогрузки КАК Приоритет,
    |    СУММА(ЗагрузкаМашиныЗаказыКлиентов.Сумма) КАК Сумма,
    |    //СУММА(ЗагрузкаМашиныЗаказыКлиентов.Объем) КАК Объем,
    |    СУММА(ЗагрузкаМашиныЗаказыКлиентов.ОтправленоМест) КАК ОтправленоМест,
    |    СУММА(ЗагрузкаМашиныЗаказыКлиентов.СданоВТКМест) КАК СданоВТКМест,
    |    ЗагрузкаМашиныЗаказыКлиентов.ЗаказКлиента.Контрагент КАК Контрагент,
    |    Партнеры.ГородОтправки КАК АдресДоставки
    |ИЗ
    |    Документ.ЗагрузкаМашины.ЗаказыКлиентов КАК ЗагрузкаМашиныЗаказыКлиентов
    |	    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
    |	    ПО ЗагрузкаМашиныЗаказыКлиентов.ЗаказКлиента.Партнер = Партнеры.Ссылка
    |ГДЕ
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.Дата = &АктуальнаяДата
    |
    |СГРУППИРОВАТЬ ПО
    |    ЗагрузкаМашиныЗаказыКлиентов.ЗаказКлиента.Контрагент,
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.Дата,
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.Машина,
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.Статус,
    |    ЗагрузкаМашиныЗаказыКлиентов.Ссылка.МоментВремени,
    |    ЗагрузкаМашиныЗаказыКлиентов.ПриоритетПогрузки,   
    |    Партнеры.ГородОтправки";
    
    Запрос.УстановитьПараметр("АктуальнаяДата", ЭтаФорма.Отчет.СсылкаДок.Дата);
    Выборка = Запрос.Выполнить().Выбрать();
    НомПоПорядку = 1;
    Пока Выборка.Следующий() Цикл
    ОблЭлемент.Параметры.Номер = НомПоПорядку;
    ОблЭлемент.Параметры.Время = "08:00";
    ОблЭлемент.Параметры.Контрагент = Выборка.Контрагент;
    ОблЭлемент.Параметры.ГородОтправки = Выборка.АдресДоставки;
    ОблЭлемент.Параметры.Машина = Выборка.Машина;
    ОблЭлемент.Параметры.СуммаОтгрузки = Выборка.Сумма;
    ОблЭлемент.Параметры.ПриоритетПогрузки = Выборка.Приоритет;
    ОблЭлемент.Параметры.ОтправленоМест = Выборка.ОтправленоМест;
    ОблЭлемент.Параметры.СданоМест = Выборка.СданоВТКМест;
    
    //вот здесь нужно сделать проверку: умещается ли очередной элемент
    // на страницу. Если нет то вывести номер страницы, вставить
    // горизонтальный разделитель, вствить область шапки и продолжить
    //вывод строчек (области элементов)
    
    ТабДок.Вывести(ОблЭлемент);
    
    НомПоПорядку = НомПоПорядку + 1;
    
    КонецЦикла;
  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Есть функция ПроверитьВывод

    ТабличныйДокумент (SpreadsheetDocument)
    ПроверитьВывод (CheckPut)

    Синтаксис:
    ПроверитьВывод(<Таблицы>)

    Параметры:

    <Таблицы> (обязательный)
    Тип: Массив; ТабличныйДокумент.
    Массив из проверяемых таблиц или табличный документ.

    Возвращаемое значение:
    Тип: Булево.
    Истина - умещаются; Ложь - в противном случае.

    Описание:
    Проверяет, умещаются ли переданные табличные документы на страницу при печати.

    Доступность:
    Сервер, толстый клиент, внешнее соединение.

    Примечание:
    При возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.

    Пример: Т.Добавить(ШапкаДокумента);
    Т.Добавить(СтрокаДокумента);
    Т.Добавить(ПодвалДокумента);
    Если Не ТабДок.ПроверитьВывод(Т) Тогда
    Сообщить("Документ не умещается на страницу!");
    КонецЕсли;


    См. также:
    ТабличныйДокумент, метод ПроверитьПрисоединение
  3. TopicStarter Overlay
    Junior_77
    Offline

    Junior_77

    Регистрация:
    27 май 2012
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Не сочтите за наглость но попрошу помощи: как мне в данном случае воспользоваться этой функцией? Что мне нужно конкретно вставить в мой код и что передать в эту функцию в качестве параметра? Сам табличный документ (ТабДок) ?
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    можно без разделителя, а вот так

    Код:
    //тут ваш вывод табдока
    ТабДок.Вывести(ОбластьПодвал);
    ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область("ШапкаТаблицы"); //вот эта строка повторяет шапку таблицы на каждой странице
    
    соответственно у меня в макете шапка таблицы - это область ШапкаТаблицы, а вы свою подставьте
  5. AdmMaster-2008
    Offline

    AdmMaster-2008 Опытный в 1С

    Регистрация:
    14 янв 2008
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    Я конечно не спец, но мне кажется полностью внешний вид можно настроить еще в макете, а в модуле формы организовать вывод...

Поделиться этой страницей