Создание собственного бланка в 1С: от макета до печати
Содержание
Собственный бланк в 1С — это макет типа «Табличный документ», который рисуют в конфигураторе, наполняют параметрами и выводят на печать процедурой. Путь в общем виде такой: создать макет, разметить его на области, подставить в ячейки данные объекта, добавить логотип и повесить печать на команду. Ниже — как сделать это в 1С 8.3 по шагам, с точными местами в дереве конфигурации и типовыми граблями.
Сразу развилка. Если нужен бланк под типовую конфигурацию (Бухгалтерия, УТ, ЗУП), менять её напрямую не стоит — обновляться потом будет больно. Для 8.3 печатную форму добавляют расширением или подключают внешней обработкой через механизм дополнительных отчётов и обработок. Правка самой конфигурации — вариант только для самописных баз.
Что подготовить перед созданием бланка
Прежде чем лезть в конфигуратор, определитесь с тремя вещами.
- 📄 Образец — бумажный или PDF-бланк, который нужно повторить. Замерьте, где какие поля, сколько строк в табличной части, где печать и подпись.
- 🧩 Объект-источник — документ или справочник, из которого берутся данные. Реализация, счёт, договор, акт. От него зависит, какие реквизиты пойдут в параметры.
- 🛠️ Способ подключения — расширение, внешняя обработка или правка конфигурации.
Открыть конфигуратор
можно из окна запуска: выбираете базу и жмёте Конфигуратор вместо 1С:Предприятие. Прежде чем менять конфигурацию, снимите резервную копию базы
или выгрузите .dt через Администрирование → Выгрузить информационную базу. Ошибка в макете безобидна, но лезть в модули без копии — плохая привычка.
Для типовой базы включите использование расширений и внешних обработок: в режиме предприятия это НСИ и администрирование → Печатные формы, отчёты и обработки (в разных конфигурациях раздел может называться близко). Там же стоит флаг «Дополнительные отчёты и обработки».
Создание макета в конфигураторе
Макет — это и есть ваш будущий бланк. Он живёт либо внутри объекта (у документа есть ветка Макеты), либо в общих макетах конфигурации.
- Откройте дерево конфигурации (
Конфигурация → Открыть конфигурацию). - Найдите нужный объект, например документ, и разверните его ветку.
- На пункте
Макетынажмите правую кнопку →Добавить. - В мастере выберите тип макета «Табличный документ» и задайте имя латиницей, например
ПечатьБланка. Имя — это идентификатор, по нему макет вызывают из кода.
Откроется пустой табличный документ — расчерченная на ячейки сетка, как в редакторе таблиц. Здесь вы и рисуете бланк: объединяете ячейки, задаёте границы, шрифты, выравнивание. Ширину колонок и высоту строк тяните мышью или задавайте точно в свойствах ячейки.
Рисуйте бланк блоками сверху вниз: шапка, реквизиты сторон, таблица товаров/услуг, итоги, подписи. Каждый блок станет отдельной областью — так макет проще собирать из кода.
Шрифты и размеры выбирайте через свойства ячейки (Шрифт). Для печати на обычном принтере безопасны Arial и Times New Roman 8–12 пт — экзотику принтер может заменить, и вёрстка поедет. Поля страницы и ориентацию (книжная/альбомная) настройте в Таблица → Параметры страницы.
Разметка на области и параметры
Статичный бланк бесполезен — в него нужно подставлять данные. За это отвечают именованные области и параметры.
Область — это именованный диапазон строк или ячеек. Выделите строки шапки, затем Таблица → Имена → Назначить имя и задайте имя, например Шапка. Так же выделите и назовите СтрокаТаблицы, Итого, Подписи. Из кода вы потом получаете область по имени и выводите её нужное число раз — например, строку таблицы по количеству товаров.
Параметр — это ячейка, в которую подставляется значение. Выделите ячейку, откройте её свойства, в поле Заполнение выберите значение «Параметр» и задайте имя параметра (НомерДокумента, ДатаДокумента, Контрагент). В самой ячейке при этом отображается <ИмяПараметра> в угловых скобках — это заглушка, при печати она заменится данными.
Не путайте два режима заполнения:
| Режим заполнения | Что делает | Когда использовать |
|---|---|---|
| Текст | Фиксированная надпись | Заголовки, названия граф, подписи «Руководитель» |
| Параметр | Подставляет значение из кода | Номер, дата, суммы, наименования |
| Шаблон | Текст с параметрами в [квадратных скобках] | «Счёт № [Номер] от [Дата]» в одной ячейке |
Режим «Шаблон» удобен, когда в одной ячейке нужно смешать текст и несколько значений. Внутри него имена параметров заключают в квадратные скобки.
Логотип и фирменный стиль бланка
Логотип добавляют двумя способами, и у каждого своя цена.
Картинкой прямо в макете. На панели вставьте объект Рисунок (Таблица → Рисунки → Картинка), растяните его в шапке и загрузите файл. Просто, но логотип зашит в макет: чтобы поменять, придётся лезть в конфигуратор.
Через параметр-картинку. Задайте ячейке тип значения «Картинка» и передавайте изображение из кода — например, из реквизита организации, где хранится логотип. Так одна форма печатает разные логотипы для разных фирм в базе. Этот вариант сложнее, но для многофирменной базы он единственно разумный.
Несколько практических мелочей по фирменному стилю:
- 🎨 Фон и линии делайте светло-серыми — на чёрно-белом принтере они читаются, а тонер экономят.
- 🖼️ Логотип готовьте в PNG с прозрачным фоном и запасом по разрешению: растянутая мелкая картинка на бумаге пикселит.
- 📐 Держите единые отступы и один-два шрифта на весь бланк — пёстрая вёрстка выглядит кустарно.
Крупный логотип в высоком разрешении раздувает макет и замедляет печать больших тиражей. Оптимизируйте картинку до разумного размера, прежде чем вставлять.
Вывод бланка на печать из кода
Макет сам по себе ничего не печатает — его собирает и выводит процедура. В управляемом приложении 8.3 печать обычно вешают на команду объекта, а саму сборку делают в модуле менеджера.
Общая логика сборки такая:
Процедура Печать(Экспорт) Экспорт
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("ПечатьБланка");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = Объект.Номер;
ОбластьШапка.Параметры.ДатаДокумента = Объект.Дата;
ТабДок.Вывести(ОбластьШапка);
ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаТаблицы");
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
ОбластьСтрока.Параметры.Наименование = СтрокаТЧ.Номенклатура;
ОбластьСтрока.Параметры.Количество = СтрокаТЧ.Количество;
ОбластьСтрока.Параметры.Сумма = СтрокаТЧ.Сумма;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
ТабДок.Показать();
КонецПроцедуры
Разберём по шагам, что здесь происходит:
Новый ТабличныйДокумент— создаём пустой лист, куда будем складывать области.ПолучитьМакет("ПечатьБланка")— берём наш макет по имени.ПолучитьОбласть("Шапка")— вытаскиваем именованную область..Параметры.ИмяПараметра = значение— подставляем данные в параметры этой области.ТабДок.Вывести(...)— дописываем область в итоговый документ. Строки таблицы выводим в цикле по табличной части.ТабДок.Показать()— открываем готовый бланк на экране, откуда его печатают или сохраняют в PDF.
Важен и вопрос, где лежит процедура. В управляемом приложении сборку бланка размещают в модуле менеджера объекта, а не в модуле формы — так форму можно вызвать из списка документов, из команды и из обработки печати разом, не дублируя код. Процедуру помечают как серверную: табличный документ собирается на сервере, где доступны данные базы, а показывают его уже на клиенте.
В типовых конфигурациях на БСП печать устроена богаче: процедура принимает массив объектов и складывает формы в коллекцию печатных форм, а система сама показывает их в общей форме печати с выбором принтера и количества копий. Если дорабатываете типовую базу расширением, повторяйте её механизм, а не изобретайте свой Показать(). Точные сигнатуры процедур смотрите в модуле менеджера похожего типового документа — там есть рабочий образец.
Когда бланк длинный и уходит на несколько листов, пригодятся колонтитулы и повтор шапки. Повтор строк на каждой странице задают через Таблица → Параметры страницы → Повторять при печати, а номера страниц и дату печати выводят колонтитулом там же. Тогда таблица на второй и третьей странице не теряет названий граф, а листы не путаются.
Подключение бланка без правки конфигурации
Если база типовая, самый чистый путь — внешняя печатная форма.
- В конфигураторе создайте внешнюю обработку
(
Файл → Новый → Внешняя обработка), положите в неё макет и процедуру печати по стандарту БСП. - Сохраните файл
.epfна диск. - В режиме предприятия откройте
НСИ и администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. - Нажмите
Добавить из файла, выберите ваш.epf, укажите, к какому документу привязать команду печати.
После этого новый бланк появляется в меню Печать у нужного документа — рядом с типовыми, не ломая их и не мешая обновлениям. Второй современный вариант — расширение конфигурации
(доступно с платформы 8.3.6 и новее): добавляете макет и команду в расширении, конфигурация остаётся на поддержке.
Правка самой конфигурации снимает её с поддержки частично или полностью, и каждое обновление превращается в сравнение-объединение. Для типовых баз это последний вариант, а не первый.
Тестирование и отладка печатной формы
Готовый бланк почти никогда не печатается правильно с первого раза. Проверяйте по кругу: сформировали — посмотрели — поправили макет.
На что смотреть в первую очередь:
- Влезает ли шапка и таблица в ширину листа, не обрезаются ли колонки справа.
- Совпадают ли параметры: не осталось ли в бланке
<ИмяПараметра>в угловых скобках — это значит, параметр не заполнен из кода. - Переносятся ли длинные наименования или вылезают за край ячейки.
- Как ведёт себя таблица, когда строк много и бланк уходит на вторую страницу.
Типовые симптомы и что с ними делать:
ОбластьШапка.Параметры.ИмяПараметра совпадает с именем параметра в ячейке — регистр и каждую букву.Таблица → Имена и сверьте список имён.Отлаживать код сборки удобно через точку останова: в конфигураторе поставьте её на строку с ПолучитьОбласть, запустите предприятие в режиме отладки (Отладка → Начать отладку) и вызовите печать. На паузе видно, какие значения реально легли в параметры. Это быстрее, чем гадать по пустым ячейкам.
Когда вёрстка устраивает и данные встают на места, прогоните бланк на реальном принтере, а не только на экране: предпросмотр и бумага иногда расходятся по полям на пару миллиметров.