Как добавить особые печатные формы в 1С для конкретных контрагентов без изменения конфигурации?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Часто в работе бухгалтера или менеджера возникает задача печати специфических документов для определенных клиентов. Например, для одного контрагента необходимо выводить в счете дополнительные условия или примечания, в то время как для всех остальных используется типовая форма. Разберем, как реализовать это эффективно, не прибегая к сложной доработке конфигурации, которая может «отломиться» при обновлении.

Использование встроенного механизма БСП для создания макетов

Начиная с актуальных версий Библиотеки стандартных подсистем (БСП), встроенных в такие программы, как 1С:Бухгалтерия 3.0 и 1С:Зарплата и Управление Персоналом 3.1, разработчики 1С предоставили пользователям возможность создавать печатные формы без использования Конфигуратора. Рассмотрим, как это работает по шагам:

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

Преимущества этого подхода:

Автоматизация выбора печатной формы через расширения

Хотя встроенный механизм позволяет создавать формы, он не поддерживает автоматический выбор макета в зависимости от условий (например, выбора формы именно для «того самого» контрагента). Чтобы исключить человеческий фактор и необходимость ручного выбора из списка, мы рекомендуем использовать Расширения конфигурации.

Рассмотрим, как реализовать такую логику:

  1. Создайте новое Расширение конфигурации в режиме Конфигуратора.
  2. В расширении добавьте команду печати или перехватите (через Обработчик события) процесс формирования печатной формы документа.
  3. В коде расширения пропишите условие проверки контрагента:

// Пример логики подмены макета в расширении
Процедура ПриПечати(ДокументСсылка)
    Если ДокументСсылка.Контрагент = НашОсобыйКлиент Тогда
        // Подмена стандартного макета на ваш собственный
        ИспользоватьМакет = ПолучитьМакет("МакетДляОсобогоКлиента");
    Иначе
        // Использование стандартного механизма
        ИспользоватьМакет = СтандартныйМакет;
    КонецЕсли;
КонецПроцедуры

Этот метод является наиболее профессиональным, так как он сочетает в себе надежность типового функционала и гибкость, необходимую вашему бизнесу. Вы не меняете конфигурацию напрямую, но при этом получаете автоматизированное решение.

Подведем итоги: как поступить правильно?

Для простых правок текста или добавления нескольких полей в макет, используйте штатный инструмент Макеты печатных форм в интерфейсе программы. Это самый быстрый и безопасный путь. Если же ваша задача требует сложной логики (например, «если контрагент из холдинга А, печатать форму с дополнительными условиями, а если из холдинга Б — без них»), лучшим решением будет использование Расширений.

Важное предостережение: избегайте прямой модификации типовых макетов в Конфигураторе. Это путь к проблемам при каждом обновлении программы. Всегда старайтесь выносить изменения во внешние обработки (ВПФ) или в расширения. Таким образом, ваша учетная система останется «чистой» и легко обновляемой, что сэкономит вам немало времени и средств в будущем.

← На главную