Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 15:11

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

Автор buketov.av, 09 июл 2019, 10:17

0 Пользователей и 1 гость просматривают эту тему.

buketov.av

Добрый день, Уважаемые Форумчане!

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

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

В модуль формы документа добавил код:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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


В модуль менеджера документа добавил код:


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

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

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

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

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

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


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

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

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

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

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


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

KOI8-R

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

Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
               ....
               СписокОбъектов.Добавить(Документы.ФормированиеЗаписейРаздела7ДекларацииНДС);
               ////////////////////Свои документы
               СписокОбъектов.Добавить(Документы.МойДокумент1);
               СписокОбъектов.Добавить(Документы.МойДокумент2);
               ....
КонецПроцедуры

(с) Инфостарт

buketov.av

Цитата: KOI8-R от 09 июл 2019, 13:17
В общем модуле УправлениеПечатьюПереопределяемый, в процедуре ПриОпределенииОбъектовСКомандамиПечати  нужно добавить свои созданные документы, для которых нужна печать:

Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
               ....
               СписокОбъектов.Добавить(Документы.ФормированиеЗаписейРаздела7ДекларацииНДС);
               ////////////////////Свои документы
               СписокОбъектов.Добавить(Документы.МойДокумент1);
               СписокОбъектов.Добавить(Документы.МойДокумент2);
               ....
КонецПроцедуры

(с) Инфостарт

боюсь этого не достаточно

АлександрВладимирович

Надо встроить подсистему Подключаемые команды из БСП.

buketov.av

Цитата: АлександрВладимирович от 09 июл 2019, 15:20
Надо встроить подсистему Подключаемые команды из БСП.

это сделано


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

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

Функция ПечатьСчетаЗаказа(МассивОбъектов, ОбъектыПечати)

ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.АвтоМасштаб = Истина;

    Макет = Документы.ПутевойЛист.ПолучитьМакет("ПФ_ПутевойЛист");

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

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

ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

ТабДокумент.Вывести(ОбластьОбратнаяСторона);

    Возврат ТабДокумент;
КонецФункции


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



KOI8-R

Цитата: buketov.av от 09 июл 2019, 10:17

В модуль формы документа добавил код:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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


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

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

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

во всяком случае под бсп 2.4.3 и выше

buketov.av

все сделал по инструкции БСП и получаю сообщение об ошибке - {ОбщийМодуль.ПодключаемыеКомандыКлиент.Модуль(20)}: Значение не является значением объектного типа (АдресТаблицыКоманд)
   АдресНастроек = Форма.ПараметрыПодключаемыхКоманд.АдресТаблицыКоманд;
Добавлено: 10 июл 2019, 16:27


у меня был реквизит ПараметрыПодключаемыхКоманд только у него тип был указан "Строка". поменял его на Произвольный и все заработало

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск