Документы и Печать · 13 мин
Как сделать кнопку «Печать» в 1С 8.3
Как добавить кнопку «Печать» в 1С 8.3: внешние печатные формы, конфигуратор, команды формы и макеты. Пошаговая инструкция с примерами кода и разбором ошибок.
Кнопка «Печать» в 1С 8.3 может появиться в форме документа несколькими способами: через типовой механизм дополнительных печатных форм, через добавление команды в конфигураторе или через внешнюю печатную форму, подключённую без изменения конфигурации. Выбор способа зависит от того, есть ли у вас доступ к конфигуратору, стоит ли конфигурация на поддержке и нужна ли кнопка всем пользователям или только вам.
Самый безопасный путь для типовых конфигураций (Бухгалтерия, Управление торговлей, ЗУП) — механизм «Дополнительные отчеты и обработки». Он не требует снятия конфигурации с поддержки, переживает обновления и позволяет назначить печатную форму конкретному виду документов. Изменение конфигурации через конфигуратор даёт больше гибкости, но усложняет обновление и требует аккуратности.
Ниже разобраны оба подхода с точными шагами, примерами кода на встроенном языке и способами проверить результат. Отдельно рассмотрены типичные ошибки: кнопка не появляется, печатная форма выводится пустой, команда недоступна из-за прав.
Способы добавить кнопку печати: что выбрать
В 1С 8.3 существует три рабочих подхода. Первый — внешняя печатная форма (файл .epf), подключаемая через механизм БСП «Дополнительные отчеты и обработки». Кнопка появляется в подменю «Печать» формы документа автоматически. Конфигурация не меняется, обновления не затрагиваются.
Второй способ — добавление команды печати в модуль менеджера объекта и кнопки в общую команду печати. Это стандартный типовой механизм: в модуле менеджера документа описывается процедура ДобавитьКомандыПечати и Печать, после чего кнопка появляется в стандартном меню «Печать» без ручного редактирования формы.
Третий способ — ручное добавление команды формы и кнопки на форму документа в конфигураторе. Он нужен, когда требуется нестандартное поведение: печать с параметрами, выбор принтера, предварительный просмотр в особом виде. Это самый трудоёмкий вариант и он точно требует изменения конфигурации.
Сравнение вариантов
Подходит для типовых конфигураций на поддержке. Не требует изменения конфигурации, сохраняется при обновлении. Ограничение: работает только если в конфигурации есть подсистема дополнительных отчетов и обработок.
Стандартный типовой подход, кнопка встраивается в общее меню «Печать». Требует изменения конфигурации и аккуратности при обновлениях.
Максимальная гибкость: любое расположение, любое поведение. Минус — форма документа изменяется, что усложняет обновление типовой конфигурации.
Подготовка: что проверить перед началом
Перед любыми изменениями убедитесь, что у вас есть резервная копия информационной базы. Для файловой базы достаточно скопировать файл 1Cv8.1CD, для клиент-серверной — сделать выгрузку через конфигуратор (Администрирование → Выгрузить информационную базу) или средствами СУБД.
Проверьте, включён ли механизм дополнительных печатных форм: в пользовательском режиме откройте «Администрирование → Печатные формы, отчеты и обработки» и убедитесь, что установлен флаг «Дополнительные отчеты и обработки». Если флага нет или раздела не видно — у вашей роли недостаточно прав, либо конфигурация не содержит этой подсистемы (характерно для самописных решений).
Также проверьте, не стоит ли конфигурация на полной поддержке с запретом изменений: в конфигураторе откройте «Конфигурация → Поддержка → Настройка поддержки». Если изменения запрещены, способы с модификацией конфигурации потребуют включения возможности изменения, что влияет на дальнейшие обновления.
Способ 1: кнопка через внешнюю печатную форму
Создайте в конфигураторе новую внешнюю обработку: «Файл → Новый → Внешняя обработка». В модуле объекта обработки добавьте функцию СведенияОВнешнейОбработке(), которая сообщает системе, что это печатная форма, к каким объектам она привязана и как называется кнопка.
Пример минимального кода модуля объекта:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Назначение.Добавить("Документ.РеализацияТоваровУслуг");
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Мой акт'");
НоваяКоманда.Идентификатор = "МойАкт";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "МойАкт") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм, "МойАкт", "Мой акт",
СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати));
КонецЕсли;
КонецПроцедуры
Добавьте в обработку макет типа «Табличный документ», нарисуйте в нём области (шапка, строки, подвал) и заполните параметры. Функция СформироватьПечатнуюФорму должна выводить области в табличный документ и присваивать области параметры из данных документа. Сохраните обработку в файл .epf.
В пользовательском режиме откройте «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки», нажмите «Добавить из файла» и выберите сохранённый .epf. После записи откройте документ указанного вида — в меню «Печать» появится новая кнопка с заданным названием.
- 1Создайте внешнюю обработку и опишите СведенияОВнешнейОбработке с видом «Печатная форма»
- 2Добавьте макет табличного документа и процедуру формирования печатной формы
- 3Сохраните обработку в файл .epf
- 4Подключите файл через «Администрирование → Дополнительные отчеты и обработки»
- 5Откройте документ нужного вида и проверьте кнопку в меню «Печать»
Способ 2: команда печати в модуле менеджера документа
Это типовой механизм БСП, используемый во всех современных конфигурациях. Откройте конфигуратор, найдите нужный документ, перейдите в его модуль менеджера (правый клик по документу → «Открыть модуль менеджера»). Добавьте две процедуры.
Первая регистрирует команду печати:
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "МойАкт";
КомандаПечати.Представление = НСтр("ru = 'Мой акт'");
КомандаПечати.Порядок = 10;
КонецПроцедуры
Вторая формирует сам табличный документ:
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "МойАкт") Тогда
ТабличныйДокумент = Новый ТабличныйДокумент;
// вывод областей макета
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм, "МойАкт", "Мой акт", ТабличныйДокумент);
КонецЕсли;
КонецПроцедуры
Макет добавляется в сам документ: в дереве конфигурации раскройте документ, правый клик по «Макеты» → «Добавить», тип — табличный документ. После обновления конфигурации базы данных кнопка появится в стандартном меню «Печать» формы документа, списка и в командной панели — без какого-либо редактирования формы.
Способ 3: кнопка непосредственно на форме документа
Когда нужна отдельная заметная кнопка (например, «Печать договора» рядом с кнопкой «Провести»), добавьте её прямо на форму. Откройте форму документа в конфигураторе, перейдите на вкладку «Команды → Команды формы», добавьте новую команду, например ПечатьДоговора. В свойстве «Действие» создайте обработчик.
Перетащите команду из правой панели в нужное место дерева элементов формы — например, в группу командной панели. В модуле формы обработчик может выглядеть так:
&НаКлиенте
Процедура ПечатьДоговора(Команда)
ТабДок = СформироватьДоговорНаСервере(Объект.Ссылка);
ТабДок.Показать("Договор");
КонецПроцедуры
&НаСервереБезКонтекста
Функция СформироватьДоговорНаСервере(Ссылка)
Макет = Документы.МойДокумент.ПолучитьМакет("Договор");
ТабДок = Новый ТабличныйДокумент;
Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.Номер = Ссылка.Номер;
ТабДок.Вывести(Область);
Возврат ТабДок;
КонецФункции
Обратите внимание: табличный документ формируется на сервере, а показывается на клиенте через метод Показать() или Напечатать(). Прямой вызов ПолучитьМакет в клиентском контексте недоступен в тонком клиенте — это частая причина ошибок.
Проверка результата и типичные ошибки
После подключения откройте документ нужного вида и проверьте три вещи: кнопка видна в меню «Печать» (или на форме), при нажатии открывается предпросмотр с заполненными данными, печатная форма соответствует макету. Если документов выбрано несколько (печать из списка), убедитесь, что формируются все экземпляры.
Как проверить результат
Кнопка видна с заданным названием и активна
Кнопки нет — проверьте Назначение в сведениях обработки и идентификатор команды
Параметры макета заполнены данными документа
Пустые поля — не заданы параметры области или неверное имя параметра
Формируется по одному листу на каждый выбранный документ
Печатается только первый документ — не обрабатывается МассивОбъектов в цикле
Если кнопка появилась, но при нажатии возникает ошибка, откройте журнал регистрации («Администрирование → Журнал регистрации») — там будет текст исключения с указанием строки модуля. Для отладки внешней печатной формы удобно временно открывать её через «Файл → Открыть» и тестировать формирование табличного документа вручную.
Ограничения и безопасная работа с типовыми конфигурациями
Внешние печатные формы — единственный способ, полностью совместимый с автоматическим обновлением типовой конфигурации. Если конфигурация обновляется регулярно, предпочитайте его. Изменения в модуле менеджера и на форме при обновлении потребуют ручного сравнения и объединения модулей.
В файловых базах при подключении внешней обработки платформа может запросить подтверждение безопасности — это штатное поведение защиты от произвольного кода. Подключайте только обработки из доверенных источников: внешняя печатная форма выполняет полноценный код на сервере и теоретически имеет доступ к данным базы.
Если печатная форма нужна сразу для нескольких видов документов, в свойстве Назначение добавьте все нужные типы строками вида «Документ.СчетНаОплатуПокупателю» — одна обработка обслужит все кнопки, а внутри процедуры Печать можно ветвить логику по типу ссылки.
FAQ
Почему кнопка «Печать» не появляется после подключения внешней обработки?
Чаще всего не заполнено свойство «Назначение» в сведениях обработки или указан неверный тип объекта (например, «Документы.Реализация» вместо «Документ.РеализацияТоваровУслуг»). Также проверьте, что вид обработки — именно «Печатная форма», а у пользователя есть права на дополнительные отчеты и обработки.
Можно ли добавить кнопку печати без конфигуратора?
Да, если в конфигурации есть подсистема «Дополнительные отчеты и обработки» — обработку .epf подключают в пользовательском режиме. Но саму обработку всё равно нужно создать в конфигураторе или получить готовой.
Как вывести кнопку печати в списке документов, а не в карточке?
Команды печати, зарегистрированные через модуль менеджера или внешнюю печатную форму, автоматически доступны и в форме списка — кнопка «Печать» там работает для выделенных строк. Отдельной настройки обычно не требуется.
Кнопка есть, но печатная форма выходит пустой. Что проверить?
Проверьте, что в процедуре формирования области макета реально выводятся в табличный документ (метод Вывести или Присоединить), а параметрам областей присваиваются значения. Также убедитесь, что идентификатор в НужноПечататьМакет совпадает с идентификатором команды.
Что будет с кнопкой после обновления конфигурации?
Внешние печатные формы сохраняются при обновлении — они хранятся в базе, а не в конфигурации. Изменения в модуле менеджера и на форме придётся переносить вручную через сравнение и объединение конфигураций.
Как сделать, чтобы кнопка была доступна только определённым пользователям?
Для внешних печатных форм доступ регулируется правами на подсистему дополнительных обработок и настройками быстрого доступа в карточке обработки. Для команд в конфигураторе можно программно проверять роль пользователя в обработчике и отказывать в печати.
Что важно запомнить
Для типовых конфигураций используйте внешнюю печатную форму через «Дополнительные отчеты и обработки» — это не затрагивает конфигурацию и переживает обновления. Полный контроль даёт команда в модуле менеджера документа. Всегда делайте резервную копию и проверяйте результат на копии базы.