Как вывести комментарий в печатную форму накладной списания товаров в 1С:Розница 2.2?

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

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

Ограничения редактирования макета в режиме «1С:Предприятие»

В режиме «1С:Предприятие» (через раздел Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм) можно изменять визуальное оформление: ширину колонок, шрифты, границы и заголовки. Однако если просто добавить в макет ячейку и указать в ней параметр [Комментарий], при печати поле останется пустым.

Выясним причину: типовой программный алгоритм формирования печати выбирает из базы данных строго определенный набор реквизитов. Если процедура печати не считывает поле комментария из базы данных, параметр в макете не получит значения. Для решения этой задачи требуется доработка программного кода.

Различие типов комментариев в документе

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

  1. Комментарий к документу (шапка): текстовое поле, относящееся ко всему документу списания (реквизит Ссылка.Комментарий).
  2. Комментарий к позиции (табличная часть): пояснения по конкретной строке номенклатуры (реквизиты табличной части или механизмы дополнительных реквизитов БСП).

Способ 1. Создание внешней печатной формы (ВПФ)

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

Разберем по шагам алгоритм создания ВПФ:

  1. Создаем внешнюю обработку в конфигураторе и добавляем модуль объекта со стандартной функцией регистрации БСП (СведенияОВнешнейОбработке).
  2. Копируем макет MXL и процедуру печати из модуля менеджера документа СписаниеТоваров.
  3. Добавляем в макет MXL новую колонку «Комментарий» в области ШапкаТаблицы, Строка и Подвал.
  4. В свойствах ячейки строки макета указываем тип заполнения Параметр и задаем имя Комментарий.
  5. Подключаем обработку в режиме «1С:Предприятие» через раздел Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.

Способ 2. Доработка через расширение конфигурации (.cfe)

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

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

  1. Добавляем документ СписаниеТоваров и его печатный макет в расширение.
  2. В модуле менеджера перехватываем процедуру печати с помощью аннотаций (например, &Вместо или &После).
  3. Вносим изменения в текст запроса и алгоритм вывода данных в табличный документ.

Программная доработка запроса и заполнение макета

Рассмотрим, как изменить запрос и заполнить параметры области макета в коде 1С.

В процедуре формирования печатной формы изменяем SQL-запрос к табличной части или шапке документа, явно добавив выборку нужного поля:


// В тексте запроса добавляем выборку поля комментария
Запрос.Текст = "
|ВЫБРАТЬ
|	Товары.Номенклатура КАК Номенклатура,
|	Товары.Количество КАК Количество,
|	Товары.Цена КАК Цена,
|	Товары.Сумма КАК Сумма,
|	Товары.Комментарий КАК Комментарий
|ИЗ
|	Документ.СписаниеТоваров.Товары КАК Товары
|ГДЕ
|	Товары.Ссылка = &ТекущийДокумент";

После получения выборки из результата запроса в цикле обхода строк передаем значение комментария в параметр соответствующей области табличного документа:


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

Чтобы обновленная таблица корректно помещалась на листе формата А4 по ширине и не разрывалась при печати, зададим свойство автомасштабирования табличного документа:

ТабДок.АвтоМасштаб = Истина;

Таким образом, совместив редактирование макета MXL с изменением запроса и алгоритма заполнения параметров, мы получаем полностью рабочее решение по выводу комментариев в печатную форму списания товаров.

← На главную