Внешние печатные формы в 1С:Предприятие — это инструмент, который позволяет гибко настраивать вывод документов на печать без изменения конфигурации. Они особенно полезны, когда стандартные формы не подходят под требования бизнеса или нужно вывести дополнительные данные, отсутствующие в базовом шаблоне. Например, добавить логотип компании, изменить порядок полей или сгруппировать информацию по-новому.
Для бухгалтеров и кадровых специалистов внешние печатные формы становятся спасением, когда требуется печать ТОРГ-12 с нестандартными реквизитами или акт выполненных работ с уникальной структурой. Программисты же используют их для интеграции с другими системами или создания универсальных шаблонов, которые работают в разных базах. В этой статье разберём, что такое внешние печатные формы, как их создавать, подключать и избегать типичных ошибок.
Что такое внешняя печатная форма и зачем она нужна
Внешняя печатная форма (ВПФ) — это отдельный файл с расширением .epf или .erf, который содержит описание макета печати документа. В отличие от встроенных форм, она хранится вне конфигурации, что даёт несколько ключевых преимуществ:
- 🔄 Гибкость: можно быстро обновлять форму без обновления всей базы 1С.
- 🛠️ Безопасность: изменения не затрагивают основную конфигурацию, снижая риск ошибок.
- 📄 Переносимость: одну форму можно использовать в разных базах (например, 1С:Бухгалтерия и 1С:Управление торговлей).
- 🔧 Расширяемость: поддерживаются сложные макеты с таблицами, изображениями и динамическими данными.
Типичные сценарии применения ВПФ:
- 📝 Печать счетов-фактур с дополнительными реквизитами (например, QR-кодом для ЭДО).
- 📦 Формирование товарных накладных (ТОРГ-12) с нестандартной группировкой товаров.
- 👥 Вывод кадровых приказов с логотипом компании и подписями ответственных лиц.
- 📊 Создание отчётов для клиентов с уникальным дизайном (например, акты сверки).
Важно понимать, что внешняя печатная форма — это не просто "красивый шаблон", а полноценный механизм, который может:
- 🔗 Подтягивать данные из связанных справочников (например, контакты контрагента из карточки организации).
- 📈 Выполнять расчёты "на лету" (например, суммировать НДС по группам товаров).
- 🖼️ Вставлять динамические элементы (штрихкоды, графики, диаграммы).
Отличия внешней печатной формы от встроенной
Чтобы понять, когда стоит использовать ВПФ, сравним её с встроенными формами 1С:
| Критерий | Встроенная печатная форма | Внешняя печатная форма |
|---|---|---|
| Хранение | Внутри конфигурации (в метаданных) | Отдельный файл (.epf или .erf) |
| Изменение | Требует правки конфигурации (возможно нарушение поддержки) | Редактируется без изменения базы |
| Перенос между базами | Невозможно без выгрузки/загрузки конфигурации | Копируется как обычный файл |
| Сложность создания | Требует знаний 1С:Предприятие и прав доступа | Можно создать в Конфигураторе или с помощью Бизнес-Схем |
| Поддержка обновлений | Может "слететь" при обновлении 1С | Не зависит от обновлений конфигурации |
Главный недостаток внешних форм — их нужно подключать вручную для каждого документа. Однако это компенсируется возможностью централизованного управления: например, можно хранить все формы на сетевом диске и обновлять их одновременно для всех пользователей.
Внешние печатные формы идеальны для компаний с нестандартными требованиями к документам или частыми изменениями в шаблонах.
Ещё одно ключевое отличие — производительность. Встроенные формы работают быстрее, так как интегрированы в ядро 1С. ВПФ может тормозить при сложных расчётах или большом объёме данных. Поэтому для массовой печати (например, сотни накладных) лучше оптимизировать код формы или использовать серверные решения.
Как создать внешнюю печатную форму: пошаговая инструкция
Создание ВПФ состоит из трёх этапов: разработка макета, написание кода и подключение к документу. Рассмотрим процесс на примере формы для счета на оплату.
Шаг 1: Подготовка макета
Макет можно создать двумя способами:
- Вручную в Конфигураторе:
- Откройте
Файл → Новыйи выберитеВнешняя печатная форма. - В разделе
Макетыдобавьте новый макет типаТабличный документ. - Настройте структуру таблицы (шапка, табличная часть, подвал) с помощью инструментов 1С
- Откройте
- Создайте шаблон в Excel с закладками (например,
&НомерДокумента,&Дата). - Импортируйте его в 1С через
Файл → Импорт из табличного документа.
Создать новый файл ВПФ в Конфигураторе|
Определить структуру документа (шапка, таблица, подвал)|
Добавить закладки для динамических данных (например, &Номер)|
Проверить выравнивание и шрифты|
Сохранить макет с понятным именем (например, "СчетНаОплату_КлиентXYZ")
-->
Шаг 2: Написание кода
В модуле внешней печатной формы нужно описать, какие данные и откуда будут подставляться в макет. Пример кода для вывода номера и даты счета:
Процедура Заполнить(Документ, Макет)
Макет.Параметры.Дата = Формат(Документ.Дата, "ДФ=dd.MM.yyyy");
Макет.Параметры.Номер = Документ.Номер;
Макет.Параметры.Контрагент = Документ.Контрагент.Наименование;
// Заполнение табличной части
Таблица = Макет.ПолучитьОбласть("Товары");
Для Каждого СтрокаТоваров Из Документ.Товары Цикл
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Товар = СтрокаТоваров.Номенклатура.Наименование;
НоваяСтрока.Количество = СтрокаТоваров.Количество;
НоваяСтрока.Цена = СтрокаТоваров.Цена;
НоваяСтрока.Сумма = СтрокаТоваров.Сумма;
КонецЦикла;
КонецПроцедуры
Обратите внимание на ключевые моменты:
- 🔹
Документ— это объект, для которого вызывается печать (например, СчетНаОплату). - 🔹
Макет.Параметры— здесь хранятся данные для закладок (например,&Дата). - 🔹 Для табличных частей используется метод
ПолучитьОбласть().
Шаг 3: Подключение формы к документу
Готовую ВПФ нужно прикрепить к типу документа:
- Откройте Конфигуратор и найдите документ (например,
СчетНаОплату). - В палитре свойств документа перейдите на вкладку
Печатные формы. - Добавьте новую форму, укажите путь к файлу
.epfи присвойте ей имя (например, "Счет для клиента XYZ"). - Сохраните конфигурацию и обновите базу данных.
После подключения форма станет доступна в списке печатных форм документа в 1С:Предприятии.
1) Правильность пути к файлу .epf (должен быть доступен всем пользователям).
2) Соответствие имени процедуры заполнения (должна называться Заполнить).
3) Права доступа пользователя к внешним обработкам.-->
Типичные ошибки при работе с внешними печатными формами
Даже опытные пользователи 1С сталкиваются с проблемами при настройке ВПФ. Рассмотрим самые распространённые ошибки и способы их исправления.
1. Форма не появляется в списке печатных форм
Причины и решения:
- 🚫 Неверный путь к файлу: проверьте, что файл
.epfнаходится в доступной папке (например, на сетевом диске или в каталоге базы). Путь должен быть указан относительно каталога информационной базы или как полный сетевой путь (например,\\server\1C\Forms\Счет.epf). - 🔄 Не обновлена конфигурация: после подключения формы в Конфигураторе обязательно выполните
Обновить конфигурацию базы данных. - 🔒 Ограничения прав: пользователь должен иметь право на использование
Внешних обработок(проверьте в настройках ролей).
2. Данные не подставляются в макет
Чаще всего это связано с:
- 📝 Опечатками в именах закладок: имя параметра в коде (
Макет.Параметры.Дата) должно точно совпадать с именем закладки в макете (&Дата). - 🔍 Неверным доступом к данным: если вы обращаетесь к
Документ.Контрагент.Наименование, убедитесь, что полеКонтрагентсуществует в документе и заполнено. - 🛑 Ошибками в коде: используйте Отладчик 1С (
F5), чтобы проверить значения переменных.
Как отладить внешнюю печатную форму?
1. Откройте форму в Конфигураторе и установите точку останова на процедуре Заполнить.
2. В 1С:Предприятии вызовите печать документа — выполнение остановится на точке останова.
3. Проверьте значения переменных (например, Документ.Товары) в окне Отладчика.
4. Если данные не подтягиваются, убедитесь, что документ не пустой и права доступа настроены правильно.
3. Проблемы с форматированием
Некорректное отображение таблиц, смещение текста или "разъезжающиеся" колонки обычно возникают из-за:
- 📏 Несовпадения ширины колонок: в макете и в коде ширина ячеек должна совпадать. Используйте фиксированные размеры (например,
Таблица.Колонки.Товар.Ширина = 100). - 🖼️ Неправильных шрифтов: если в макете задан шрифт Arial, а на компьютере пользователя его нет, 1С подставит шрифт по умолчанию, что может сдвинуть текст.
- 📄 Переносов строк: отключите перенос в ячейках с числовыми данными (свойство
ПереносСлов = Ложь).
Для проверки форматирования используйте предварительный просмотр (Файл → Предварительный просмотр в Конфигураторе). Если макет выглядит корректно, но при печати "едет", проблема может быть в драйвере принтера.
4. Медленная работа формы
Если печать занимает несколько минут, проверьте:
- 🐢 Сложные расчёты в коде: избегайте циклов внутри циклов. Например, вместо:
Для Каждого Строка Из Документ.Товары Цикл
Для Каждого СтрокаСправочника Из Справочник.Номенклатура Цикл
// ...
КонецЦикла;
КонецЦикла;
Лучше использовать запросы:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура.Наименование КАК Товар
ИЗ Документ.Товары КАК Товары
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
ПО Товары.Номенклатура = Номенклатура.Ссылка";
Результат = Запрос.Выполнить();
- 📊 Большой объём данных: если в документе тысячи строк, разбейте печать на части или используйте фоновые задания.
- 🖨️ Драйвер принтера: некоторые драйверы (особенно для сетевых принтеров) тормозят генерацию PDF. Попробуйте печатать в
XPSилиPDFчерез виртуальный принтер.
Примеры готовых внешних печатных форм для 1С
Не всегда нужно создавать форму с нуля — многие типовые решения уже разработаны и доступны для скачивания. Вот несколько полезных примеров:
| Назначение формы | Особенности | Где взять |
|---|---|---|
| Счет-фактура с QR-кодом | Автоматическая генерация QR-кода для ЭДО, поддержка ФНС | Infostart, ITS |
| ТОРГ-12 с группировкой по номенклатуре | Объединение строк с одинаковым товаром, вывод итогов по группам | Клерк.Ру |
| Акт выполненных работ для услуг | Шаблон с полями для подписей, печатью и расшифровкой | 1C-Style |
| Универсальный передаточный документ (УПД) | Поддержка всех реквизитов для счетов-фактур и накладных | Поставляется с 1С:Бухгалтерией 3.0 (папка ExtForms) |
При использовании готовых форм обращайте внимание на:
- 🔹 Версию конфигурации: форма для 1С:Бухгалтерии 2.0 может не работать в 3.0.
- 🔹 Лицензию: некоторые формы распространяются платно или требуют указания авторства.
- 🔹 Актуальность: проверьте дату последнего обновления (например, формы для ЭДО могут устареть после изменений законодательства).
Перед использованием чужой внешней печатной формы откройте её в Конфигураторе и проверьте код на наличие "закладок" или потенциально опасных конструкций (например, Выполнить() с динамическим кодом).
Как обновить или заменить внешнюю печатную форму
Если в форме появились ошибки или изменились требования к документу, её нужно обновить. Вот пошаговый алгоритм:
- Создайте резервную копию:
- Скопируйте файл
.epfв отдельную папку. - Экспортируйте настройки подключения формы (если они хранятся в конфигурации).
- Скопируйте файл
- Внесите изменения:
- Откройте форму в Конфигураторе и отредактируйте макет или код.
- Используйте
Сравнить файлы(в контекстном меню), чтобы увидеть различия с предыдущей версией.
- Проверьте форму на тестовой базе с разными документами.
- Убедитесь, что все закладки заполняются корректно.
- Замените файл
.epfна сервере или в общей папке. - Если структура формы изменилась, обновите подключение в Конфигураторе.
Если форма используется многими пользователями, рекомендуется:
- 📅 Вести журнал изменений: фиксируйте дату обновления и список правок (например, в имени файла:
Счет_2026_05_15_v2.epf). - 🔄 Использовать версионирование: храните старые версии форм на случай отката.
- 📋 Документировать изменения: добавьте комментарии в код (например,
// Изменено 15.05.2026: добавлен QR-код по требованию ФНС).
Что делать, если после обновления форма перестала работать?
1. Проверьте, не изменилась ли структура документа в 1С (например, добавилось новое поле).
2. Сравните старую и новую версию формы с помощью Сравнить файлы в Конфигураторе.
3. Временно откатитесь на предыдущую версию, чтобы проверить, в ней ли проблема.
4. Если ошибка возникает у всех пользователей, проверьте права доступа к файлу .epf на сервере.
Интеграция внешних печатных форм с другими системами
ВПФ можно использовать не только для печати на принтер, но и для:
- 📧 Отправки документов по email:
- Сгенерируйте форму в формате
PDFилиMXL(для 1С:Документооборот). - Используйте
ПоместитьФайл()иОтправитьПочту()для автоматической рассылки.
- Сгенерируйте форму в формате
- 🌐 Экспорта в другие программы:
- Выгружайте данные в
ExcelчерезЗаписатьТабличныйДокумент(). - Интегрируйтесь с CRM (например, Битрикс24) через
HTTP-Сервисы.
- Выгружайте данные в
- 📱 Мобильных приложений:
- Генерируйте
PDFна сервере и отправляйте на мобильное устройство. - Используйте 1С:Мобильная платформа для просмотра форм на смартфонах.
- Генерируйте
Пример кода для отправки счета по email:
Процедура ОтправитьСчетНаПочту(Документ)
// Создать печатную форму
ПечатнаяФорма = Новый ПечатнаяФорма(Документ);
Макет = ПечатнаяФорма.ПолучитьМакет("Счет");
// Сгенерировать PDF
ТабДок = Новый ТабличныйДокумент;
Макет.Вывести(ТабДок);
PDF = Новый ДвоичныеДанные();
ТабДок.Записать(PDF, ТипФайлаТабличногоДокумента.PDF);
// Отправить письмо
Почта = Новый Почта;
Письмо = Почта.СоздатьПисьмо();
Письмо.Адресат = Документ.Контрагент.Email;
Письмо.Тема = "Счет №" + Документ.Номер + " от " + Формат(Документ.Дата, "ДФ=dd.MM.yyyy");
Письмо.Текст = "Здравствуйте! Прилагаем счет на оплату.";
Письмо.Вложения.Добавить(PDF, "Счет_" + Документ.Номер + ".pdf");
Почта.Отправить(Письмо);
КонецПроцедуры
Для интеграции с 1С:Документооборот или Диадок используйте стандартные обработки обмена, которые поддерживают внешние печатные формы. Например, в Диадок можно настроить автоматическую отправку счетов-фактур с прикреплённой ВПФ.
При интеграции с внешними системами всегда проверяйте формат выгружаемых данных. Например, для ФНС требуется PDF/A, а для Excel — корректная кодировка (UTF-8).
FAQ: Частые вопросы о внешних печатных формах 1С
Можно ли использовать одну внешнюю печатную форму для разных документов?
Да, но для этого нужно:
- Создать универсальную форму с проверкой типа документа (например, через
ТипЗнч(Документ)). - В макете использовать условное форматирование (например, скрывать ненужные блоки для ТОРГ-12 при печати счета-фактуры).
- Подключить форму ко всем нужным типам документов в Конфигураторе.
Пример кода для проверки типа:
Если ТипЗнч(Документ) = Тип("ДокументСчетНаОплату") Тогда
Макет.Параметры.Заголовок = "СЧЕТ НА ОПЛАТУ";
ИначеЕсли ТипЗнч(Документ) = Тип("ДокументРеализацияТоваровУслуг") Тогда
Макет.Параметры.Заголовок = "ТОВАРНАЯ НАКЛАДНАЯ";
КонецЕсли;
Как сделать внешнюю печатную форму с логотипом компании?
Чтобы добавить логотип:
- Поместите изображение (например,
logo.png) в папку с формой или в каталог базы. - В макете добавьте графический объект и укажите путь к файлу (относительный или абсолютный).
- В коде формы динамически подставляйте путь к логотипу (например, из справочника Организации):
Макет.Параметры.Логотип = Новый Картинка(ПутьКЛоготипу);
Макет.Область("Шапка").Картинка = Макет.Параметры.Логотип;
Для гибкости храните путь к логотипу в константе или справочнике.
Почему при печати внешней формы вылетает ошибка "Не найден макет"?
Эта ошибка возникает, если:
- 🔹 В коде формы указано несуществующее имя макета (проверьте регистр!).
- 🔹 Макет не добавлен в коллекцию
Макетыформы (откройте форму в Конфигураторе и проверьте вкладкуМакеты). - 🔹 Файл формы повреждён (попробуйте пересохранить его или восстановить из резервной копии).
Решение:
- Откройте форму в Конфигураторе и проверьте имя макета в коде (например,
Макет = ПолучаемМакет("Основной")). - Убедитесь, что макет с таким именем существует в списке макетов.
- Пересохраните форму и обновите конфигурацию базы.
Как печатать внешнюю форму в PDF без диалогового окна?
Чтобы автоматически сохранять форму в PDF без запроса у пользователя, используйте следующий код:
Процедура ПечатьВPDF(Документ, ИмяФайла)
ПечатнаяФорма = Новый ПечатнаяФорма(Документ);
ТабДок = ПечатнаяФорма.ПолучитьТабличныйДокумент();
// Настройки PDF
ПараметрыPDF = Новый ПараметрыТабличногоДокументаДляКоллекцииЗначений;
ПараметрыPDF.ИмяФай