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