К статье
Практический материал

Документы и Печать · 11 мин

Как добавить кнопку «Печать» в документ 1С 8.3

Пошаговая инструкция: как добавить кнопку печати в документ 1С 8.3 через конфигуратор, команду печати, макет и обработчик. Примеры кода и типичные ошибки.

Кнопка «Печать» в форме документа 1С 8.3 появляется не сама по себе: она связана с командой печати, зарегистрированной для объекта, и с макетом печатной формы. Если команда не подключена, пользователь видит пустое меню «Печать» или не видит его вовсе. Ниже разобраны два рабочих сценария: подключение через подсистему «Печать» из библиотеки стандартных подсистем (БСП) и ручное создание собственной команды без БСП.

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

Проверьте, есть ли в конфигурации подсистема «Печать»

В типовых конфигурациях (Бухгалтерия предприятия, Управление торговлей, Зарплата и управление персоналом и другие на основе БСП) механизм печати уже встроен. Откройте конфигуратор и посмотрите в дереве конфигурации ветку «Общие → Подсистемы» — наличие подсистемы «Печать» означает, что проще всего использовать штатный механизм.

В самописной или сильно переработанной конфигурации БСП может не быть. В этом случае команду печати придётся создавать вручную: добавить команду объекта, макет и программный код формирования табличного документа. Оба пути рассмотрены ниже.

Способ 1: добавить печать через подсистему «Печать» (БСП)

Это рекомендуемый способ для типовых конфигураций. Подсистема сама выводит кнопку «Печать» в форму документа и в командную панель списка — вам нужно только зарегистрировать свою печатную форму в модуле менеджера объекта.

Шаг 1. Откройте модуль менеджера документа

В конфигураторе найдите нужный документ, нажмите правой кнопкой мыши и выберите «Открыть модуль менеджера». Если процедура ДобавитьКомандыПечати уже есть — дополните её, если нет — создайте.

Шаг 2. Зарегистрируйте команду печати

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

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

КомандаПечати = КомандыПечати.Добавить();

КомандаПечати.Идентификатор = "НарядНаРаботы";

КомандаПечати.Представление = НСтр("ru = 'Наряд на работы'");

КомандаПечати.Порядок = 10;

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

Идентификатор должен быть уникальным в рамках объекта — именно по нему подсистема определит, какую печатную форму формировать. Представление — это текст, который увидит пользователь в меню «Печать».

Шаг 3. Создайте макет и процедуру формирования

В ветке «Макеты» документа добавьте макет типа «Табличный документ» и заполните его областями и параметрами. Затем в модуле менеджера добавьте процедуру Печать:

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

ОбъектыПечати, ПараметрыВывода) Экспорт

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "НарядНаРаботы") Тогда

УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(

КоллекцияПечатныхФорм, "НарядНаРаботы", "Наряд на работы",

СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати));

КонецЕсли;

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

Функция СформироватьПечатнуюФорму — ваша собственная: в ней вы получаете макет методом ПолучитьМакет("НарядНаРаботы"), заполняете параметры данными документа и возвращаете готовый табличный документ.

Порядок действий для БСП
  1. 1
    Откройте модуль менеджера документа
  2. 2
    Добавьте процедуру ДобавитьКомандыПечати с описанием команды
  3. 3
    Создайте макет типа «Табличный документ» с областями и параметрами
  4. 4
    Добавьте процедуру Печать и функцию формирования табличного документа
  5. 5
    Обновите конфигурацию базы данных (F7)
  6. 6
    Откройте документ в режиме 1С:Предприятие и проверьте меню «Печать»

Способ 2: собственная команда печати без БСП

Если БСП в конфигурации нет, создайте команду вручную. В дереве конфигурации у документа откройте ветку «Команды» и добавьте новую команду, например «ПечатьНаряда». В свойствах команды укажите тип параметра команды — ссылку на ваш документ, а в поле «Режим использования параметра» выберите «Одиночный» или «Множественный» в зависимости от того, нужна ли печать нескольких документов сразу.

Нажмите кнопку с лупой у поля «Обработчик» — конфигуратор создаст процедуру ОбработкаКоманды в модуле команды. Внутри неё сформируйте табличный документ и покажите его пользователю:

&НаКлиенте

Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)

ТабДок = СформироватьНаСервере(ПараметрКоманды);

ТабДок.Показать("Наряд на работы");

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

&НаСервере

Функция СформироватьНаСервере(Ссылка)

Макет = Документы.НарядНаРаботы.ПолучитьМакет("НарядНаРаботы");

ТабДок = Новый ТабличныйДокумент;

// ... заполнение областей макета данными документа ...

Возврат ТабДок;

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

Чтобы команда появилась в форме документа, откройте форму, в дереве элементов найдите командную панель и перетащите туда команду из панели «Команды формы → Глобальные команды», либо включите стандартное свойство «Изменяет данные» у формы и добавьте кнопку вручную. В форме списка команда с типом параметра «ссылка на документ» появится автоматически.

Табличный документ нельзя передать между клиентом и сервером как параметр произвольной формы без ограничений. Надёжный приём — сформировать табличный документ на сервере, вернуть его из серверной функции и уже на клиенте вызвать метод Показать() или открыть через стандартную форму печати.
ПЗ
Практическое замечание

Альтернатива без изменения конфигурации: внешняя печатная форма

Если прав на изменение конфигурации нет или конфигурация на полной поддержке, используйте внешнюю печатную форму — файл *.epf, подключаемый через «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». В модуле обработки описывается функция СведенияОВнешнейОбработке() с видом «ПечатнаяФорма» и назначением на нужный документ, а также процедура Печать по аналогии с БСП.

Ещё один вариант — расширение конфигурации. В расширении можно заимствовать модуль менеджера документа и дополнить процедуру ДобавитьКомандыПечати своей командой. Расширение не затрагивает основную конфигурацию и снимается одним действием, что удобно для временных печатных форм.

Сравнение способов добавления кнопки печати

Подсистема «Печать» БСП

Штатный путь для типовых конфигураций. Кнопка появляется автоматически, но требует изменения модуля менеджера.

Собственная команда

Подходит для конфигураций без БСП. Полный контроль над поведением, но меню «Печать» и группировку придётся делать самостоятельно.

Внешняя печатная форма (epf)

Не требует изменения конфигурации и прав на конфигуратор. Ограничение: сложнее отлаживать и обновлять при смене структуры метаданных.

Расширение конфигурации

Сохраняет поддержку типовой конфигурации. Ограничение: не все объекты и методы доступны для заимствования.

Как проверить результат

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

Откройте форму просмотра печатного документа и проверьте: все параметры заполнены, нет текста вида «<Параметр не найден>», разрывы страниц стоят корректно, итоговые суммы совпадают с данными документа. Проверьте печать для нескольких документов с разным заполнением — в том числе с пустыми необязательными реквизитами.

Контрольные точки

Как проверить результат

Меню «Печать» в форме документа
Норма

В списке видна новая печатная форма с заданным названием

Тревожный признак

Меню пустое или команды нет — процедура ДобавитьКомандыПечати не вызывается

Открытие печатной формы
Норма

Табличный документ открывается без ошибок

Тревожный признак

Ошибка «Макет не найден» — имя макета в коде не совпадает с именем в конфигураторе

Заполнение данных
Норма

Все параметры подставлены, суммы сходятся с документом

Тревожный признак

Пустые поля или значения из другого документа — ошибка в обходе МассивОбъектов

Права пользователей
Норма

Кнопка доступна пользователям с правами на документ

Тревожный признак

У части пользователей кнопка не видна — не хватает прав на команду или макет

Типичные ошибки и ограничения

Частая причина «кнопка не появилась» — процедура ДобавитьКомандыПечати размещена не в модуле менеджера, а в модуле объекта или формы. Подсистема печати вызывает её только из модуля менеджера. Вторая причина — забытое обновление конфигурации базы данных (клавиша F7 в конфигураторе): изменения в дереве конфигурации сами по себе не применяются к рабочей базе.

Также проверьте права: если команда печати создана вручную, у ролей пользователей должно быть право на её использование. Для внешних печатных форм дополнительно нужно, чтобы в настройках программы была включена работа с дополнительными отчетами и обработками, а у пользователя стояло соответствующее право.

Типичные ошибки
01
Процедура ДобавитьКомандыПечати написана в модуле объекта вместо модуля менеджера — команда не регистрируется
02
Имя макета в ПолучитьМакет() не совпадает с именем в конфигураторе — ошибка при формировании печати
03
Забыто обновление конфигурации базы данных — пользователи не видят изменений
04
Идентификатор команды в ДобавитьКомандыПечати и в процедуре Печать различаются — форма не формируется
05
Изменение типовой конфигурации без расширения — сложности при обновлении релиза

FAQ

Почему кнопка «Печать» есть, но моей формы в списке нет?

Чаще всего процедура ДобавитьКомандыПечати находится не в модуле менеджера документа или в ней ошибка, из-за которой команда не добавляется. Проверьте расположение процедуры и пройдите её отладчиком — вызывается ли она вообще при открытии формы.

Можно ли добавить кнопку печати без доступа к конфигуратору?

Да, через внешнюю печатную форму (файл *.epf), подключаемую в разделе «Администрирование → Печатные формы, отчеты и обработки». Потребуются права администратора в режиме предприятия и включённая настройка использования дополнительных отчетов и обработок.

Как вывести печатную форму сразу на принтер, минуя предпросмотр?

В процедуре Печать подсистемы БСП у команды можно установить свойство СразуНаПринтер (Истина). При ручной реализации вызовите у табличного документа метод Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать) вместо Показать().

Как сделать печать сразу нескольких документов из списка?

В БСП это работает автоматически: пользователь выделяет несколько строк списка и выбирает команду печати — в процедуру Печать придёт массив ссылок в МассивОбъектов. Главное — в функции формирования корректно обходить массив и добавлять разрывы страниц между документами.

Что лучше для типовой конфигурации — доработка или расширение?

Расширение предпочтительнее: оно не нарушает поддержку и не мешает обновлениям. Прямую доработку модуля менеджера оправданно делать, только если расширение по техническим причинам не подходит, например нужный метод недоступен для заимствования.

Почему в печатной форме пустые поля, хотя в документе данные есть?

Обычно имя параметра в макете не совпадает с ключом в структуре данных, которую вы передаёте в Параметры.Заполнить(), либо запрос к данным документа не возвращает нужные поля. Сравните имена параметров в макете и в коде посимвольно — регистр и лишние пробелы имеют значение.

Итог

Что важно запомнить

Кнопка «Печать» в документе 1С 8.3 появляется после регистрации команды печати: через процедуру ДобавитьКомандыПечати в модуле менеджера (для конфигураций с БСП) или через собственную команду объекта. Дополнительно нужны макет и код формирования табличного документа. Для типовых конфигураций безопаснее использовать расширение или внешнюю печатную форму, а все изменения проверять на копии базы.