Имя: Пароль:
1C
1С v8
УФ: Печать документа
0 lisicin
 
30.11.16
03:57
Здравствуйте, прошу подсказать, переделываю документ под УФ в БП 3.0, застопорился на вопросе печати. Привожу код.

В модуле формы:

&НаКлиенте
Процедура Печать(Команда)
    ПечатьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПечатьНаСервере()
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ДокументОбъект.Печать("Квитанция");
КонецПроцедуры

В модуле объекта:

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

Функция ПечатьДокумента()

    Макет = ЭтотОбъект.ПолучитьМакет("Квитанция");
    ТабДок = Новый ТабличныйДокумент;
    Запрос = Новый Запрос;
    Запрос.Текст =
    
    \\делаем запрос

    \\заполняем области и параметры
    
    ТабДок.Вывести(ОбластьПодвал);  
    ТабДок.ПолеСверху = 0;
    ТабДок.ПолеСлева  = 2;
    ТабДок.ПолеСнизу  = 0;
    ТабДок.ПолеСправа = 5;
    ТабДок.АвтоМасштаб        = Истина;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДок.ИмяПараметровПечати = "Квитанция";
    
    Возврат ТабДок;

КонецФункции

Как я понимаю в БП 2.0 вывод на печать осуществлялся строчкой
//УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект), НепосредственнаяПечать);

Чем и как мне заменить его в 3.0?
1 lisicin
 
30.11.16
04:00
(0) В первой процедуре модуля объекта строка
Возврат ТабДокумент;
лишняя.
2 Рэйв
 
30.11.16
07:07
Процедура Печать
переделай в функцию
и
//------
&НаКлиенте
Процедура Печать(Команда)
    ТабДок=ПечатьНаСервере();
    ТабДок.показать();
КонецПроцедуры

&НаСервере
Функция ПечатьНаСервере()
    ДокументОбъект = РеквизитФормыВЗначение("Объект");
    ТабДок=ДокументОбъект.Печать("Квитанция");
    Возврат ТабДок;
КонецПроцедуры
3 Рэйв
 
30.11.16
07:07
хотя на мой вкус слишком много лишних вызовов. Можно было сделать экспортной Функция ПечатьДокумента() , напрямую вызвать ее с клиента и не париться
4 Рэйв
 
30.11.16
07:08
ну или через
&НаСервере
Процедура ПечатьНаСервере()
5 lisicin
 
30.11.16
09:09
(2) Да, именно к такому варианту в результате своих изысканий я и пришёл, не хватало только
ТабДок.показать();
всё искал что-нибудь, связанное с печатью :)

Спасибо!
6 lisicin
 
12.12.16
01:22
Подскажите пожалуйста.
Есть внутренняя обработка, которая по документам Закупка создает и проводит документ Поступление. Теперь нужно чтобы при необходимости каждое созданное поступление выводилось на печать по форме ТОРГ12. Я так понимаю здесь велосипед изобретать не надо и можно обратиться к встроенной процедуре, но не могу найти к какой.

Платформа 8.3, конфигурация БП 3.0
7 Torquader
 
12.12.16
01:46
(6) Наверное, нужная процедура живёт в обработчике нажатия на кнопку "печать".