Шаблон внешней печатной формы
Теги: 1С,Внешняя Печатная форма

# Код реализации

```1c
Функция СведенияОВнешнейОбработке() Экспорт

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();

	ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
	//ПараметрыРегистрации.ВерсияБСП = "2.1.3.2";
	ПараметрыРегистрации.Вставить("Версия", "1.0");
	//ПараметрыРегистрации.Вставить("Информация", "");

	ПараметрыРегистрации.Назначение.Добавить("Документ.ВедомостьНаВыплатуЗарплатыПеречислением");
	//ПараметрыРегистрации.Назначение.Добавить("Документ.*"); // все документы

	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = Метаданные().Представление();   //Синоним
	НоваяКоманда.Идентификатор = Метаданные().ПолноеИмя();   //ПолноеИмя
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	НоваяКоманда.Модификатор = "ПечатьMXL"; // Обязательно

	//НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	//НоваяКоманда.Представление = Метаданные().Представление();
	//НоваяКоманда.Идентификатор = Метаданные().ПолноеИмя();
	//НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
	//
	//НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	//НоваяКоманда.Представление = Метаданные().Представление();
	//НоваяКоманда.Идентификатор = Метаданные().ПолноеИмя();
	//НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();

	//Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты("ОбщийМакет.КомпонентаПечатиШтрихкодов");
  	//ПараметрыРегистрации.Разрешения.Добавить(Разрешение);

	Возврат ПараметрыРегистрации;

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

// Формирует печатные формы
//
// Параметры:
//  МассивОбъектов  - Массив    - ссылки на объекты, которые нужно распечатать;
//  КоллекцияПечатныхФорм - ТаблицаЗначений - сформированные табличные документы
//                                            (выходной параметр).
//  ОбъектыПечати         - СписокЗначений  - значение      - ссылка на объект;
//                                            представление - имя области в которой был выведен объект
//                                            (выходной параметр);
//  ПараметрыВывода       - Структура       - дополнительные параметры сформированных табличных документов
//                                            (выходной параметр);
//
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

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

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

	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.КлючПараметровПечати = Метаданные().ПолноеИмя();

	Макет = ПолучитьМакет("ПФ_MXL_СписокПеречисленийНаЛицевыеСчета");

	// получаем данные для печати
	ВыборкаШапок = ВыборкаДляПечатиШапки(МассивОбъектов);
	ВыборкаСтрок = ВыборкаДляПечатиТаблицы(МассивОбъектов);

	ПервыйДокумент = Истина;

	Возврат ТабличныйДокумент;

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

# Примечания

- было же

- Михаил Солдатов добавил комментарий в Telegrаm:
В актуальных решениях неправильно так таблицу команд формировать. Надо использовать функционал БСП.
Функция СведенияОВнешнейОбработке() Экспорт
  
  ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(""2.2.3.1"");
  
  ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
  ПараметрыРегистрации.Версия = "1.0";
  //ПараметрыРегистрации.Назначение.Добавить("Документ.СписаниеОС");
  ПараметрыРегистрации.БезопасныйРежим = Истина;
  
  ПараметрыРегистрации.Вставить("Информация", НСтр("ru = ''"));
  
  НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
  НоваяКоманда.Представление = НСтр("ru = ''");
  НоваяКоманда.Идентификатор = "";
  НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
  НоваяКоманда.ПоказыватьОповещение = Истина;
  НоваяКоманда.Модификатор = "ПечатьMXL";
  
  //Разрешение = РаботаВБезопасномРежиме.РазрешениеНаИспользованиеВнешнейКомпоненты("ОбщийМакет.КомпонентаПечатиШтрихкодов");
  //ПараметрыРегистрации.Разрешения.Добавить(Разрешение);
  
  Возврат ПараметрыРегистрации;
  
КонецФункции

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

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

Ссылка на комментарий https://t.me/FastCodeClub/2077