Как найти и отредактировать макет счета на оплату в 1С:УНФ 3.0

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

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

В этой статье мы подробно разберем, где именно «прячется» этот макет, как правильно его редактировать и почему система может игнорировать ваши доработки, а также где найти внешние печатные формы для 1С:УНФ 3.0.

Поиск макета в дереве метаданных

Для начала проанализируем структуру конфигурации. В современных версиях УНФ логика печати вынесена в специализированные обработки. Чтобы найти нужный нам макет, необходимо обратиться к ветке Обработки. Рассмотрим путь, который является стандартным для версии 3.0:

Основной макет счета чаще всего находится по следующему адресу: Обработки — ПечатьСчетовНаОплату — Макеты — ПФ_MXL_СчетНаОплату (существуют и другие варианты, например, свернутый счет на оплату с группировкой).

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

В коде модуля менеджер или модуля обработки часто можно встретить функцию, определяющую путь к макету:


Функция ПолныйПутьКМакету() Экспорт
    // Возвращаем путь к актуальному макету в дереве метаданных
    Возврат "Обработка.ПечатьСчетовНаОплату.ПФ_MXL_СчетНаОплату";
КонецФункции

Почему изменения в Конфигураторе не применяются?

Если вы уверены, что нашли верный макет и внесли в него изменения, но в режиме «Предприятие» форма остается прежней, проанализируем возможные причины. Рассмотрим их по порядку приоритетности.

1. Использование пользовательских макетов

Это самая распространенная причина. В 1С предусмотрена возможность редактирования печатных форм пользователями без изменения кода. Если пользователь хотя бы раз отредактировал макет в режиме «Предприятие», система создает его копию в базе данных и в дальнейшем использует именно её, полностью игнорируя макет из Конфигуратора.

Выясним, так ли это, выполнив следующие действия:

  1. Перейдем в раздел Настройки.
  2. Выберем пункт Печатные формы, отчеты и обработки.
  3. Откроем гиперссылку Макеты печатных форм.
  4. Найдем в списке макет с именем «Счет на оплату».

Посмотрим на пиктограмму рядом с названием макета. Если вы видите значок «Синий карандаш», это означает, что макет был изменен пользователем. В этом случае ваши правки в Конфигураторе никогда не вступят в силу, пока активна эта версия. Чтобы вернуть использование программного макета, нажмите кнопку Использовать стандартный макет (или удалите пользовательское изменение).

2. Наличие расширений конфигурации

В современных реалиях внедрения 1С практически никогда не обходятся без расширений. Проанализируем список установленных расширений. Если в одном из них заимствована обработка печати или сам макет ПФ_MXL_СчетНаОплату, то приоритет будет отдан версии из расширения.

Проверьте, не перехвачена ли процедура печати в расширении с помощью аннотаций &Вместо или &Перед. Если код формирования печатной формы полностью замещен, макет в основной конфигурации становится бесполезным.

3. Особенности работы с факсимиле

В УНФ 3.0 механизм печати счетов с подписями и печатями (факсимиле) реализован программно. Рассмотрим, как это работает: система берет основной макет, находит в нем области с именами ПодписьРуководителя, ПодписьБухгалтера или Печать и динамически накладывает картинки из справочника Организации.

Если ваша задача — изменить положение печати или логотипа, проверьте настройки в справочнике Организации на вкладке Печать. Иногда ручное изменение областей в макете может конфликтовать с алгоритмом программного вывода изображений, который использует БСП.

4. Кэширование данных

Иногда проблема кроется в банальном кэшировании. При работе в клиент-серверном варианте сервер приложений может хранить скомпилированные модули в памяти. Попробуем выполнить следующие шаги:

Программный поиск через отладку

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

Рассмотрим алгоритм действий (подобным образом выполняется и отладка внешних печатных форм и обработок):

  1. Откроем модуль менеджера документа Заказ покупателя или модуль обработки ПечатьСчетовНаОплату.
  2. Найдем процедуру Печать (или СформироватьПечатнуюФормуСчетНаОплату).
  3. Установим точку останова на строке, где вызывается метод УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию.
  4. Проанализируем параметры функции. В одном из них будет передано точное имя макета, которое система использует в данный момент.

Пример типичного кода вызова печати:


Процедура СформироватьПечатныеФормы(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

    // Проверяем наличие команды печати счета
    Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетНаОплату") Тогда
        // Именно здесь определяется, какой макет будет выведен
        УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
            КоллекцияПечатныхФорм,
            "СчетНаОплату",
            "Счет на оплату",
            СформироватьПечатнуюФорму(МассивОбъектов, ОбъектыПечати, "ПФ_MXL_СчетНаОплату")
        );
    КонецЕсли;

КонецПроцедуры

В данном примере функция СформироватьПечатнуюФорму третьим параметром принимает имя макета "ПФ_MXL_СчетНаОплату". Это и есть ключ к поиску нужного объекта в метаданных.

Резюме

Подводя итог, если вы меняете макет счета в УНФ 3.0, но не видите результата, действуйте по следующему чек-листу: во-первых, убедитесь, что правите макет в обработке ПечатьСчетовНаОплату (множественное число); во-вторых, проверьте список пользовательских макетов на наличие «синего карандаша»; в-третьих, проверьте расширения конфигурации; в-четвертых, убедитесь, что вы не правите области, которые программно перезаписываются механизмом факсимиле.

← На главную