Как добавить доверенность в печатную форму УПД и не сломать механизм "Подпись и печать" в 1С

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

Часто возникает задача доработать печатную форму Универсального передаточного документа (УПД) в 1С:Бухгалтерии. Например, требуется добавить к ФИО руководителя или главного бухгалтера основание их полномочий — номер и дату доверенности или приказа. Однако при неаккуратном изменении макета можно столкнуться с неприятной проблемой: перестает работать стандартный функционал "Подпись и печать" — для этого подойдёт механизм автоматической подстановки печатей и подписей. Разберем, почему это происходит и как правильно выполнить такую доработку.

Почему ломается функционал "Подпись и печать"

Основная причина проблемы, с которой столкнулся автор вопроса на форуме, — это удаление стандартных областей макета. Механизм вставки факсимильной подписи и печати в 1С тесно связан со структурой типового макета. Программа ищет области и параметры по строго определенным именам, заложенным разработчиками. Чтобы избежать ошибок при экспериментах, за основу можно взять УПД для конфигурации Бухгалтерия предприятия, который используется как чистый шаблон для доработок.

Когда вы удаляете именованную область (например, Подвал или ПодвалНакладной) или переименовываете стандартные параметры внутри них, механизм просто не может найти место, куда ему следует вставить изображение подписи или печати. В результате функционал перестает работать. — восстановить его поможет автоматический вывод факсимиле в типовых формах.

Главное правило: при доработке типовых печатных форм старайтесь не удалять и не переименовывать существующие именованные области и параметры, которые используются стандартными механизмами.

Решение 1: Используем штатный функционал (самый правильный способ)

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

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

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

Решение 2: Корректная доработка макета (без программирования)

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

Разберем по шагам:

  1. Откройте макет УПД в конфигураторе (или через администрирование, если это макет из расширения).
  2. Найдите ячейку, где выводится ФИО ответственного лица, например, ячейку с параметром [ФИОРуководителя].
  3. Выделите эту ячейку и откройте палитру свойств (обычно вызывается по Alt+Enter).
  4. Найдите свойство Заполнение. По умолчанию его значение "Параметр". Измените его на "Шаблон".
  5. Теперь вы можете редактировать текст прямо в ячейке, комбинируя параметры и обычный текст. Например, измените содержимое ячейки на: [ФИОРуководителя], действующий(ая) на основании [ОснованиеПодписиРуководителя].

Таким образом, вы не удалили старый параметр ФИОРуководителя, а дополнили его. Теперь ваша задача свелась к тому, чтобы программно получить и передать в макет значение для нового параметра ОснованиеПодписиРуководителя.

Решение 3: Программная доработка с передачей параметров

Это способ для программиста, который позволяет полностью контролировать выводимые данные. Проанализируем код из темы форума и исправим его.

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

// Неправильный подход из темы Макет = Обработки.ПечатьУПД.ПолучитьМакет("ПФ_MXL_УниверсальныйПередаточныйДокумент"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьПодвал.Параметры.ФИОРуководителя = Руководитель; // ... и так далее

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

Рассмотрим, как это сделать, например, в расширении.

Шаг 1. Получение данных.

Логика получения данных у автора в целом верная, но ее можно сделать более читаемой и надежной. Обратим внимание на замечания с форума: присваивать отформатированную дату в переменную с названием НомерПриказа — плохая практика.

Улучшим этот фрагмент. Наша цель — сформировать одну понятную строку для каждого ответственного лица. Для реализации более сложной логики можно использовать вывод в "Основание" строки без ограничений через дополнительные реквизиты договоров.

// Переменные для хранения итоговых строк ОснованиеДляРуководителя = ""; ОснованиеДляБухгалтера = ""; // ... и т.д. // Получаем данные для руководителя Если Объект.ДокументОснование <> Неопределено И Объект.ДокументОснование.ЗаРуководителяНаОсновании <> Неопределено Тогда ТипОснования = Объект.ДокументОснование.ЗаРуководителяНаОсновании.Наименование; Если СтрНачинаетсяС(ТипОснования, "Приказ") Тогда ДатаПриказа = Формат(Объект.ДокументОснование.ЗаРуководителяНаОсновании.ДатаНачала, "ДФ=dd.MM.yyyy"); // Предположим, номер приказа хранится в реквизите "Номер" НомерПриказа = Объект.ДокументОснование.ЗаРуководителяНаОсновании.Номер; ОснованиеДляРуководителя = "Приказа №" + НомерПриказа + " от " + ДатаПриказа; Иначе // Предполагаем, что это доверенность НомерДоверенности = Объект.ДокументОснование.ДоверенностьНомер; ДатаДоверенности = Формат(Объект.ДокументОснование.ДоверенностьДата, "ДФ=dd.MM.yyyy"); ОснованиеДляРуководителя = "Доверенности №" + НомерДоверенности + " от " + ДатаДоверенности; КонецЕсли; КонецЕсли; // Аналогично получаем ОснованиеДляБухгалтера и для других лиц

Шаг 2. Передача параметров в механизм печати.

Теперь, когда у нас есть готовые строки в переменных ОснованиеДляРуководителя и ОснованиеДляБухгалтера, их нужно передать в макет. Для этого обычно используется структура параметров, передаваемая в основную процедуру формирования печатной формы.

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

Например, это может выглядеть так (упрощенно):

// ... код перед вызовом печати СтруктураПараметровПечати = УчетНДС.НовыйСтруктураПараметровПечатиУПД_УКД(); // ... заполнение стандартных параметров // ... // Добавляем наши параметры ПараметрыВывода = СтруктураПараметровПечати.ПараметрыВывода; ПараметрыВывода.Вставить("ОснованиеПодписиРуководителя", ОснованиеДляРуководителя); ПараметрыВывода.Вставить("ОснованиеПодписиБухгалтера", ОснованиеДляБухгалтера); // Вызываем типовую печать ТабличныйДокумент = УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(СтруктураПараметровПечати);

После этого в вашем доработанном макете (из Решения 2) параметры [ОснованиеПодписиРуководителя] и [ОснованиеПодписиБухгалтера] будут корректно заполнены.

Решение 4: Внешняя печатная форма

Если требуются значительные изменения в логике или внешнем виде УПД, лучшим решением будет создание внешней печатной формы. Это самый безопасный и гибкий подход. Например, вы можете сразу использовать готовый Универсальный передаточный документ (УПД) в редакции постановления № 1096, который уже включает актуальные требования законодательства. А для долгосрочного планирования пригодится УПД постановление №1096 (с 01.01.2026).

Преимущества:

Этот способ требует больше времени на разработку, но является промышленным стандартом для сильной кастомизации документов.

← На главную