Как найти и открыть программный код формирования УПД в 1С:Бухгалтерия 2.0

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

При необходимости доработать печатную форму Универсального передаточного документа (УПД) или добавить автозаполнение некоторых полей (например, вывести прочерки в строке идентификатора государственного контракта) разработчики часто сталкиваются с затруднением. Открывая макет в конфигураторе по пути Общие -> Общие макеты -> УниверсальныйПередаточныйДокумент, мы видим только визуальную разметку макета печатной формы (табличный документ), однако модуль обработки данных в нем отсутствует.

Разберем подробно, где именно располагается программный алгоритм заполнения макета УПД, почему он вынесен из документов и как правильно внести изменения, чтобы не потерять их при последующих обновлениях системы.

Выясняем причину: где хранится код печати УПД

Проанализируем архитектуру конфигураций на базе толстого клиента (в частности, Бухгалтерия предприятия ред. 2.0). В отличие от стандартных печатных форм, привязанных к модулю конкретного документа, печать счетов-фактур и УПД вынесена в общие модули конфигурации. Это сделано для унификации алгоритмов, так как УПД может формироваться из различных документов-оснований.

Выясним точное местонахождение кода. Логика заполнения и вывода печатных форм НДС находится в общем модуле УчетНДС, а за непосредственно заполнение параметров макета и вывод в табличный документ отвечает процедура ВывестиСчетФактуруВТабличныйДокумент().

Чтобы перейти к коду в конфигураторе, выполним следующие шаги:

  1. Откроем дерево конфигурации.
  2. Перейдем в ветку Общие -> Общие модули -> УчетНДС.
  3. Откроем модуль и перейдем к процедуре ВывестиСчетФактуруВТабличныйДокумент().

Именно в этой процедуре происходит подготовка структуры параметров, проверка заполнения реквизитов (включая ИдентификаторГосКонтракта) и заполнение областей макета УниверсальныйПередаточныйДокумент.

Способы доработки печатной формы

Рассмотрим варианты решения задачи по выводу дополнительных символов или прочерков в печатной форме.

Вариант 1. Штатный ввод данных (без изменения кода)

Прежде чем изменять типовой код программы, оценим возможности штатного функционала. В документе Счет-фактура выданный реквизит Идентификатор госконтракта является строковым полем. Если для соблюдения правил заполнения документов требуется вывести прочерки (-----), их можно ввести напрямую в соответствующее поле документа. Механизм печати типовой конфигурации перенесет эти символы в печатную форму УПД автоматически.

Вариант 2. Внесение изменений в модуль УчетНДС

Если требуется зафиксировать логику на программном уровне (например, автоматически выводить прочерки при отсутствии заполненного идентификатора), необходимо скорректировать код в общем модуле. Рассмотрим пример логики обработки параметра ИдентификаторГосКонтракта в процедуре ВывестиСчетФактуруВТабличныйДокумент():


Если НЕ ЗначениеЗаполнено(Шапка.ИдентификаторГосКонтракта) Тогда
    ОбластьМакета.Параметры.ИдентификаторГосКонтракта = "----";
Иначе
    ОбластьМакета.Параметры.ИдентификаторГосКонтракта = Шапка.ИдентификаторГосКонтракта;
КонецЕсли;

Важно: При прямом изменении типового общего модуля соблюдаем правила поддержки:

  1. Переводим в режим Редактируется с сохранением поддержки только конкретный общий модуль УчетНДС, а не всю конфигурацию.
  2. Все добавляемые фрагменты кода оборачиваем явными комментариями с указанием автора и даты. Это упростит восстановление доработок при последующем сравнении и объединении конфигураций во время обновления.

Вариант 3. Использование внешней печатной формы (ВПФ)

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

Разберем по шагам порядок создания ВПФ:

  1. Создаем новую внешнюю обработку (.epf).
  2. Копируем макет УниверсальныйПередаточныйДокумент из общих макетов во внешнюю обработку.
  3. Переносим процедуру печати из общего модуля УчетНДС в модуль объекта внешней обработки.
  4. Вносим необходимую правку алгоритма заполнения параметров.
  5. Подключаем обработку в базе через меню: Сервис -> Дополнительные отчеты и обработки -> Дополнительные внешние печатные формы.

Использование внешней печатной формы полностью изолирует пользовательские доработки от типового релиза и гарантирует их сохранность при обновлении базы 1С.

← На главную