Как изменить подписантов и добавить реквизиты приказа в печатной форме УПД в 1С:УПП 1.3?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

В процессе работы с конфигурацией 1С:Управление производственным предприятием (УПП) редакции 1.3 часто возникает необходимость изменить состав подписантов в Универсальном передаточном документе (УПД). Задача усложняется тем, что логика формирования УПД жестко зашита в общих модулях, а требования законодательства регулярно меняются — например, недавно вступил в силу УПД по постановлению №1096 с 01.10.2024 для УПП. Рассмотрим подробно, какими способами можно изменить данные в форме: от стандартных настроек системы до программной разработки внешней печатной формы.

Метод 1. Настройка через регистры сведений (Типовой функционал)

Прежде чем приступать к программированию, проанализируем возможности системы "из коробки". В 1С:УПП 1.3 за подписи в документах отвечают специализированные регистры. Если нам нужно сменить руководителя или главного бухгалтера на постоянной основе или на определенный период, выполним следующие шаги:

  1. Перейдем в регистр сведений Ответственные лица организаций.
  2. Проверим наличие записей для ролей Руководитель и ГлавныйБухгалтер.
  3. Если право подписи передано другому сотруднику на основании приказа, воспользуемся механизмом Уполномоченные лица.

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

Метод 2. Создание внешней печатной формы (ВПФ) с полным копированием логики

Разберем наиболее надежный способ — создание внешней печатной формы. Чтобы не изобретать велосипед, за основу можно взять готовую внешнюю печатную форму УПД для УПП 1.3 по постановлению №1096. Проблема автора темы заключалась в том, что функция ПечатьУниверсальногоПередаточногоДокумента находится в общем модуле УчетНДС. Чтобы внести изменения без редактирования конфигурации, нам необходимо "вынести" эту логику во внешнюю обработку.

Рассмотрим алгоритм действий:

  1. Создадим новую внешнюю обработку и добавим в неё макет УПД (его можно скопировать из общих макетов или использовать УПД для УПП 1.3 с поддержкой форматов 534 и 1096).
  2. Скопируем текст функции печати из общего модуля УчетНДС в модуль объекта нашей ВПФ.
  3. Проанализируем скопированный код. Все вызовы функций типа РаботаСДиалогами.ИмяФункции() или ОбщегоНазначения.ИмяФункции() должны быть заменены на полные обращения (если они доступны) или их локальные копии.

В коде найдем фрагмент, отвечающий за заполнение параметров руководителя и бухгалтера. Как правило, это выглядит так:


ПараметрыМакета.ФИОРуководителя = ОтветственныеЛица.РуководительФИО;
ПараметрыМакета.ФИОГлавногоБухгалтера = ОтветственныеЛица.ГлавныйБухгалтерФИО;

Заменим этот код на установку своих значений, включая номер приказа:


ПараметрыМакета.ФИОРуководителя = "Иванов И.И. (Приказ №123 от 01.01.2023)";
ПараметрыМакета.ФИОГлавногоБухгалтера = "Петрова А.А. (Приказ №124 от 01.01.2023)";

Метод 3. Постобработка сформированного табличного документа

Если мы не хотим копировать огромные пласты кода из общего модуля, воспользуемся методом перехвата уже готового документа. Мы вызываем типовую печать, получаем ТабличныйДокумент, а затем программно находим и заменяем нужные нам ячейки. Этот метод также удобен, если вам нужно внедрить дополнительные элементы, такие как УПД с QR кодом для оплаты через банковские приложения.

Посмотрим на пример реализации в модуле ВПФ:


// Получаем сформированный типовой документ
ТабДокумент = УчетНДС.ПечатьУниверсальногоПередаточногоДокумента(МассивОбъектов);

// Ищем область с подписями. В УПД это обычно секция "Подвал"
// Если мы знаем точный текст, который выводится сейчас, можем использовать НайтиТекст
Область = ТабДокумент.НайтиТекст("Старая Фамилия Б.Б.");
Если Область <> Неопределено Тогда
    Область.Текст = "Новая Фамилия Н.Н. (Основание: Приказ №5)";
КонецЕсли;

Важный нюанс: Как выяснилось в обсуждении на форуме (сообщения 10-22), типичная ошибка программиста — пытаться менять параметры в макете Макет.ПолучитьОбласть("Подвал") уже после того, как основная часть документа была выведена. Если вы используете метод Вывести(), то параметры нужно заполнять до вызова этого метода. Если же вы работаете с уже готовым ТабДокумент, то менять нужно свойство Текст конкретной области или ячейки, а не Параметры.

Метод 4. Работа с областями в итоговом документе

Проанализируем ситуацию, когда нам нужно заменить данные в конкретных координатах. В УПД за подписи отвечают строки 10, 13 и 18. Чтобы корректно изменить их, можно обратиться к областям по имени (если они сохранились в итоговом документе) или по координатам. При этом важно учитывать версию постановления, по которой строится форма, будь то редакция №534 или актуальный Счет-фактура / УПД по постановлению №1096.

Пример кода для замены через прямое обращение к области:


// Пример замены руководителя и бухгалтера по именам параметров в сформированном доке
// (Работает, если области не были очищены при выводе)
Для Каждого ТекущаяОбласть Из ТабДокумент.Области Цикл
    Если Найти(ТекущаяОбласть.Текст, "Руководитель") > 0 Тогда
         ТекущаяОбласть.Текст = "Новый Руководитель: Скипина К.А.";
    КонецЕсли;
КонецЦикла;

Особенности реализации в УПП 1.3

Выясним причину, по которой обычное расширение конфигурации может не подойти. УПП 1.3 базируется на обычных формах. Хотя современные версии платформы 8.3 позволяют использовать расширения для модулей, работа с макетами и специфическими функциями "обычного" приложения через расширения часто приводит к ошибкам совместимости или требует перевода базы на режим совместимости не ниже 8.3.10. Поэтому вариант с Внешней печатной формой (ВПФ) остается наиболее стабильным и безопасным для целостности системы.

Подведем итог. Для качественного решения задачи рекомендуется:

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

← На главную