Создание собственного бланка в 1С: от макета до печати

· 9 мин

Содержание

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

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

Что подготовить перед созданием бланка

Прежде чем лезть в конфигуратор, определитесь с тремя вещами.

  • 📄 Образец — бумажный или PDF-бланк, который нужно повторить. Замерьте, где какие поля, сколько строк в табличной части, где печать и подпись.
  • 🧩 Объект-источник — документ или справочник, из которого берутся данные. Реализация, счёт, договор, акт. От него зависит, какие реквизиты пойдут в параметры.
  • 🛠️ Способ подключения — расширение, внешняя обработка или правка конфигурации.

Открыть конфигуратор можно из окна запуска: выбираете базу и жмёте Конфигуратор вместо 1С:Предприятие. Прежде чем менять конфигурацию, снимите резервную копию базы или выгрузите .dt через Администрирование → Выгрузить информационную базу. Ошибка в макете безобидна, но лезть в модули без копии — плохая привычка.

Для типовой базы включите использование расширений и внешних обработок: в режиме предприятия это НСИ и администрирование → Печатные формы, отчёты и обработки (в разных конфигурациях раздел может называться близко). Там же стоит флаг «Дополнительные отчёты и обработки».

Готовность к работе
Выполнено: 0 / 5

Создание макета в конфигураторе

Макет — это и есть ваш будущий бланк. Он живёт либо внутри объекта (у документа есть ветка Макеты), либо в общих макетах конфигурации.

  1. Откройте дерево конфигурации (Конфигурация → Открыть конфигурацию).
  2. Найдите нужный объект, например документ, и разверните его ветку.
  3. На пункте Макеты нажмите правую кнопку → Добавить.
  4. В мастере выберите тип макета «Табличный документ» и задайте имя латиницей, например ПечатьБланка. Имя — это идентификатор, по нему макет вызывают из кода.

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

Рисуйте бланк блоками сверху вниз: шапка, реквизиты сторон, таблица товаров/услуг, итоги, подписи. Каждый блок станет отдельной областью — так макет проще собирать из кода.

Шрифты и размеры выбирайте через свойства ячейки (Шрифт). Для печати на обычном принтере безопасны Arial и Times New Roman 8–12 пт — экзотику принтер может заменить, и вёрстка поедет. Поля страницы и ориентацию (книжная/альбомная) настройте в Таблица → Параметры страницы.

Разметка на области и параметры

Статичный бланк бесполезен — в него нужно подставлять данные. За это отвечают именованные области и параметры.

Область — это именованный диапазон строк или ячеек. Выделите строки шапки, затем Таблица → Имена → Назначить имя и задайте имя, например Шапка. Так же выделите и назовите СтрокаТаблицы, Итого, Подписи. Из кода вы потом получаете область по имени и выводите её нужное число раз — например, строку таблицы по количеству товаров.

Параметр — это ячейка, в которую подставляется значение. Выделите ячейку, откройте её свойства, в поле Заполнение выберите значение «Параметр» и задайте имя параметра (НомерДокумента, ДатаДокумента, Контрагент). В самой ячейке при этом отображается <ИмяПараметра> в угловых скобках — это заглушка, при печати она заменится данными.

Не путайте два режима заполнения:

Режим заполненияЧто делаетКогда использовать
ТекстФиксированная надписьЗаголовки, названия граф, подписи «Руководитель»
ПараметрПодставляет значение из кодаНомер, дата, суммы, наименования
ШаблонТекст с параметрами в [квадратных скобках]«Счёт № [Номер] от [Дата]» в одной ячейке

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

Логотип и фирменный стиль бланка

Логотип добавляют двумя способами, и у каждого своя цена.

Картинкой прямо в макете. На панели вставьте объект Рисунок (Таблица → Рисунки → Картинка), растяните его в шапке и загрузите файл. Просто, но логотип зашит в макет: чтобы поменять, придётся лезть в конфигуратор.

Через параметр-картинку. Задайте ячейке тип значения «Картинка» и передавайте изображение из кода — например, из реквизита организации, где хранится логотип. Так одна форма печатает разные логотипы для разных фирм в базе. Этот вариант сложнее, но для многофирменной базы он единственно разумный.

Несколько практических мелочей по фирменному стилю:

  • 🎨 Фон и линии делайте светло-серыми — на чёрно-белом принтере они читаются, а тонер экономят.
  • 🖼️ Логотип готовьте в PNG с прозрачным фоном и запасом по разрешению: растянутая мелкая картинка на бумаге пикселит.
  • 📐 Держите единые отступы и один-два шрифта на весь бланк — пёстрая вёрстка выглядит кустарно.

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

Вывод бланка на печать из кода

Макет сам по себе ничего не печатает — его собирает и выводит процедура. В управляемом приложении 8.3 печать обычно вешают на команду объекта, а саму сборку делают в модуле менеджера.

Общая логика сборки такая:

Процедура Печать(Экспорт) Экспорт
    ТабДок = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("ПечатьБланка");

    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапка.Параметры.НомерДокумента = Объект.Номер;
    ОбластьШапка.Параметры.ДатаДокумента  = Объект.Дата;
    ТабДок.Вывести(ОбластьШапка);

    ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТаблицы");
    Для Каждого СтрокаТЧ Из Объект.Товары Цикл
        ОбластьСтрока.Параметры.Наименование = СтрокаТЧ.Номенклатура;
        ОбластьСтрока.Параметры.Количество   = СтрокаТЧ.Количество;
        ОбластьСтрока.Параметры.Сумма         = СтрокаТЧ.Сумма;
        ТабДок.Вывести(ОбластьСтрока);
    КонецЦикла;

    ТабДок.Показать();
КонецПроцедуры

Разберём по шагам, что здесь происходит:

  1. Новый ТабличныйДокумент — создаём пустой лист, куда будем складывать области.
  2. ПолучитьМакет("ПечатьБланка") — берём наш макет по имени.
  3. ПолучитьОбласть("Шапка") — вытаскиваем именованную область.
  4. .Параметры.ИмяПараметра = значение — подставляем данные в параметры этой области.
  5. ТабДок.Вывести(...) — дописываем область в итоговый документ. Строки таблицы выводим в цикле по табличной части.
  6. ТабДок.Показать() — открываем готовый бланк на экране, откуда его печатают или сохраняют в PDF.

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

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

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

Подключение бланка без правки конфигурации

Если база типовая, самый чистый путь — внешняя печатная форма.

  1. В конфигураторе создайте внешнюю обработку (Файл → Новый → Внешняя обработка), положите в неё макет и процедуру печати по стандарту БСП.
  2. Сохраните файл .epf на диск.
  3. В режиме предприятия откройте НСИ и администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки.
  4. Нажмите Добавить из файла, выберите ваш .epf, укажите, к какому документу привязать команду печати.

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

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

Тестирование и отладка печатной формы

Готовый бланк почти никогда не печатается правильно с первого раза. Проверяйте по кругу: сформировали — посмотрели — поправили макет.

На что смотреть в первую очередь:

  • Влезает ли шапка и таблица в ширину листа, не обрезаются ли колонки справа.
  • Совпадают ли параметры: не осталось ли в бланке <ИмяПараметра> в угловых скобках — это значит, параметр не заполнен из кода.
  • Переносятся ли длинные наименования или вылезают за край ячейки.
  • Как ведёт себя таблица, когда строк много и бланк уходит на вторую страницу.

Типовые симптомы и что с ними делать:

Диагностика: выберите симптом

Отлаживать код сборки удобно через точку останова: в конфигураторе поставьте её на строку с ПолучитьОбласть, запустите предприятие в режиме отладки (Отладка → Начать отладку) и вызовите печать. На паузе видно, какие значения реально легли в параметры. Это быстрее, чем гадать по пустым ячейкам.

Когда вёрстка устраивает и данные встают на места, прогоните бланк на реальном принтере, а не только на экране: предпросмотр и бумага иногда расходятся по полям на пару миллиметров.

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

Можно ли сделать бланк без конфигуратора, прямо в режиме предприятия?
Нарисовать произвольный макет — нет, редактор макетов живёт только в конфигураторе. Но многие типовые печатные формы в 1С настраиваются из предприятия: меняется шапка, логотип организации, факсимиле подписи и печати. Загляните в карточку организации и в настройки конкретной печатной формы, прежде чем браться за конфигуратор.
Чем область отличается от параметра?
Область — это именованный кусок макета (строки, блок ячеек), который выводят целиком, иногда в цикле. Параметр — одна ячейка внутри области, куда подставляется значение. Сначала получают область, потом заполняют её параметры.
Как вывести бланк сразу в PDF или Excel?
Сформируйте табличный документ как обычно, затем из открытой формы печати используйте сохранение в файл — доступны PDF и формат электронных таблиц. Из кода то же делает метод записи табличного документа в файл с указанием типа.
Почему после обновления конфигурации мой бланк пропал?
Скорее всего, он был сделан правкой типовой конфигурации, и обновление его затёрло. Перенесите бланк во внешнюю обработку или расширение — они переживают обновления, потому что лежат отдельно от типового кода.
Можно ли одной формой печатать бланки для разных организаций с их логотипами?
Да. Сделайте логотип параметром-картинкой и передавайте в него изображение из реквизита текущей организации. Тогда один макет печатает разные шапки в зависимости от того, от чьего имени оформлен документ.