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

Тема в разделе "Установка платформы "1С:Предприятие 8"", создана пользователем АртемБууууу, 9 июл 2019.

  1. TopicStarter Overlay
    АртемБууууу
    Offline

    АртемБууууу Опытный в 1С

    Регистрация:
    30 авг 2017
    Сообщения:
    199
    Симпатии:
    1
    Баллы:
    29
    Добрый день, Уважаемые Форумчане!

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

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

    В модуль формы документа добавил код:
    Код:
    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
        УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма)
    
    КонецПроцедуры
    
    &НаКлиенте
    Процедура Подключаемый_ВыполнитьКомандуПечати(Команда)
      
        УправлениеПечатьюКлиент.ВыполнитьПодключаемуюКомандуПечати(Команда, ЭтаФорма, Объект)
      
    КонецПроцедуры
    В модуль менеджера документа добавил код:
    Код:
    Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
    
        КомандаПечати = КомандыПечати.Добавить();
        КомандаПечати.Идентификатор = "ПФ_ПутевойЛист";
        КомандаПечати.Представление = "Путевой лист (легковой)";
        КомандаПечати.Обработчик    = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
        КомандаПечати.СписокФорм    = "ФормаСписка,ФормаДокумента";
    
    КонецПроцедуры
    
    Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
    
        ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
    
        Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_ПутевойЛист") Тогда
             УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПФ_ПутевойЛист", "ПФ_ПутевойЛист",
                СформироватьТабДок1(МассивОбъектов),"Документ.ПутевойЛист.ПФ_ПутевойЛист");
        КонецЕсли;
    
    
    КонецПроцедуры
    
    Функция   СформироватьТабДок1(МассивОбъектов)
    
        Ссылка = МассивОбъектов[0];
        ТабДокумент = Новый ТабличныйДокумент;
        // ...
         // подготовка ТабДокумента
         // ...
        Макет = Документы.ПутевойЛист.ПолучитьМакет("ПФ_ПутевойЛист");
    
        ОбластьШапка            = Макет.ПолучитьОбласть("ОбластьШапка");
        ОбластьОрганизация      = Макет.ПолучитьОбласть("ОбластьОрганизация");
        ОбластьЗаданиеВодителю  = Макет.ПолучитьОбласть("ОбластьЗаданиеВодителю");
        ОбластьДвижениеГорючего = Макет.ПолучитьОбласть("ОбластьДвижениеГорючего");
        ОбластьОбратнаяСторона  = Макет.ПолучитьОбласть("ОбластьОбратнаяСторона");
      
        ТабДокумент.Вывести(ОбластьШапка);  
        ТабДокумент.Вывести(ОбластьОрганизация);  
        ТабДокумент.Вывести(ОбластьЗаданиеВодителю);  
        ТабДокумент.Вывести(ОбластьДвижениеГорючего);
      
        ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
      
        ТабДокумент.Вывести(ОбластьОбратнаяСторона);
    
      
      
         Возврат ТабДокумент;
    
    КонецФункции
    При этом команда печати на появляется в документе.
    Подскажите, как заставить работать Печать в данном случае.
    Заранее благодарю.
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.153
    Симпатии:
    217
    Баллы:
    104
    Насколько помню, для использования подсистемы "Печать" также требуется внедрение подсистемы "Подключаемые команды".
    Попробуйте посмотреть на ИТС. Там есть описание по внедрению каждой из подсистем БСП, и что для этого требуется (какие связанные подсистемы).
    impulse нравится это.
  3. TopicStarter Overlay
    АртемБууууу
    Offline

    АртемБууууу Опытный в 1С

    Регистрация:
    30 авг 2017
    Сообщения:
    199
    Симпатии:
    1
    Баллы:
    29
    Спасибо, как раз этим и занимаюсь.
  4. TopicStarter Overlay
    АртемБууууу
    Offline

    АртемБууууу Опытный в 1С

    Регистрация:
    30 авг 2017
    Сообщения:
    199
    Симпатии:
    1
    Баллы:
    29
    все сделал по инструкции БСП и получаю сообщение об ошибке - {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(20)}: Значение не является значением объектного типа (АдресТаблицыКоманд)
    АдресНастроек = Форма.ПараметрыПодключаемыхКоманд.АдресТаблицыКоманд;
  5. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.153
    Симпатии:
    217
    Баллы:
    104
    Если Вы в форме создавали реквизит "ПараметрыПодключаемыхКоманд", то проверьте его тип. Должен быть Произвольный.
    Также проверьте, все ли необходимые куски кода добавили в модуль формы (при чтении, при создании на сервере, при открытии и т.д.) согласно описанию на ИТС, или согласно примеру в демо-базе БСП (например, в форме документа "_ДемоСчетНаОплатуПокупателю").
  6. TopicStarter Overlay
    АртемБууууу
    Offline

    АртемБууууу Опытный в 1С

    Регистрация:
    30 авг 2017
    Сообщения:
    199
    Симпатии:
    1
    Баллы:
    29
    не создавал реквизит "ПараметрыПодключаемыхКоманд"

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

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

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.153
    Симпатии:
    217
    Баллы:
    104
    В части внедрения подсистемы, вроде, все правильно.
    Процедуру печати не смотрел, но до нее, судя по всему, дело не доходит, ошибка возникает ранее.
    Кстати, в какой момент ошибка возникает?
    Команда печати-то появляется на форме?
    --- Объединение сообщений, 10 июл 2019 ---
    Возможно, есть смысл создать.
    В описании пишут, что его можно не создавать, тогда БСП его создаст программно. Но, как правило, его создают для целей ускорения открытия формы.
    А вдруг это еще и Вашу проблему решит (ругается ведь именно на этот реквизит).
    Последнее редактирование: 10 июл 2019
  8. TopicStarter Overlay
    АртемБууууу
    Offline

    АртемБууууу Опытный в 1С

    Регистрация:
    30 авг 2017
    Сообщения:
    199
    Симпатии:
    1
    Баллы:
    29
    Вы были правы, вот упустил из виду тип и все, не работало ни чего
    у меня был реквизит ПараметрыПодключаемыхКоманд только у него тип был указан "Строка". поменял его на Произвольный и все заработало
  9. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.153
    Симпатии:
    217
    Баллы:
    104
    Отлично.