8.х Чтобы не разрывался документ

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Natali, 13 мар 2008.

  1. TopicStarter Overlay
    Natali
    Offline

    Natali

    Регистрация:
    13 мар 2008
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Привет всем!!! Принимайте новичка я 3-й день изучаю 1С 8-ку. Задача - вывести расходники на одном листе, но чтобы документ не разрывался, прочитала что есть метод ПроверитьВывод, вроде как применила его, но почему-то не срабатывает, посмотрите, пожалуйста, что где не так я сделала?
    Код:
    Процедура ПечатьОдинЛистНеРазрывать(ТабДок) Экспорт 
    
    Макет = Документы.Расходная.ПолучитьМакет("Печать");
    
    СодержаниеСтр=Новый Массив;
    ОбластьЗаголовок   = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапки       = Макет.ПолучитьОбласть("Шапка");
    ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
    ОбластьТовары      = Макет.ПолучитьОбласть("Товары");
    ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
    ОбластьУслуги      = Макет.ПолучитьОбласть("Услуги");
    ОбластьПодвала     = Макет.ПолучитьОбласть("Подвал");
    
    // Заголовок
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    // Шапка
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Шапка);
    // Товары
    Область = Макет.ПолучитьОбласть("ТоварыШапка");
    ТабДок.Вывести(Область);
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    Для Каждого ТекСтрокаТовары Из Товары Цикл
    ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
    ТабДок.Вывести(ОбластьТовары);
    КонецЦикла;
    // Услуги
    Область = Макет.ПолучитьОбласть("УслугиШапка");
    ТабДок.Вывести(Область);
    ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
    Для Каждого ТекСтрокаУслуги Из Услуги Цикл
    ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
    ТабДок.Вывести(ОбластьУслуги);	
    КонецЦикла;
    // Подвал
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Подвал);
    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;	
    
    Пока ТабДок.ПроверитьВывод(СодержаниеСтр) Цикл 
    СодержаниеСтр.Добавить(ОбластьЗаголовок); //
    СодержаниеСтр.Добавить(ОбластьШапки);        
    СодержаниеСтр.Добавить(ОбластьТоварыШапка);  
    СодержаниеСтр.Добавить(ОбластьТовары);
    СодержаниеСтр.Добавить(ОбластьУслугиШапка);
    СодержаниеСтр.Добавить(ОбластьУслуги);
    СодержаниеСтр.Добавить(ОбластьПодвала);
    КонецЦикла;
    КонецПроцедуры
    
  2. TopicStarter Overlay
    Natali
    Offline

    Natali

    Регистрация:
    13 мар 2008
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    я доработала код, но не правильно доработала, потому что теперь ставятся разрывы после каждого расходника, где я не права? вот код:

    Код:
    Процедура ПечатьОдинЛистНеРазрывать(ТабДок) Экспорт 
    
    Макет = Документы.Расходная.ПолучитьМакет("Печать");
    
    СодержаниеСтр=Новый Массив;
    ОбластьЗаголовок   = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапки       = Макет.ПолучитьОбласть("Шапка");
    ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
    ОбластьТовары      = Макет.ПолучитьОбласть("Товары");
    ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
    ОбластьУслуги      = Макет.ПолучитьОбласть("Услуги");
    ОбластьПодвала     = Макет.ПолучитьОбласть("Подвал");
    
    // Заголовок
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    // Шапка
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Шапка);
    // Товары
    Область = Макет.ПолучитьОбласть("ТоварыШапка");
    ТабДок.Вывести(Область);
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    Для Каждого ТекСтрокаТовары Из Товары Цикл
    ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
    ТабДок.Вывести(ОбластьТовары);
    КонецЦикла;
    // Услуги
    Область = Макет.ПолучитьОбласть("УслугиШапка");
    ТабДок.Вывести(Область);
    ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
    Для Каждого ТекСтрокаУслуги Из Услуги Цикл
    ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
    ТабДок.Вывести(ОбластьУслуги);	
    КонецЦикла;
    // Подвал
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Подвал);
    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;	
    
    Если ТабДок.ПроверитьВывод(СодержаниеСтр) Тогда
    Пока ТабДок.ПроверитьВывод(СодержаниеСтр) Цикл 
    СодержаниеСтр.Добавить(ОбластьЗаголовок); //
    СодержаниеСтр.Добавить(ОбластьШапки);        
    СодержаниеСтр.Добавить(ОбластьТоварыШапка);  
    СодержаниеСтр.Добавить(ОбластьТовары);
    СодержаниеСтр.Добавить(ОбластьУслугиШапка);
    СодержаниеСтр.Добавить(ОбластьУслуги);
    СодержаниеСтр.Добавить(ОбластьПодвала);
    КонецЦикла;
    ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЕсли;	
    
    КонецПроцедуры
    
  3. TopicStarter Overlay
    Natali
    Offline

    Natali

    Регистрация:
    13 мар 2008
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    В общем снова доработка, дело в том что на самом деле здесь работают 2 процедуры, я вначале думала что разрывы и проверки надо ставить в первой и выложила только ее, но теперь понимаю - ошиблась я,
    вот 2 процедуры, понимаю что разрыв страницы и проверку надо ставить во второй - где как раз показываем документ, но вот как, какие параметры переносить и что вообще делать не представляю... помогите, пожалуйста!!! процедуры:

    1: в главном модуле документа Расходная

    Код:
    Процедура ПечатьОдинЛистНеРазрывать(ТабДок) Экспорт 
    
    Макет = Документы.Расходная.ПолучитьМакет("Печать");
    
    СодержаниеСтр=Новый Массив;
    ОбластьЗаголовок   = Макет.ПолучитьОбласть("Заголовок");
    ОбластьШапки       = Макет.ПолучитьОбласть("Шапка");
    ОбластьТоварыШапка = Макет.ПолучитьОбласть("ТоварыШапка");
    ОбластьТовары      = Макет.ПолучитьОбласть("Товары");
    ОбластьУслугиШапка = Макет.ПолучитьОбласть("УслугиШапка");
    ОбластьУслуги      = Макет.ПолучитьОбласть("Услуги");
    ОбластьПодвала     = Макет.ПолучитьОбласть("Подвал");
    
    // Заголовок
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    // Шапка
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Шапка);
    // Товары
    Область = Макет.ПолучитьОбласть("ТоварыШапка");
    ТабДок.Вывести(Область);
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    Для Каждого ТекСтрокаТовары Из Товары Цикл
    ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
    ТабДок.Вывести(ОбластьТовары);
    КонецЦикла;
    // Услуги
    Область = Макет.ПолучитьОбласть("УслугиШапка");
    ТабДок.Вывести(Область);
    ОбластьУслуги = Макет.ПолучитьОбласть("Услуги");
    Для Каждого ТекСтрокаУслуги Из Услуги Цикл
    ОбластьУслуги.Параметры.Заполнить(ТекСтрокаУслуги);
    ТабДок.Вывести(ОбластьУслуги);	
    КонецЦикла;
    // Подвал
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Подвал);
    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Ложь;
    ТабДок.ОтображатьЗаголовки = Ложь;	
    
    КонецПроцедуры
    

    2:Вызывается из Обработки

    Код:
    Процедура ДействияФормыНаОдномЛистеНеРазрывать(Кнопка)
    
    ТабДок = Новый ТабличныйДокумент;
    Выборка=Документы.Расходная.Выбрать(ДатаНачала,КонецДня(ДатаОкончания));
    Пока Выборка.Следующий() Цикл 
    Выборка.ПолучитьОбъект().ПечатьОдинЛистНеРазрывать(ТабДок);
    КонецЦикла;
    
    ТабДок.Показать();
    
    КонецПроцедуры
    
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Какойже длины у вас расходники, что они НЕСКОЛЬКО на одном листе помещаются?
  5. TopicStarter Overlay
    Natali
    Offline

    Natali

    Регистрация:
    13 мар 2008
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Спасибо огромное что откликнулись!!! Мне очень нужна Ваша помощь! Расходники маленькие совсем маленькие, причем по 3-4 может помещаться, но, это так только первое время, но, к сожалению, происходит разрыв документа, а мне надо чтобы если он разрывается, то чтобы весь переносился на другой лист, вот пытаюсь сделать с ПроверитьВывод, а все равно или ставит разрыв после каждого расходника, либо не ставит вообще, может в программе надо что-нибудь с параметрами страниц сделать? я только-только начинаю 1С смотреть, не бросайте меня! где в коде ошибка?
  6. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Код:
    Пока ЕстьРасходники Тогда
    Если НЕ ТабДок.ПроверитьВывод(ОбластьРасходника) Тогда
    // Вставляем разделитель
    КонецЕсли;
    // Выводим область
    КонецЦикла;
    
  7. TopicStarter Overlay
    Natali
    Offline

    Natali

    Регистрация:
    13 мар 2008
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Спасибо огромное сейчас попробую!!! :)

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