Стандартная подсистема печати в не типовом (новом) документе 1С 8.3

В 1С базе создается новый/нетиповой документ «Новый документ».

Необходимо создать для него печатную форму (внешнюю печатную форму).

После создания внешней печатной формы, при попытке подключения, документ размещения будет «Не определено» и в списке выбора его так же не будет.

Этот новый/нетиповой документ, к которому пытаетесь подключить внешнюю печатную форму, не подключен к подсистеме «печать».

Подсистема «Печать» предназначена для формирования печатных форм объектов на основе табличных макетов (формат MXL) или макетов офисных документов в форматах Microsoft Word и OpenOffice.org Writer.

Подсистема предоставляет инструменты для размещения команд печати на формах в подменю Печать, форму предпросмотра печатных форм, а также различные сервисные возможности по сохранению печатных форм в файлы, отправке по электронной почте.

Для того чтобы подключиться к подсистеме «Печать» документ необходимо доработать.

На первом этапе нужно внедрить подсистему в те объекты, в которых предполагается использовать команды печати:

1. В формах каждого объекта, где необходимо разместить команду печати, в процедуре ПриСозданииНаСервере() добавить следующий код:

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

По умолчанию команды печати располагаются на командной панели формы, но размещение можно переопределить, указав второй параметр в вызовеУправлениеПечатью.ПриСозданииНаСервере:

УправлениеПечатью.ПриСозданииНаСервере(ЭтотОбъект, Элементы.ГруппаКомандПечати);
Динамическое создание команд печати на форме может замедлять ее открытие, поэтому размещать команды печати рекомендуется в статической группе команд вида Подменю.

2. В формах объекта, куда размещается команда печати (кроме форм списков), добавить код подключаемого обработчика команды:

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


3. В формах списка объекта, куда размещается команда печати, добавить код подключаемого обработчика команды:

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

Важно!
Поле Ссылка динамического списка формы должно быть доступно в обработчике команды. Для этого необходимо у реквизита формы, содержащего динамический список, у поля Ссылка поставить флажок Использовать всегда.

4. Добавить экспортную процедуру ДобавитьКомандыПечати в модуль менеджера:

// Заполняет список команд печати.
// 
// Параметры:
// КомандыПечати – ТаблицаЗначений – состав полей см. в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт

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

5. Добавить выбранные объекты в СписокОбъектов в процедуре ПриОпределенииОбъектовСКомандамиПечати общего модуляУправлениеПечатьюПереопределяемый:

// Определяет объекты, в которых есть процедура ДобавитьКомандыПечати().
//
// Параметры:
// СписокОбъектов — Массив — список менеджеров объектов.
//
Процедура ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт СписокОбъектов.Добавить(Справочники._ДемоКонтактныеЛицаПартнеров);
СписокОбъектов.Добавить(Справочники._ДемоКонтрагенты);
СписокОбъектов.Добавить(Справочники._ДемоПартнеры);
СписокОбъектов.Добавить(Справочники._ДемоФизическиеЛица);
СписокОбъектов.Добавить(Справочники.Организации);
СписокОбъектов.Добавить(Документы._ДемоОприходованиеТоваров);
СписокОбъектов.Добавить(Документы._ДемоПеремещениеТоваров);
СписокОбъектов.Добавить(Документы._ДемоСписаниеТоваров); СписокОбъектов.Добавить(Документы._ДемоСчетНаОплатуПокупателю);
КонецПроцедуры