При оформлении документа «Списание товаров» в конфигурации «1С:Розница 2.2» пользователи часто заполняют текстовые комментарии — либо к документу в целом, либо к конкретным позициям номенклатуры. Однако в стандартной печатной форме накладной списания эта информация не выводится. Рассмотрим подробнее, почему стандартного редактирования макета бывает недостаточно, и разберем по шагам способы решения этой задачи.
В режиме «1С:Предприятие» (через раздел Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм) можно изменять визуальное оформление: ширину колонок, шрифты, границы и заголовки. Однако если просто добавить в макет ячейку и указать в ней параметр [Комментарий], при печати поле останется пустым.
Выясним причину: типовой программный алгоритм формирования печати выбирает из базы данных строго определенный набор реквизитов. Если процедура печати не считывает поле комментария из базы данных, параметр в макете не получит значения. Для решения этой задачи требуется доработка программного кода.
Проанализируем, какой именно комментарий требуется выводить в печатную форму:
Ссылка.Комментарий).Создание внешней печатной формы в формате .epf — наиболее рекомендуемый подход. При этом основная конфигурация остается на стандартной поддержке и продолжает свободно обновляться.
Разберем по шагам алгоритм создания ВПФ:
СведенияОВнешнейОбработке).СписаниеТоваров.ШапкаТаблицы, Строка и Подвал.Комментарий.Альтернативный метод — использование расширения конфигурации. Этот способ также сохраняет конфигурацию на поддержке, при этом печатная форма модернизируется напрямую в базе.
Посмотрим на порядок действий при работе с расширением:
СписаниеТоваров и его печатный макет в расширение.&Вместо или &После).Рассмотрим, как изменить запрос и заполнить параметры области макета в коде 1С.
В процедуре формирования печатной формы изменяем SQL-запрос к табличной части или шапке документа, явно добавив выборку нужного поля:
// В тексте запроса добавляем выборку поля комментария
Запрос.Текст = "
|ВЫБРАТЬ
| Товары.Номенклатура КАК Номенклатура,
| Товары.Количество КАК Количество,
| Товары.Цена КАК Цена,
| Товары.Сумма КАК Сумма,
| Товары.Комментарий КАК Комментарий
|ИЗ
| Документ.СписаниеТоваров.Товары КАК Товары
|ГДЕ
| Товары.Ссылка = &ТекущийДокумент";
После получения выборки из результата запроса в цикле обхода строк передаем значение комментария в параметр соответствующей области табличного документа:
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, Выборка);
// Передаем значение комментария в параметр макета
ОбластьСтрока.Параметры.Комментарий = Выборка.Комментарий;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Чтобы обновленная таблица корректно помещалась на листе формата А4 по ширине и не разрывалась при печати, зададим свойство автомасштабирования табличного документа:
ТабДок.АвтоМасштаб = Истина;
Таким образом, совместив редактирование макета MXL с изменением запроса и алгоритма заполнения параметров, мы получаем полностью рабочее решение по выводу комментариев в печатную форму списания товаров.