8.х Разрыв страницы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем AlenkaInt, 15 сен 2014.

  1. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Здравствуйте. Обычные формы, конфа - переписанная УПП. Есть документ, в шапке логотип и адрес, потом идет табличная часть, надо сделать так, чтобы, если строк больше, чем на 1 страницу, на 2-ю выводились логотип и адрес и заголовок таблицы. Это надо делать в макете? Или в модуле объекта добавлять ГоризонтальныйРазделительСтраниц? Спасибо.
  2. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.990
    Симпатии:
    399
    Баллы:
    104
    Есть метод ПРоверитьВыВод. Курите его.
  3. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Так же еще есть метод ПовторятьПриПечатиСтроки() - это в нагрузку к методу ПроверитьВывод()
  4. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    В УПП у тойже торг 12 посмотрите там такой же прием применяется.
    AlenkaInt нравится это.
  5. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Спасибо, посмотрела как в типовой.
    Но у меня почему то этот метод возвращает всегда Истина. И второй раз, на новой странице не печатается шапка..
    Вот код.
    Код:
    Макет = ПолучитьМакет("Макет");
    ОбластьМакетаСтрока = Макет.ПолучитьОбласть("СтрокаТаблицы");
    ОбластьМакетаЗаголовокТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
    ТабДокумент = Новый ТабличныйДокумент;
    
    // Инициализация счетчика страниц
    НомерСтраницы = 1;
    
    // Инициализация счетчика строк
    НомерСтроки = 0;
    КоличествоСтрок = Товары.Количество();
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МойДокумент_Макет";
    
    // Выводим шапку накладной
    ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
    ОбластьМакета.Параметры.Проект = Шапка.Проект;
    ТабДокумент.Вывести(ОбластьМакета);
    //выводим шапку таблицы
    ОбластьМакета = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ТабДокумент.Вывести(ОбластьМакета);
    НомерСтроки = 0;
    
    // Выводим основную часть
    Пока ЗапросТовары.Следующий() Цикл
    
    ОбластьМакета = Макет.ПолучитьОбласть("СтрокаТаблицы");
    
    Если ЗначениеНеЗаполнено(ЗапросТовары.Номенклатура) Тогда
    Сообщить("В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.", СтатусСообщения.Важное);
    Продолжить;
    КонецЕсли;
    НомерСтроки = НомерСтроки + 1;
    ОбластьМакета.Параметры.Номер = НомерСтроки;
    ОбластьМакета.Параметры.Артикул = ЗапросТовары.Номенклатура.Артикул;
    ОбластьМакета.Параметры.Товар = ЗапросТовары.Номенклатура;
    ОбластьМакета.Параметры.ЕдиницаИзмерения = ЗапросТовары.ЕдиницаИзмерения;
    ОбластьМакета.Параметры.Колво = ЗапросТовары.Количество;
    
    // Проверим вывод
    СтрокаСПодвалом = Новый Массив;
    Если НомерСтроки = 1 Тогда
    СтрокаСПодвалом.Добавить(ОбластьМакетаЗаголовокТаблицы); // если первая строка, то должен
    КонецЕсли; // помещаться заголовок
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
    Если НомерСтроки = КоличествоСтрок Тогда // если последняя строка, должен
    //СтрокаСПодвалом.Добавить(ОбластьМакетаВсего); // помещаться и подвал документа
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
    КонецЕсли;
    
    Если НЕ ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда
    
    Если КоличествоСтрок > 1 Тогда
    
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    
    // Очистим итоги по странице
    ИтогоМестНаСтранице = 0;
    ИтогоКоличествоНаСтранице = 0;
    ИтогоСуммаНаСтранице = 0;
    ИтогоНДСНаСтранице = 0;
    ИтогоСуммаСНДСНаСтранице = 0;
    
    // Выведем заголовок таблицы
    НомерСтраницы = НомерСтраницы + 1;
    ОбластьМакетаЗаголовокТаблицы.Параметры.НомерСтраницы = "Страница " + НомерСтраницы;
    ТабДокумент.Вывести(ОбластьМакетаЗаголовокТаблицы);
    
    КонецЕсли;
    
    КонецЕсли;
    
    
    ТабДокумент.Вывести(ОбластьМакета);
    КонецЦикла;
    
    // Выводим подвал накладной
    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    ТабДокумент.Вывести(ОбластьМакета);
    
    Возврат ТабДокумент;
    
  6. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    НУ конечно Вы же всегда проверяете на вывод одно и то же в цикле. и причем это не ОбластьМакета = Макет.ПолучитьОбласть("СтрокаТаблицы");, которую вы выводите
    ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом)
    СтрокаСПодвалом - это области которые в данныый момент вы хотите вывести и система проверяет помещаются они или нет.
    И причем тут ОбластьМакетаЗаголовокТаблицы когда Вы выводите строки таблицы
  7. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    Доброе утро. Почему я не вывожу строку? Я отладчиком смотрела -
    ТабДокумент.Вывести(ОбластьМакета) - это строки ТЧ..
    ОбластьМакетаЗаголовокТаблицы я вывести хочу когда НЕ ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) - Истина, т.е. когда строка не помещается на странице. И тогда надо помимо строк еще вывести шапку, на новой странице..
    Но проблема в том, что НЕ ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) у меня всегда ложь, хоть 100 строк заведи.. И шапка не выводится на 2-ой странице...
  8. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Я и не писал что Вы их не выводите, я написал, что при их выводе вы проверяете поместятся ли при выводе не ОНИ, а другие области
    Код:
    / Проверим вывод
    СтрокаСПодвалом = Новый Массив;
    Если НомерСтроки = 1 Тогда
    СтрокаСПодвалом.Добавить(ОбластьМакетаЗаголовокТаблицы); // если первая строка, то должен
    КонецЕсли; // помещаться заголовок
    СтрокаСПодвалом.Добавить(ОбластьМакетаСтрока);
    Если НомерСтроки = КоличествоСтрок Тогда // если последняя строка, должен
    //СтрокаСПодвалом.Добавить(ОбластьМакетаВсего); // помещаться и подвал документа
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
    КонецЕсли;
    
    Если НЕ ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда
    А суту должна быть в следующем
    Код:
    ОбластьМакета = Макет.ПолучитьОбласть("СтрокаТаблицы");
    
    // Проверим вывод
    СтрокаСПодвалом = Новый Массив;
    
    СтрокаСПодвалом.Добавить(ОбластьМакета);
    СтрокаСПодвалом.Добавить(ОбластьМакетаПодвал);
    
    
    Если НЕ ПроверитьВыводТабличногоДокумента(ТабДокумент, СтрокаСПодвалом) Тогда
    Т.е Вы получили обрасть строки в Проверяемые обласи добавили Эту область (строка) и Подвал и потом проверили поместятся ли они на одной странице или нет
    и тогда уже делае что Вам надо. Вот такой принцип
    AlenkaInt нравится это.
  9. TopicStarter Overlay
    AlenkaInt
    Offline

    AlenkaInt Опытный в 1С

    Регистрация:
    26 фев 2012
    Сообщения:
    1.008
    Симпатии:
    4
    Баллы:
    29
    О! Спасибо! Заработало!
  10. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Да не за что. Просто надо не много пытаться разобраться в том что вы копируете и вставляете

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