Как вывести комментарий контрагента в печатную форму Заказа покупателя

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

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

В этой статье мы подробно разберем, как программно получить данные контрагента и корректно передать их в область печати, рассмотрим различные подходы — от самых простых до наиболее профессиональных и оптимизированных.

Постановка задачи и поиск данных

Прежде всего, нам необходимо выяснить, где именно в системе хранятся нужные нам данные. В 1С:УНФ на форме контрагента есть поле, которое пользователь видит как «Заметки». Важно понимать техническое различие:

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

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

Способ 1. Простое обращение через точку

Это самый быстрый и понятный для начинающего разработчика способ. Если у нас уже есть ссылка на контрагента (например, из объекта документа ЗаказПокупателя), мы можем обратиться к его свойствам напрямую.

Проанализируем пример кода:


// Вставляем значение комментария в структуру данных для печати
ДанныеПечати.Вставить("КомментарийКонтрагента", Контрагент.Комментарий);

Плюсы метода:

Минусы метода:

Способ 2. Использование объектного запроса (SQL-подход)

Профессиональный подход к разработке на платформе 1С:Предприятие 8.3 подразумевает получение всех необходимых данных одним запросом. Это критически важно, если вы формируете печатные формы для списка документов.

Разберем по шагам, как правильно составить и выполнить такой запрос:


// Создаем объект Запрос
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Контрагент", Контрагент);

// Пишем текст запроса к справочнику Контрагенты
Запрос.Текст = 
"ВЫБРАТЬ
|	Контрагенты.Комментарий КАК КомментарийКонтрагента
|ИЗ
|	Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|	Контрагенты.Ссылка = &Контрагент";

// Выполняем запрос и получаем результат
РезультатЗапроса = Запрос.Выполнить();

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

Обратите внимание на важный нюанс, который часто упускают новички: после метода Выполнить() нам обязательно нужно вызвать метод Выбрать() и перейти к первой записи с помощью Следующий(), иначе мы не сможем обратиться к конкретному полю результата.

Способ 3. Оптимизированное получение через функции БСП

В современных конфигурациях, таких как УНФ, интегрирована Библиотека стандартных подсистем (БСП). Она предоставляет удобные инструменты для получения значений реквизитов без написания полных текстов запросов, но при этом работающих быстрее, чем обращение «через точку».

Выясним, как применить функцию ОбщегоНазначения:


// Получаем только нужный реквизит максимально быстро
Комментарий = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "Комментарий");

// Передаем в данные печати
ДанныеПечати.Вставить("КомментарийКонтрагента", Комментарий);

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

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

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

Проанализируем основные настройки ячейки в макете:

  1. Найдите ячейку, в которую выводится параметр <p>КомментарийКонтрагента</p>.
  2. В свойствах ячейки (F4) найдите раздел Макет и параметр Заполнение. Установите значение Параметр.
  3. Размещение текста: Обязательно установите значение Переносить. Это позволит длинному комментарию распределяться по нескольким строкам, а не обрезаться по границе ячейки.
  4. Автовысота строки: В свойствах строки, где расположена эта ячейка, установите флажок Автовысота. Если этого не сделать, текст будет переноситься, но сама строка останется узкой, и часть данных скроется.

Рекомендация по использованию расширений

Чтобы ваши изменения не пропали при обновлении конфигурации 1С:УНФ, крайне рекомендуется выполнять эти доработки с помощью Расширений. Создайте расширение, добавьте в него модуль менеджера документа ЗаказПокупателя и переопределите процедуру печати. Так основная конфигурация останется на поддержке, что существенно облегчит жизнь системному администратору и бухгалтеру в будущем.

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

← На главную