Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Конфигурация с нуля на БСП. Как организовать печать?

Конфигурация с нуля на БСП. Как организовать печать?
Я
   buketovav
 
09.07.19 - 10:14
Добрый день, Уважаемые Форумчане!

Платформа - 1С:Предприятие 8.3 (8.3.13.1513).
Библиотека стандартных подсистем (демо) 3.0.3.13

Конфигурация с нуля на БСП. Как организовать печать?

В модуль формы документа добавил код:
[CODE]&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма)

КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
  
    УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект)
  
КонецПроцедуры[/CODE]

В модуль менеджера документа добавил код:
[CODE]Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.Идентификатор = "ПФ_ПутевойЛист";
    КомандаПечати.Представление = "Путевой лист (легковой)";
    КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
    КомандаПечати.СписокФорм    = "ФормаСписка,ФормаДокумента";

КонецПроцедуры

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

    ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;

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


КонецПроцедуры

Функция   СформироватьТабДок1(МассивОбъектов)

    Ссылка = МассивОбъектов[0];
    ТабДокумент = Новый ТабличныйДокумент;
    // ...
     // подготовка ТабДокумента
     // ...
    Макет = Документы.ПутевойЛист.ПолучитьМакет("ПФ_ПутевойЛист");

    ОбластьШапка            = Макет.ПолучитьОбласть("ОбластьШапка");
    ОбластьОрганизация      = Макет.ПолучитьОбласть("ОбластьОрганизация");
    ОбластьЗаданиеВодителю  = Макет.ПолучитьОбласть("ОбластьЗаданиеВодителю");
    ОбластьДвижениеГорючего = Макет.ПолучитьОбласть("ОбластьДвижениеГорючего");
    ОбластьОбратнаяСторона  = Макет.ПолучитьОбласть("ОбластьОбратнаяСторона");
  
    ТабДокумент.Вывести(ОбластьШапка);  
    ТабДокумент.Вывести(ОбластьОрганизация);  
    ТабДокумент.Вывести(ОбластьЗаданиеВодителю);  
    ТабДокумент.Вывести(ОбластьДвижениеГорючего);
  
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
  
    ТабДокумент.Вывести(ОбластьОбратнаяСторона);

При этом команда печати на появляется в документе.
Подскажите, как заставить работать Печать в данном случае.
Заранее благодарю.
  
  
     Возврат ТабДокумент;

КонецФункции[/CODE]
 
 
   novichok79
 
1 - 09.07.19 - 10:17
смотрите типовые, сделайте по аналогии
   novichok79
 
2 - 09.07.19 - 10:32
   buketovav
 
3 - 09.07.19 - 21:46
все сделал по инструкции БСП и получаю сообщение об ошибке - {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(20)}: Значение не является значением объектного типа (АдресТаблицыКоманд)
   АдресНастроек = Форма.ПараметрыПодключаемыхКоманд.АдресТаблицыКоманд;
   PuhUfa
 
4 - 09.07.19 - 21:52
(0) >> При этом команда печати на появляется в документе.
А на форме в КМ есть Подменю "ПодменюПечать"?
   buketovav
 
5 - 09.07.19 - 21:54
сейчас есть, но получаю ошибку
   PuhUfa
 
6 - 09.07.19 - 22:00
У тебя печать же в менеджере документа?
Вот это не надо тогда
КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
   buketovav
 
7 - 09.07.19 - 22:06
да, в менеджере

#Область ПрограммныйИнтерфейс
// Заполняет список команд печати.

// 
// Параметры:

//   КомандыПечати – ТаблицаЗначений – состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//

Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    // Путевой лист

    КомандаПечати = КомандыПечати.Добавить();
    КомандаПечати.МенеджерПечати = "Документ.ПутевойЛист";
    КомандаПечати.Идентификатор  = "ПФ_ПутевойЛист";
    КомандаПечати.Представление  = НСтр("ru = Путевой лист (легковой)'");
    КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецПроцедуры
#КонецОбласти


// Формирует печатные формы.

//
// Параметры:

//  МассивОбъектов – Массив – ссылки на объекты, которые нужно распечатать;
//  ПараметрыПечати – Структура – дополнительные настройки печати;

//  КоллекцияПечатныхФорм – ТаблицаЗначений – сформированные табличные документы (выходной параметр)
//  ОбъектыПечати – СписокЗначений – значение – ссылка на объект;

//                                            представление – имя области, в которой был выведен объект (выходной параметр);
//  ПараметрыВывода – Структура – дополнительные параметры сформированных табличных документов (выходной параметр).

//
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_ПутевойЛист");
    Если НужноПечататьМакет Тогда
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
        КоллекцияПечатныхФорм,
        "ПФ_ПутевойЛист",
        НСтр("ru = 'Путевой лист (легковой)'"),
        ПечатьПутевогоЛиста(МассивОбъектов, ОбъектыПечати),
        ,
        "Документ.ПутевойЛист.ПФ_ПутевойЛист");
    КонецЕсли;
КонецПроцедуры

Функция ПечатьПутевогоЛиста(МассивОбъектов, ОбъектыПечати)
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.КлючПараметровПечати = "ПараметрыПечати_ПутевойЛист";    
    ТабДокумент.АвтоМасштаб = Истина;
    
    Макет = Документы.ПутевойЛист.ПолучитьМакет("ПФ_ПутевойЛист");
    
    ОбластьШапка            = Макет.ПолучитьОбласть("ОбластьШапка");
    ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, ОбъектыПечати); 
    ОбластьОрганизация      = Макет.ПолучитьОбласть("ОбластьОрганизация");
    ЗаполнитьЗначенияСвойств(ОбластьОрганизация.Параметры, ОбъектыПечати); 
    ОбластьЗаданиеВодителю  = Макет.ПолучитьОбласть("ОбластьЗаданиеВодителю");
    ЗаполнитьЗначенияСвойств(ОбластьЗаданиеВодителю.Параметры, ОбъектыПечати); 
    ОбластьДвижениеГорючего = Макет.ПолучитьОбласть("ОбластьДвижениеГорючего");
    ЗаполнитьЗначенияСвойств(ОбластьДвижениеГорючего.Параметры, ОбъектыПечати); 
    ОбластьОбратнаяСторона  = Макет.ПолучитьОбласть("ОбластьОбратнаяСторона");
    ЗаполнитьЗначенияСвойств(ОбластьОбратнаяСторона.Параметры, ОбъектыПечати); 
    
    ТабДокумент.Вывести(ОбластьШапка);    
    ТабДокумент.Вывести(ОбластьОрганизация);    
    ТабДокумент.Вывести(ОбластьЗаданиеВодителю);    
    ТабДокумент.Вывести(ОбластьДвижениеГорючего);
    
    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
    
    ТабДокумент.Вывести(ОбластьОбратнаяСторона);
    
    Возврат ТабДокумент;
КонецФункции
   buketovav
 
8 - 09.07.19 - 22:08
а это в форме документа


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // СтандартныеПодсистемы.ПодключаемыеКоманды

    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды

&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат)
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды


&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    // СтандартныеПодсистемы.ПодключаемыеКоманды

    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // СтандартныеПодсистемы.ПодключаемыеКоманды

    ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

КонецПроцедуры
   buketovav
 
9 - 10.07.19 - 10:57
или что-то неправильно я сделал?
   buketovav
 
10 - 10.07.19 - 11:31
делал по этой инструкции - http://wiki.programstore.ru/dobavlenie-komand-pechati-v-konfiguracii-s-bsp/ - не работает
 
 Рекламное место пустует
   RomaH
 
11 - 10.07.19 - 11:38
(10) старьё
на ИТС смотри - но даже там есть неточности
   RomaH
 
12 - 10.07.19 - 11:40
УправлениеПечатьюПереопределяемый - добавить свой док не забыл?
   craxx
 
13 - 10.07.19 - 11:43
(0) https://youtu.be/0RCSeojdjk4 - видео по работе с печатью с БСП
   RomaH
 
14 - 10.07.19 - 11:46
(13) смешно - с какой минуты смотреть? - там 40 минут ... на ИТС две страницы текста...
ИТС не предлагать?
   buketovav
 
15 - 10.07.19 - 11:51
(12) добавил
   buketovav
 
16 - 10.07.19 - 11:52
(14) по ИТС делал, не получилось. Попробую еще раз все с самого начала, возможно, что где-то что-то упускаю
   buketovav
 
17 - 10.07.19 - 11:52
(11) вот поэтому и не получилось )))
   DrZombi
 
18 - 10.07.19 - 12:00
(0) У БСП есть "секрет" про печатные формы.

Смотри в общий модуль "УправлениеПечатьюПереопределяемый", процедура "ПриОпределенииОбъектовСКомандамиПечати"

Туда надо добавить код по примеру:

    СписокОбъектов.Добавить(Документы.СОГ_ВыдачаБСО);
    СписокОбъектов.Добавить(Документы.СОГ_РасходБСО);
    СписокОбъектов.Добавить(Документы.СОГ_ПеремещениеБСО);
    СписокОбъектов.Добавить(Документы.СОГ_ВводОстатокБСО);

//Внимание

Вариант объектов у тебя возможно другой, он зависит от БСП :)
   DrZombi
 
19 - 10.07.19 - 12:04
+ Вариант формата добавляемых объектов метаданных может быть другой...

К примеру ЗУП 3.1 и БП 3.0, по БСП очень отличаются в формате печатных форм и расположении этих процедур перечисления объектов :)
   buketovav
 
20 - 10.07.19 - 15:09
(18) это сделано давно, не помогает
   RomaH
 
21 - 10.07.19 - 15:13
(20)
В модуль формы документа добавил код:
[CODE]&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма)

КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьК

фишка в том, что у тебя "УправлениеПечатью"
а сейчас - ПодключаемыеКонманды"
 открой уже ИТС
   RomaH
 
22 - 10.07.19 - 15:13
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // СтандартныеПодсистемы.ПодключаемыеКоманды


    ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды


КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды



вижу

ок - что отладчик показывает?
   buketovav
 
23 - 10.07.19 - 16:14
(22) непонятно где теперь тыкать точку останова...
как только нажимаю на печать, то сразу получаю ошибку -
{ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(20)}: Значение не является значением объектного типа (АдресТаблицыКоманд)
    АдресНастроек = Форма.ПараметрыПодключаемыхКоманд.АдресТаблицыКоманд;
   buketovav
 
24 - 10.07.19 - 16:28
у меня был реквизит ПараметрыПодключаемыхКоманд только у него тип был указан "Строка". поменял его на Произвольный и все заработало


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует