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