8.х Вопрос по выводу печатных форм в обработке

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

  1. TopicStarter Overlay
    FRMY
    Offline

    FRMY

    Регистрация:
    12 окт 2010
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Есть документы "Реализация товаров" и обработка, которая перебирает их, выводя печатные формы в разных окнах. Нужно, чтобы выводились в одном окне, при этом механизм печати из диалога документа тоже должен работать.

    Процедура печати из объекта документ "Реализация товаров":
    Код:
    Процедура Печать() Экспорт
    ТабДок = Новый ТабличныйДокумент;
    Макет = Документы.РеализацияТоваров.ПолучитьМакет("Печать");
    // Заголовок
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    // Шапка
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Шапка);
    // Товары
    Область = Макет.ПолучитьОбласть("ТоварыШапка");
    ТабДок.Вывести(Область);
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    Для Каждого ТекСтрокаТовары Из Товары Цикл
    ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
    ТабДок.Вывести(ОбластьТовары);
    КонецЦикла;
    // Подвал
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Подвал);
    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    //}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
    КонецПроцедуры
    
    
    Процедура из обработки
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Выборка = Документы.РеализацияТоваров.Выбрать(ДатаНачала, ДатаОкончания);
    Пока Выборка.Следующий() Цикл
    ДокОбъект = Выборка.ПолучитьОбъект();
    ДокОбъект.Печать();
    КонецЦикла;
    КонецПроцедуры
    
    
    Скажем, если это попытаться решить через функцию ПечатьДок(ТекущийДокумент), которая содержит почти всю процедуру Печать кроме последних строк, а в процедуре групповой печати вызывать ее, то как правильно написать такую функцию?
  2. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Просто у вас будет один ТабДок на все документы, только после каждого Вывести() вставляете разделитель страниц.
  3. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Если это разные формы, не получится.
  4. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    А если так:
    Код:
    Процедура Печать(ТабДок=неопределено, Макет=неопределено) Экспорт
    Если ТабДок=неопределено и Макет=неопределено тогда
    ТабДок = Новый ТабличныйДокумент;
    Макет = Документы.РеализацияТоваров.ПолучитьМакет("Печать");
    Конецесли;
    // Заголовок
    Область = Макет.ПолучитьОбласть("Заголовок");
    ТабДок.Вывести(Область);
    // Шапка
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Шапка);
    // Товары
    Область = Макет.ПолучитьОбласть("ТоварыШапка");
    ТабДок.Вывести(Область);
    ОбластьТовары = Макет.ПолучитьОбласть("Товары");
    Для Каждого ТекСтрокаТовары Из Товары Цикл
    ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары);
    ТабДок.Вывести(ОбластьТовары);
    КонецЦикла;
    // Подвал
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.Заполнить(ЭтотОбъект);
    ТабДок.Вывести(Подвал);
    
    Если ТабДок=неопределено и Макет=неопределено тогда
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    Конецесли;
    //}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
    КонецПроцедуры
    
    
    
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Выборка = Документы.РеализацияТоваров.Выбрать(ДатаНачала, ДатаОкончания);
    ТабДок = Новый ТабличныйДокумент;
    Макет = Документы.РеализацияТоваров.ПолучитьМакет("Печать");
    ПервыйВыбор = истина;
    Пока Выборка.Следующий() Цикл
    ДокОбъект = Выборка.ПолучитьОбъект();
    ДокОбъект.Печать(ТабДок,Макет);
    табдок.ВывестиГоризонтальныйРазделительСтраниц();
    КонецЦикла;
    КонецПроцедуры
    
    
    
  5. has
    Offline

    has Опытный в 1С

    Регистрация:
    18 июн 2009
    Сообщения:
    708
    Симпатии:
    0
    Баллы:
    26
    Почему это? Ему просто печать документа из обработки требуется
  6. TopicStarter Overlay
    FRMY
    Offline

    FRMY

    Регистрация:
    12 окт 2010
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Большое спасибо! Все заработало.

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