Капитально об программе 1С 8.0-8.3-8.4, 7.7

Как добавить внешнюю печатную форму к нетиповому документу 1С 8.3

Если вы добавили свой документ в конфигурацию, то для того чтобы добавить внешнюю печатную форму к документу следует:

  1. Добавить новый Объект  в УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати

Через расширение код будет такой:

&После("ПриОпределенииОбъектовСКомандамиПечати")
Процедура Ас_ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов)
СписокОбъектов.Добавить(Документы.ДоговорНаВыполнениеРаботСФизЛицом);
КонецПроцедуры

2. Также добавим в модуле формы объектп:

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

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

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

3. В модуль менеджера объекта добавить пустые функции (вторая использоваться не будет, но при отсутствии будет ошибка)

Заполнять их следует для реализации встроенных форм.

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

4. при необходимости сделать тоже самое для формы списка документа

5. Добавить внешнюю печатную форму в справочник «Дополнительные отчеты и обработки» и указать размещение команды печати.

В старой БСП вместо первой части следовало добавить тип документа в типы параметров Общей команды «ДополнительныеПечатныеФормыОбъекта», сейчас все с одной стороны дольше, универсальней, но те так прозрачно.