Формы печати в 1С:Предприятие — это неотъемлемый инструмент для вывода документов на бумагу или в электронный вид. Без правильной настройки печатных форм невозможно обеспечить корректное оформление счетов, накладных, актов и других важных бумаг. Однако многие пользователи сталкиваются с проблемами: текст накладывается, поля съезжают, шрифты не читаются или документ просто не помещается на лист. Эта статья поможет разобраться, как настроить форму печати в 1С 8.3 так, чтобы она работала без сбоев и соответствовала всем требованиям.
Мы рассмотрим не только базовые настройки через интерфейс программы, но и более сложные случаи — редактирование макетов в конфигураторе, работу с табличными документами и даже программное изменение форм через встроенный язык. Особое внимание уделим типичным ошибкам, которые допускают начинающие пользователи, и способам их исправления. Если вы бухгалтер, который хочет самостоятельно поправить печатную форму счета, или программист, которому нужно доработать макет для клиента — здесь найдёте ответы на свои вопросы.
1. Базовая настройка формы печати через интерфейс 1С
Начнём с самого простого — настроек, доступных непосредственно в пользовательском режиме 1С:Предприятие. Большинство стандартных документов (счета, накладные, акты) уже имеют готовые печатные формы, но их можно адаптировать под свои нужды без вмешательства в конфигурацию.
Чтобы открыть настройки печати:
- Откройте нужный документ (например,
Реализация товаров и услуг). - Нажмите кнопку
Печатьв верхней панели инструментов. - В выпадающем меню выберите
Настроить форму...илиПараметры печати(в зависимости от версии).
В открывшемся окне вы сможете:
- 📄 Выбрать принтер и его параметры (ориентация листа, размер бумаги).
- 🔍 Изменить масштаб — полезно, если документ не помещается на страницу.
- 📌 Настроить поля (отступы от краёв листа).
- 🖼️ Добавить логотип компании (если это поддерживается формой).
Если в печатной форме отсутствуют важные реквизиты (например, ИНН или адрес), проверьте, заполнены ли они в Справочнике организаций. Часто проблема кроется не в форме, а в исходных данных.
Обратите внимание: некоторые параметры (например, шрифт по умолчанию) могут быть заблокированы на уровне конфигурации. В этом случае потребуется доступ к режиму конфигуратора.
2. Редактирование макета печатной формы в конфигураторе
Если стандартные настройки не дают нужного результата, придётся работать с макетом формы напрямую. Это требует доступа к конфигуратору 1С и базовых знаний о структуре печатных форм. Макет — это шаблон, который определяет, как будут расположены данные на странице.
Чтобы открыть макет:
- Запустите 1С:Предприятие в режиме
Конфигуратор. - В дереве объектов найдите нужный документ (например,
Документ.РеализацияТоваровУслуг). - Разверните ветку
Формыи выберитеФормаДокумента(илиПечатнаяФорма, если она вынесена отдельно). - В панели свойств найдите поле
Макети нажмите на кнопку...рядом с ним.
В редакторе макетов вы увидите структуру печатной формы. Здесь можно:
- 📝 Изменить текст (например, заменить "Счёт на оплату" на "Счёт-фактура").
- 📏 Переместить поля (например, сдвинуть таблицу с товарами влево).
- 🎨 Настроить стили (шрифт, цвет, выравнивание).
- 🔄 Добавить новые элементы (например, строку с условиями оплаты).
Исправил все опечатки в тексте
Проверял выравнивание полей на разных страницах
Убедился, что все динамические данные (номер документа, дата) подтягиваются корректно
Сохранил резервную копию макета перед изменениями-->
Важно: если вы редактируете макет в типовой конфигурации (например, 1С:Бухгалтерия 3.0), изменения могут сброситься после обновления программы. Чтобы этого избежать, используйте механизм расширений или создайте внешнюю печатную форму.
3. Работа с табличными документами
Многие печатные формы в 1С построены на основе табличных документов — это специальный объект, который позволяет гибко управлять выводом данных в виде таблиц. Если ваша форма содержит таблицу (например, список товаров в накладной), её настройка требует особого подхода.
Основные параметры табличного документа:
| Параметр | Описание | Пример значения |
|---|---|---|
ШиринаКолонки |
Определяет ширину столбца в миллиметрах или символах | 50 (мм) |
ВысотаСтроки |
Высота строки таблицы | 10 (мм) |
ПереноситьТекст |
Разрешает перенос текста на новую строку, если он не помещается | Истина |
ГоризонтальноеПоложение |
Выравнивание текста по горизонтали (Лево, Центр, Право) |
Центр |
Чтобы изменить параметры таблицы:
- В режиме конфигуратора откройте макет печатной формы.
- Найдите в структуре макета элемент типа
ТабличныйДокумент. - Дважды кликните на него, чтобы открыть редактор.
- Выделите нужный столбец или строку и настройте её свойства в правой панели.
Как убрать разрывы страниц в таблице?
Если таблица разрывается между страницами неудачно (например, шапка остаётся на одной странице, а строки уходят на другую), добавьте в макет параметр НеРазрыватьСтроки = Истина для нужного диапазона ячеек. Также проверьте, что высота строк не фиксирована — это может приводить к принудительным разрывам.
Если таблица выходит за пределы страницы, попробуйте:
- 🔍 Уменьшить
ШиринуКолонкидля ненужных столбцов. - 📉 Уменьшить
Шрифт(но не менее8pt, иначе текст будет нечитаем). - 🔄 Перенести часть данных в подвал таблицы (например, итоги).
4. Программное изменение печатной формы
Иногда настройки через интерфейс или редактор макетов недостаточно. В этом случае можно изменить печатную форму программно, используя встроенный язык 1С. Это актуально, например, если нужно динамически скрывать или показывать определенные блоки в зависимости от условий.
Пример кода для изменения печатной формы перед выводом:
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыПечати) Экспорт
// Получаем печатную форму из коллекции
ПечатнаяФорма = КоллекцияПечатныхФорм.Получить("Документ.РеализацияТоваровУслуг.Форма");
// Меняем заголовок в зависимости от типа документа
Если ОбъектыПечати[0].ВидДокумента = ВидДокумента.СчетФактура Тогда
ПечатнаяФорма.Параметры.Заголовок = "Счёт-фактура №" + ОбъектыПечати[0].Номер;
Иначе
ПечатнаяФорма.Параметры.Заголовок = "Товарная накладная №" + ОбъектыПечати[0].Номер;
КонецЕсли;
// Скрываем столбец "Скидка", если все скидки равны 0
СкрыватьСкидку = Истина;
Для Каждого Строка Из ОбъектыПечати[0].Товары Цикл
Если Строка.Скидка <> 0 Тогда
СкрыватьСкидку = Ложь;
Прервать;
КонецЕсли;
КонецЦикла;
Если СкрыватьСкидку Тогда
ПечатнаяФорма.Таблица.Колонки.Скидка.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
Этот код:
- 🔖 Меняет заголовок документа в зависимости от его типа.
- 👁️ Скрывает столбец "Скидка", если все скидки равны нулю.
- 🔄 Динамически подстраивает форму под данные.
Через интерфейс 1С (пользовательский режим)
В конфигураторе (редактирование макетов)
Программно (встроенный язык)
Создаю внешние печатные формы-->
Чтобы этот код заработал, его нужно разместить в модуле объекта (документа) или в общем модуле, если логика используется для нескольких типов документов. Не забывайте про тестирование — программные изменения могут конфликтовать с обновлениями конфигурации.
5. Создание внешней печатной формы
Если вы не хотите вмешиваться в типовую конфигурацию, лучшее решение — создать внешнюю печатную форму. Это отдельный файл (.erf), который подключается к базе и не затрагивает основную конфигурацию. Преимущества:
- 🛡️ Безопасность — не ломает типовую конфигурацию.
- 🔄 Гибкость — можно быстро обновлять форму без перезагрузки базы.
- 📂 Переносимость — одну форму можно использовать в разных базах.
Как создать внешнюю печатную форму:
- В режиме конфигуратора выберите
Файл → Новая внешняя печатная форма. - Укажите тип объекта, для которого создаётся форма (например,
Документ.РеализацияТоваровУслуг). - Спроектируйте макет формы (аналогично редактированию стандартного макета).
- Сохраните файл с расширением
.erf. - В пользовательском режиме подключите форму через
Все функции → Внешние печатные формы.
Внешние печатные формы — лучший выбор для доработок, так как они не конфликтуют с обновлениями 1С и легко переносятся между базами.
Пример структуры внешней печатной формы:
&НаСервере
Процедура Печать(Объект, КоллекцияПечатныхФорм, ПараметрыПечати)
// Создаём новый макет
Макет = КоллекцияПечатныхФорм.Добавить("МояФорма");
// Загружаем шаблон из файла
Макет.ЗагрузитьИзФайла(ПутьКФайлуШаблона);
// Заполняем данные
Макет.Параметры.Дата = Объект.Дата;
Макет.Параметры.Номер = Объект.Номер;
// Формируем таблицу товаров
Таблица = Макет.Область("Таблица");
Для Каждого Строка Из Объект.Товары Цикл
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.Товар = Строка.Номенклатура;
НоваяСтрока.Количество = Строка.Количество;
КонецЦикла;
КонецПроцедуры
Внешние формы особенно удобны для интеграции с другими системами (например, если нужно выгружать документы в PDF с особым дизайном) или для специфических отраслевых требований (например, медицинские бланки).
6. Типичные ошибки и их исправление
Даже опытные пользователи 1С иногда сталкиваются с проблемами при настройке печатных форм. Рассмотрим самые распространённые ошибки и способы их устранения.
Проблема 1: Текст накладывается или обрезается
- 🔹 Причина: слишком маленькие поля или фиксированная высота строк.
- 🔧 Решение:
- Увеличьте
Отступыв настройках макета. - Включите
ПереноситьТекстдля ячеек с длинным текстом. - Проверьте, не установлена ли фиксированная
ВысотаСтроки.
- Увеличьте
Проблема 2: Документ не помещается на одну страницу
- 🔹 Причина: слишком большая таблица или неправильные поля страницы.
- 🔧 Решение:
- Уменьшите
Шрифт(но не менее8pt). - Настройте
Ориентацию страницынаАльбомная. - Разбейте документ на несколько страниц с помощью параметра
РазрыватьСтраницу = Истина.
- Уменьшите
Проблема 3: Не отображаются динамические данные (номер, дата)
- 🔹 Причина: неверное имя параметра в макете или отсутствие данных в документе.
- 🔧 Решение:
- Проверьте, совпадает ли имя параметра в макете с именем в коде (например,
НомерДокумента). - Убедитесь, что поле заполнено в самом документе.
- Обновите макет после изменений (
Файл → Обновить).
- Проверьте, совпадает ли имя параметра в макете с именем в коде (например,
Почему печатная форма открывается пустой?
Чаще всего это происходит из-за ошибок в коде, который формирует данные для макета. Проверьте:
1. Есть ли обработчик события Печать в модуле документа.
2. Корректно ли передаются параметры в макет (например, Макет.Параметры.Дата = Объект.Дата).
3. Нет ли ошибок в журнале регистрации (Администрирование → Журнал регистрации).
Если проблема не решается, попробуйте сбросить настройки печати до стандартных:
- Откройте документ и вызовите печатную форму.
- Нажмите
Настроить форму → Сбросить настройки. - Сохраните изменения и попробуйте распечатать снова.
7. Оптимизация печатных форм для разных принтеров
Одна и та же печатная форма может выглядеть по-разному на различных принтерах. Это связано с особенностями драйверов, поддерживаемыми разрешениями и настройками по умолчанию. Чтобы избежать проблем:
Советы по настройке:
- 🖨️ Используйте универсальные шрифты (например,
ArialилиTimes New Roman), которые есть на всех устройствах. - 📏 Настройте поля с запасом: не менее
10 ммот краёв листа. - 🔄 Тестируйте на разных принтерах, особенно если документы печатаются в нескольких офисах.
- 📄 Используйте
PDFдля передачи: если документ нужно отправить контрагенту, лучше сгенерироватьPDF, чем полагаться на печать на его принтере.
Чтобы настроить принтер по умолчанию для печатной формы:
- Откройте документ и вызовите окно печати (
Файл → Печать). - Выберите нужный принтер в выпадающем списке.
- Нажмите
Свойстваи настройте параметры (ориентация, размер бумаги, качество печати). - Сохраните настройки как
По умолчанию(если такая опция доступна).
Если документ печатается с искажениями (например, таблица съезжает), попробуйте в настройках принтера отключить опцию "Масштабировать под размер страницы".
Для сетевых принтеров дополнительно проверьте:
- 🔌 Драйверы — они должны быть актуальными на всех компьютерах.
- 📡 Сетевые настройки — принтер должен быть доступен по IP или имени.
- 🔒 Права доступа — пользователи 1С должны иметь разрешение на печать.
8. Автоматизация печати: пакетный вывод и экспорт
Если вам нужно распечатать десятки документов за раз, ручной вывод каждого станет слишком долгим. В 1С есть инструменты для пакетной печати и экспорта в другие форматы.
Способы автоматизации:
- 📑 Пакетная печать:
- Выделите несколько документов в журнале (например,
Реализация товаров). - Нажмите
Ещё → Печать → Пакетная печать. - Выберите принтер и настройки.
- Выделите несколько документов в журнале (например,
- 📎 Экспорт в
PDF/Excel:- В окне печати выберите
Сохранить как PDFилиЭкспортировать в Excel. - Укажите папку для сохранения.
- В окне печати выберите
- ⚙️ Настройка через обработки:
- Используйте стандартные обработки (например,
Печать документов.epf). - Или создайте свою обработку с нужной логикой.
- Используйте стандартные обработки (например,
Пример кода для пакетной печати документов в PDF:
Процедура ПакетнаяПечатьВPDF(МассивДокументов)
Для Каждого Документ Из МассивДокументов Цикл
// Формируем печатную форму
ПечатнаяФорма = Документ.ПолучитьПечатнуюФорму();
// Сохраняем в PDF
ИмяФайла = КаталогВременныхФайлов() + "Документ_" + Документ.Номер + ".pdf";
ПечатнаяФорма.Записать(ИмяФайла, ТипФайлаPDF);
// Открываем файл (опционально)
ОткрытьФайл(ИмяФайла);
КонецЦикла;
КонецПроцедуры
Для регулярной автоматизации (например, еженедельная печать отчётов) можно:
- 🕒 Настроить регламентное задание в 1С.
- 🤖 Использовать внешние скрипты (например, на Python с библиотекой
py1c). - 📂 Интегрировать с системами документооборота (например, Диадок, Контур.Диадок).
Автоматизация печати экономит время, но требует предварительной настройки. Всегда тестируйте пакетный вывод на небольшом количестве документов перед массовой печатью.
Если вам нужно не только распечатать, но и отправить документы по email, используйте обработку П отправка писем.epf или настройте интеграцию с Microsoft Outlook через COM-объект.
FAQ: Частые вопросы по настройке печатных форм в 1С
Как вернуть стандартную печатную форму, если я её испортил?
Если вы редактировали макет в конфигураторе, можно:
- Сравнить текущую версию с типовой через
Конфигурация → Сравнить конфигурации. - Восстановить макет из резервной копии (если она есть).
- Обновить конфигурацию — это вернёт стандартные формы (но удалит все ваши изменения!).
Для внешних печатных форм просто удалите файл .erf и подключите заново.
Можно ли сделать печатную форму с цветным фоном или логотипом?
Да, но с оговорками:
- 🎨 Цветной фон можно добавить через настройки ячеек в макете (вкладка
Фон). - 🖼️ Логотип вставляется как картинка (формат
JPEGилиPNG) через параметрКартинкав макете.
Однако учтите, что:
- Цветная печать может не поддерживаться всеми принтерами.
- Логотип увеличивает размер файла при экспорте в
PDF.
Почему при печати из 1С документ выходит бледным или с полосами?
Это типичная проблема драйверов принтера. Попробуйте:
- 🔄 Обновите драйвер принтера до последней версии.
- 📄 В настройках печати выберите
Высокое качествовместоЧерновик. - 🖨️ Проверьте уровень тонера (если принтер лазерный).
- 🔧 В настройках принтера отключите
Экономия тонера.
Если проблема остаётся, экспортируйте документ в PDF и печатайте из стандартного просмотрщика.
Как сделать, чтобы в печатной форме отображались только нужные столбцы?
Есть два способа:
- Через макет:
- Откройте макет в конфигураторе.
- Удалите или скрыйте ненужные колонки (параметр
Видимость = Ложь).
- В обработчике
Печатьдобавьте условие для скрытия столбцов (пример есть в разделе 4).
Для динамического скрытия (например, если столбец пустой) используйте код:
Если ПустаяСтрока(Объект.ДополнительноеПоле) Тогда
ПечатнаяФорма.Таблица.Колонки.ДополнительноеПоле.Видимость = Ложь;
КонецЕсли;
Можно ли настроить печатную форму так, чтобы она автоматически отправлялась на email?
Да, для этого:
- Создайте обработку, которая будет:
- Формировать печатную форму.
- Сохранять её в
PDF. - Отправлять на email через
Почта.СообщениеилиCOM-объект Outlook. - Настройте регламентное задание для автоматического запуска обработки.
Пример кода для отправки PDF на email:
Процедура ОтправитьНаПочту(Документ, EmailПолучателя)
// Формируем печатную форму
ПечатнаяФорма = Документ.ПолучитьПечатнуюФорму();
// Сохраняем во временный PDF
ИмяФайла = КаталогВременныхФайлов() + "Документ.pdf";
ПечатнаяФорма.Записать(ИмяФайла, ТипФайлаPDF);
// Отправляем письмо
Почта = Новый Почта;
Сообщение = Почта.СоздатьСообщение();
Сообщение.Текст = "Документ №" + Документ.Номер + " от " + Формат(Документ.Дата, "ДФ=dd.MM.yyyy");
Сообщение.Тема = "Документ от " + Документ.Контрагент;
Сообщение.Получатели.Добавить(EmailПолучателя);
Сообщение.Вложения.Добавить(ИмяФайла);
Почта.Отправить(Сообщение);
КонецПроцедуры
Для массовой рассылки используйте цикл по выборке документов.