Как убрать вывод поля "Содержание" из печатной формы в 1С

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

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

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

Почему не получается убрать «Содержание» простым редактированием макета?

Попытка отредактировать макет печатной формы через стандартное меню Ещё — Изменить макет (или через список макетов печатных форм в администрировании) обычно заводит пользователей в тупик. Открыв макет счета, вы не обнаружите там отдельного параметра Содержание. Вместо этого в ячейке вывода наименования товара будет указан один общий параметр — чаще всего это [ПредставлениеНоменклатуры] или [Товар].

Выясним причину такого поведения системы. Логика подстановки данных заложена разработчиками 1С непосредственно в программном коде конфигурации (в модуле менеджера документа или специализированных общих модулях печати). При формировании данных для печати программа выполняет запрос к табличной части документа. Внутри этого запроса заложена следующая жесткая конструкция:


ВЫБОР
    КОГДА ЗаказПокупателяТовары.Содержание <> ""
        ТОГДА ЗаказПокупателяТовары.Содержание
    ИНАЧЕ ЗаказПокупателяТовары.Номенклатура.НаименованиеПолное
КОНЕЦ КАК ПредставлениеНоменклатуры

Таким образом, если поле Содержание в строке документа заполнено, система принудительно подставляет его значение вместо штатного наименования номенклатуры из справочника. Изменение визуального макета никак не повлияет на этот алгоритм: программа все равно передаст текст из поля Содержание в параметр макета ПредставлениеНоменклатуры.

Рассмотрим четыре практических варианта решения этой проблемы в зависимости от ваших задач и наличия программиста в штате.

Способ 1. Использование механизма дополнительных реквизитов (Правильный путь)

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

Для создания полноценного поля внутреннего комментария выполним следующие шаги:

  1. Перейдем в раздел Администрирование, далее выберем пункт Общие настройки и раскроем группу Дополнительные реквизиты и сведения. Убедимся, что флаг использования этой функции активен.
  2. Перейдем по гиперссылке Дополнительные реквизиты.
  3. В левом списке найдем наш документ (например, Заказ покупателя) и выделим его табличную часть (Товары или Услуги).
  4. Нажмем кнопку Добавить — Новый.
  5. В открывшейся карточке укажем наименование: Внутренний комментарий. Тип значения оставим по умолчанию — Строка (при необходимости можно ограничить длину или сделать ее неограниченной).
  6. Сохраним настройки. Теперь в табличной части документа у менеджеров появится отдельная колонка для ввода служебных заметок. Она гарантированно не попадет в стандартные печатные формы, так как они ничего не знают о добавленном нами реквизите.
  7. Существующие данные из колонки Содержание можно перенести в новое поле вручную или воспользоваться обработкой группового изменения реквизитов.

Способ 2. Создание расширения конфигурации (Для программистов)

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

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


&Вместо("ПодготовитьДанныеДляПечатиСчетов")
Функция Расш_ПодготовитьДанныеДляПечатиСчетов(МассивОбъектов, ПараметрыПечати)
    // Вызываем базовый метод для получения структуры данных
    Результат = ПродолжитьВызов(МассивОбъектов, ПараметрыПечати);
    
    // Обходим полученную таблицу и принудительно заменяем представление номенклатуры
    Для Каждого СтрокаДанных Из Результат.ТабличнаяЧасть Цикл
        Если ЗначениеЗаполнено(СтрокаДанных.Номенклатура) Тогда
            // Подставляем полное наименование вместо содержания
            СтрокаДанных.ПредставлениеНоменклатуры = СтрокаДанных.Номенклатура.НаименованиеПолное;
        КонецЕсли;
    КонецЦикла;
    
    Возврат Результат;
КонецФункции

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

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

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

Посмотрим на алгоритм реализации ВПФ:

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

Способ 4. Быстрое ручное исправление перед печатью (Разовое решение)

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

Для этого выполним простые действия:

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

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

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

← На главную