Как вывести договор в поле «Основание» печатной формы в 1С:Управление торговлей 11?

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

Многие пользователи и специалисты, работающие с типовыми конфигурациями 1С, сталкиваются с ситуацией, когда необходимо выводить данные договора в печатную форму (например, ТОРГ-12), но штатный функционал не отображает эту информацию. Давайте разберемся, почему так происходит и как реализовать вывод договора, сохраняя типовую конфигурацию на поддержке.

Анализ причин отсутствия данных в макете

Прежде чем приступать к доработкам, проанализируем, почему поле Основание в макете остается пустым. В архитектуре 1С:Управление торговлей 11 формирование печатных форм реализовано через подсистему Библиотека подключаемых печатных форм (БСП). В типовом коде логика заполнения структуры параметров печатной формы строго ограничена.

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

Стратегия решения задачи: использование расширений

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

Шаг 1: Идентификация места в коде

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

Шаг 2: Создание расширения и добавление логики

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

Рассмотрим пример кода, который можно использовать в процедуре расширения:


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

Шаг 3: Настройка вывода в макете

После того как мы программно передали значение в структуру СтруктураПараметров с ключом Основание, система 1С автоматически подставит это значение в соответствующий параметр макета, если имя параметра в макете совпадает с ключом структуры.

Пошаговые действия для реализации:

  1. Откройте конфигуратор и создайте новое Расширение.
  2. Добавьте в расширение объект РеализацияТоваровУслуг.
  3. Используя функционал расширения, создайте Аннотацию для метода формирования печатных форм (используйте &После).
  4. В созданном методе реализуйте запрос к реквизиту Договор документа, если он не был передан стандартными средствами.
  5. Убедитесь, что переданное значение корректно отображается в макете при печати.

Важные замечания по работе с договорами

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

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

← На главную