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

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

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

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

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

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

Ниже разобраны все три способа с конкретными действиями, условиями выбора и проверкой результата. Инструкции ориентированы на конфигурации, построенные на Библиотеке стандартных подсистем (Управление торговлей, Бухгалтерия предприятия, ERP и подобные), где печать реализована через подсистему «Дополнительные отчеты и обработки» и «Печать».

Определяем, какой способ подходит в вашей ситуации

Прежде чем что-то менять, ответьте на три вопроса. Первый: конфигурация типовая или самописная? Для типовой на поддержке прямая доработка нежелательна — она снимает объекты с поддержки и усложняет обновления. Второй: есть ли у вас готовый файл внешней печатной формы (.epf) или макет нужно разрабатывать с нуля? Третий: есть ли у вас права администратора и доступ к конфигуратору?

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

Маршрут решения

Как выбрать действие

Типовая конфигурация, нужна одна-две свои формыПодключите внешнюю печатную форму через «Дополнительные отчеты и обработки»
Форму должны видеть все пользователи, конфигурацию нельзя менятьСоздайте расширение конфигурации с командой печати
Собственная или снятая с поддержки конфигурацияДобавьте команду в модуль менеджера документа и макет в конфигураторе

Проверяем, не скрыта ли команда в типовой конфигурации

Частая ситуация: команда печати существует, но пользователь её не видит. Откройте документ и нажмите кнопку «Печать» в командной панели формы — выпадающий список может содержать несколько форм, и нужная просто находится в подменю «Все действия» или «Ещё».

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

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

Кнопки «Печать» нет вообщеКоманда не добавлена в форму

Есть ли в конфигурации макеты и процедуры печати для этого документа

Кнопка есть, список пустойНет доступных печатных форм

Права пользователя и подключенные внешние формы

Форма не формируется по документуДокумент не проведен или нет данных

Проведен ли документ, заполнены ли обязательные реквизиты

Способ 1: подключаем внешнюю печатную форму

Это основной метод для типовых конфигураций. Внешняя печатная форма — это файл с расширением .epf, который подключается к конкретному виду документов и добавляет туда свою команду печати без изменения конфигурации.

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

Далее откройте список «Дополнительные отчеты и обработки», создайте новый элемент и загрузите файл .epf. Программа автоматически определит тип обработки как «Печатная форма». В табличной части «Принадлежность» укажите, к каким документам привязана форма — например, «Реализация товаров и услуг». Сохраните и запишите элемент.

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

Порядок подключения внешней формы
  1. 1
    Включите флаг «Дополнительные отчеты и обработки» в настройках администрирования
  2. 2
    Откройте список дополнительных отчетов и обработок, создайте новый элемент
  3. 3
    Загрузите файл .epf и укажите принадлежность к виду документа
  4. 4
    Запишите элемент и откройте документ нужного вида
  5. 5
    Нажмите «Печать» и найдите новую команду в списке
  6. 6
    Сформируйте форму по тестовому документу и проверьте данные

Способ 2: добавляем команду через расширение конфигурации

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

В расширение добавьте заимствованный документ, для которого нужна команда печати. Затем добавьте в расширение макет табличного документа с шаблоном печатной формы. Далее потребуется код: в модуле менеджера документа расширения (или в общем модуле расширения) опишите процедуры добавления команды и формирования печатной формы.

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

bsl
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	КомандаПечати = КомандыПечати.Добавить();
	КомандаПечати.Идентификатор = "МояПечатнаяФорма";
	КомандаПечати.Представление = НСтр("ru = 'Моя печатная форма'");
	КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецПроцедуры

Учтите, что расширения имеют ограничения: не все объекты и не все сценарии можно изменить через них. Если заимствованный модуль менеджера содержит сложную типовую логику печати, аккуратно дополняйте её, а не заменяйте полностью — иначе типовые команды печати могут пропасть.

Способ 3: доработка в конфигураторе напрямую

Для собственных конфигураций или конфигураций, снятых с поддержки, команда печати добавляется напрямую. Откройте конфигуратор, найдите нужный документ в дереве конфигурации и добавьте ему макет типа «Табличный документ» — это шаблон будущей печатной формы. Заполните макет областями и параметрами: шапка, строки табличной части, подвал.

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

Функция формирования обычно выглядит так: получаете макет через ПолучитьМакет, последовательно выводите области, заполняя параметры данными документа, и возвращаете готовый табличный документ. Для табличных частей используйте цикл по строкам с выводом области строки на каждой итерации.

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

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

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

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

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

Команда в списке печати
Норма

Команда видна и доступна для нажатия

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

Команды нет или она неактивна

Формирование формы
Норма

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

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

Ошибка выполнения или пустой документ

Данные в форме
Норма

Суммы, даты, номенклатура совпадают с документом

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

Пустые поля или неверные итоги

Другие команды печати
Норма

Типовые формы работают как раньше

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

Пропали или сломались штатные команды

Типичные ошибки при добавлении команды печати

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

Вторая частая проблема — имена областей и параметров макета не совпадают с теми, что используются в коде. Встроенный язык 1С чувствителен к точному написанию: «Шапка» и «шапка» — разные имена. Ошибка «Поле объекта не обнаружено» почти всегда означает опечатку в имени параметра макета.

Третья ошибка — подключение внешней формы не к тому виду документов. Если форма разработана для «Счета на оплату», а вы привязали её к «Реализации», команда появится, но данные будут пустыми или форма выдаст ошибку, потому что структура объектов различается.

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

Ограничения и когда нужен разработчик

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

Сложные сценарии — печать по нескольким документам сразу, вывод штрихкодов, интеграция с ГИСМТ или ЭДО, формы со строгой регламентированной структурой — лучше поручить специалисту по разработке 1С. Ошибка в регламентированной форме может привести к отказу контрагента принять документ.

Итог

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

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

Частые вопросы

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

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

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

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

Почему после обновления конфигурации моя печатная форма пропала?

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

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

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

Форма формируется, но табличная часть пустая. В чем причина?

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

Можно ли одну внешнюю форму привязать к нескольким видам документов?

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