Рассмотрим распространенную задачу: в документ конфигурации (например, Заказ поставщику) через расширение добавлен новый реквизит. Теперь необходимо вывести значение этого реквизита в стандартную печатную форму. Разберем архитектурные особенности 1С:Управление Торговлей 11 (и аналогичных конфигураций на базе БСП: ERP, КА), выясним, где находится код печати, и проанализируем варианты реализации.
В отличие от старых конфигураций, в УТ 11 код печати не находится в модуле формы документа. Архитектура построена на Библиотеке Стандартных Подсистем (БСП). Разберем по шагам, где искать логику:
Печать().СформироватьПечатныеФормы() или ПодготовитьДанныеДляПечати().Обработка.ПечатьОбъектов). Чтобы быстрее разобраться в этих механизмах, рекомендуем использовать справочник по методам БСП, который содержит примеры работы со стандартными подсистемами.Прежде чем открывать конфигуратор, проверим, можно ли решить задачу пользовательскими средствами. Это самый безопасный способ, который не слетает при обновлениях.
Заказ поставщику) и его печатную форму.Это классический и надежный метод. Если мы используем ВПФ, мы не вмешиваемся в основную конфигурацию и не зависим от режимов совместимости расширений. Для быстрой разработки можно взять за основу готовые внешние печатные формы для Управления торговлей 11.5, которые покрывают большинство типовых документов.
Преимущества:
Недостатки:
Автор темы выбрал путь доработки через расширение. Разберем нюансы этого метода, так как здесь есть "подводные камни". Помимо обычных форм, через расширения удобно реализовывать и более сложные задачи, такие как печать договоров по шаблонам Word.
Подход А: Полное копирование (Опасно)
Мы копируем макет и процедуру печати в расширение, аннотируем её как &Вместо и добавляем свой код.
Риск: Как справедливо заметили участники обсуждения, при этом мы "замораживаем" логику печати. Если выйдет обновление УТ 11, наш код с аннотацией &Вместо перекроет исправления.
Подход Б: Программная модификация (Рекомендуем)
Более правильный способ работы с расширениями — использование аннотации &ИзменениеИКонтроль или пост-обработка результата. Типичным примером такой доработки является вывод дополнительных условий в счете на оплату, где данные добавляются в существующую форму программно.
Алгоритм действий:
При таком подходе при обновлении типовой конфигурации макет обновится автоматически, а наша "надстройка" просто добавит данные в нужное место.
В теме было отмечено: "Не надо добавлять реквизиты через расширения". Давайте поясним этот момент.
Хранение важных данных исключительно в расширении несет риски потери данных при удалении расширения. Если вам нужно просто увидеть содержимое всех полей объекта для отладки, поможет специальная печать реквизитов документов и справочников для конфигураций на БСП.
Для решения задачи вывода реквизита в печатную форму: