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