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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


вижу

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