Почему в печатной форме договора не выводятся реквизиты и как это исправить

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

При работе в современных конфигурациях 1С, таких как «1С:Управление торговлей», «1С:ERP» или «1С:Бухгалтерия», пользователи часто сталкиваются с ситуацией, когда при печати договора некоторые поля (например, банковский счет или контактное лицо) остаются пустыми. Это происходит даже в тех случаях, когда в карточке контрагента вся информация заполнена корректно. Рассмотрим подробнее, почему так происходит, и разберем пошагово методы решения этой проблемы.

Проверка настроек банковского счета по умолчанию

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

  1. Откроем карточку контрагента, с которым заключается договор.
  2. Перейдем в раздел «Банковские счета».
  3. Найдем нужный расчетный счет и проверим, установлен ли он как «Основной» (обычно выделяется жирным шрифтом или имеет соответствующую отметку).
  4. Если основной счет не выбран, установим его.

Важно помнить, что в некоторых версиях конфигураций печатная форма обращается именно к параметру ОсновнойБанковскийСчет. Если он не задан, алгоритм формирования документа может вернуть пустое значение.

Настройка реквизитов внутри самого договора

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

Часто в форме договора присутствуют отдельные поля: «Банковский счет организации» и «Банковский счет контрагента». Если при создании договора эти поля были оставлены пустыми, то в печатную форму данные не попадут, даже если они есть в общей карточке контрагента. Это сделано для того, чтобы в рамках разных договоров с одним и тем же партнером можно было использовать разные платежные реквизиты.

Анализ макета печатной формы

Если с реквизитами в базе все в порядке, нам необходимо проверить сам макет печатной формы. Рассмотрим, как это сделать в пользовательском режиме, используя конструктор печатных форм для объектов базы 1С, который позволяет обойтись без привлечения программиста:

  1. Перейдем в раздел «НСИ и администрирование» — «Печатные формы, отчеты и обработки».
  2. Выберем пункт «Макеты печатных форм».
  3. В списке найдем макет, соответствующий вашему договору (например, «Договор купли-продажи» или «Произвольный договор»).
  4. Посмотрим на структуру макета. В ячейках, где должны выводиться данные, должны стоять параметры в угловых скобках или фигурных скобках, например [НомерДоговора] или {КонтрагентНаименование}.

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

Проблема выбора подписанта и контактного лица

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

Для того чтобы контактное лицо отобразилось в договоре, оно должно быть выбрано в соответствующем поле внутри самого объекта Договор. Обычно это поле называется «Подписал» или «Контактное лицо». Если вы используете расширенные шаблоны (например, шаблоны Word для УТ 11.5 или специальные решения для печати договора в MS Word), убедитесь, что в макете указан верный тег для должности и ФИО подписанта.

Фильтрация по валюте расчетов

Посмотрим на ситуацию, которая часто ставит пользователей в тупик: банковский счет заполнен, но в договоре его выбрать нельзя. Это происходит из-за фильтрации по валюте. Если в договоре установлена валюта USD, а у контрагента заведен только рублевый расчетный счет, система скроет этот счет, так как он не соответствует условиям расчетов по данному договору. Проверьте соответствие валют договора и выбранного банковского счета.

Технические аспекты: кэш и расширения

Иногда причина кроется глубже. Разберем технические моменты, которые могут влиять на вывод данных:

  1. Кэш метаданных: Бывает, что платформа 1С «запоминает» старое состояние объекта. Попробуйте очистить кэш пользователя.
  2. Расширения конфигурации: Проверьте, не установлены ли в базе расширения, которые модифицируют процесс печати. Часто при обновлении программы код в расширении перестает корректно считывать данные.

Для программистов: отладка формирования печатной формы

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


Процедура ЗаполнитьПараметрыПечати(ДанныеПечати, ОбъектСсылка)
    // Получаем данные из объекта
    ДанныеПечати.Номер = ОбъектСсылка.Номер;
    ДанныеПечати.Дата = Формат(ОбъектСсылка.Дата, "ДЛФ=DD");
    
    // Проверяем заполнение банковского счета
    Если ЗначениеЗаполнено(ОбъектСсылка.БанковскийСчетКонтрагента) Тогда
        ДанныеПечати.РеквизитыКонтрагента = СформироватьСтрокуРеквизитов(ОбъектСсылка.БанковскийСчетКонтрагента);
    Иначе
        // Если счет в договоре не указан, пробуем взять основной счет контрагента
        ДанныеПечати.РеквизитыКонтрагента = СформироватьСтрокуРеквизитов(ОбъектСсылка.Контрагент.ОсновнойБанковскийСчет);
    КонецЕсли;
КонецПроцедуры

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

Заключение

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

← На главную