К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как в макете 1С не выводить рисунок

Как скрыть или не выводить рисунок в макете 1С: параметры табличного документа, условное форматирование, программное удаление картинки из печатной формы.

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

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

Как рисунки хранятся в макете табличного документа

В типовом макете 1С (объект «Макет» с типом «Табличный документ») рисунок не является частью ячейки. Он лежит «поверх» таблицы как отдельный объект — по аналогии с изображением в Excel. У каждого рисунка есть имя, положение, размер и привязка к области макета.

При выводе макета в табличный документ рисунок копируется вместе с областью, к которой он привязан. Поэтому просто очистить текст ячейки недостаточно — картинка останется. Управлять ею нужно как отдельным элементом через коллекцию Рисунки табличного документа.

Понимание этой модели важно: большинство ошибок при попытке «спрятать» картинку связаны именно с тем, что её пытаются убрать как текст ячейки, а не как объект рисунка.

Способ 1. Удалить рисунок из макета в конфигураторе

Это самый простой и надёжный вариант, если рисунок не нужен никогда и ни в каких печатных формах, построенных на этом макете. Изменение вносится один раз и действует для всех пользователей.

Порядок действий: откройте конфигуратор, найдите нужный макет (обычно в ветке «Общие» → «Макеты» или в составе конкретного объекта, например документа «Счёт на оплату»). Откройте макет двойным щелчком — откроется редактор табличного документа. Щёлкните по рисунку левой кнопкой мыши, чтобы он выделился рамкой, и нажмите Delete. Сохраните конфигурацию и обновите конфигурацию базы данных.

Если рисунок трудно выделить мышью (перекрыт другими элементами или привязан к объединённой области), используйте меню «Таблица» → «Рисунки» или щёлкните по элементу правой кнопкой и выберите «Свойства» — в палитре свойств видно, какой именно объект выделен.

Способ 2. Программно удалить рисунок из табличного документа

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

Типовой код выглядит так: после того как область выведена в табличный документ, найдите рисунок по имени в коллекции ТабличныйДокумент.Рисунки и удалите его методом Удалить(). Имя рисунка можно посмотреть в конфигураторе, выделив его в макете и открыв палитру свойств.

bsl
// После вывода области в табличный документ
Для Каждого Рисунок Из ТабличныйДокумент.Рисунки Цикл
    Если Рисунок.Имя = "Печать" Тогда
        ТабличныйДокумент.Рисунки.Удалить(Рисунок);
        Прервать;
    КонецЕсли;
КонецЦикла;

Обратите внимание: коллекция Рисунки содержит рисунки всего табличного документа, поэтому удалять нужно после вывода конкретной области. Если областей с рисунками несколько (например, печать выводится на каждой странице), удаление нужно выполнять после каждого вывода или перебрать коллекцию целиком по окончании формирования документа.

Способ 3. Условный вывод: по параметру или настройке

На практике чаще всего требуется не «убрать навсегда», а «выводить по условию»: с печатью или без, с логотипом или без. Для этого в модуль менеджера печати добавляют параметр, например ВыводитьПечать, и проверяют его при формировании табличного документа.

Порядок действий
  1. 1
    Добавьте параметр (например, «БезПечати») в процедуру формирования печатной формы или в настройки макета.
  2. 2
    Выведите области макета в табличный документ как обычно.
  3. 3
    Если параметр требует скрыть рисунок — переберите коллекцию ТабличныйДокумент.Рисунки и удалите нужные элементы по имени.
  4. 4
    Выведите табличный документ пользователю или отправьте на печать.
  5. 5
    Проверьте оба варианта: с рисунком и без, на реальном документе.

Альтернатива удалению — замена содержимого рисунка на пустую картинку: присвойте свойству Рисунок.Картинка значение Новый Картинка. Визуально результат тот же, но объект остаётся на месте, что иногда удобнее при сложной вёрстке, где удаление элемента может повлиять на привязки других рисунков.

Способ 4. Скрытие через внешнюю печатную форму или расширение

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

В расширении можно переопределить модуль менеджера печати объекта: заимствуйте процедуру формирования печатной формы с аннотацией &ИзменениеИКонтроль или &Вместо и добавьте в неё удаление рисунка по имени. Так типовая конфигурация остаётся на полной поддержке, а обновления не затрагивают вашу доработку.

Сравнение вариантов

Удаление в макете конфигуратора

Подходит, если рисунок не нужен никогда. Минус: снимает объект с поддержки, при обновлении изменение может быть потеряно.

Программное удаление по имени

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

Внешняя печатная форма

Не трогает конфигурацию вообще, легко откатить. Минус: при смене типового макета внешнюю форму нужно синхронизировать вручную.

Расширение конфигурации

Сохраняет поддержку и устойчиво к обновлениям. Минус: требует навыков работы с расширениями и тестирования на новых релизах.

Проверка результата и типичные ошибки

После внесения изменений сформируйте печатную форму реального документа и проверьте: рисунка нет ни на экране предпросмотра, ни в сохранённом файле (PDF, Excel), ни на бумажном отпечатке. Проверьте документы с разным количеством страниц — рисунок может выводиться в шапке каждой страницы.

Контрольные точки

Как проверить результат

Предпросмотр печатной формы
Норма

Рисунок отсутствует во всех экземплярах области

Тревожный признак

Рисунок виден на второй и последующих страницах

Сохранение в PDF или Excel
Норма

В файле картинки нет

Тревожный признак

В файле рисунок есть — значит, удаление выполнено после вывода в файл

Другие печатные формы на том же макете
Норма

Поведение соответствует задуманному

Тревожный признак

Рисунок пропал там, где должен оставаться — удаление сделано в общем макете вместо условного

Типичные ошибки
01
Очистка текста ячейки вместо удаления объекта рисунка — картинка остаётся, потому что она не хранится в ячейке.
02
Удаление рисунка до вывода области — коллекция ещё пуста, удалять нечего, и картинка появляется. Удаляйте после Вывести().
03
Удаление по индексу вместо имени — при изменении макета порядок рисунков меняется, и удаляется не тот элемент.
04
Изменение типового макета без копии — при обновлении конфигурации рисунок возвращается, и доработку приходится повторять.
05
Удаление рисунка в цикле по коллекции, из которой он удаляется — пропускаются элементы; используйте обратный перебор или Прервать после первого удаления.

Частые вопросы

Как узнать имя рисунка в макете?

Откройте макет в конфигураторе, щёлкните по рисунку и вызовите «Свойства» из контекстного меню. Имя указано в первом поле палитры свойств. Если имени нет, задайте его вручную — тогда к рисунку можно будет обращаться из кода.

Можно ли скрыть рисунок без конфигуратора, прямо в режиме 1С:Предприятие?

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

Рисунок удалён, но при печати всё равно выходит пустое место. Почему?

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

Как не выводить печать и подпись только для определённой организации?

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

Что делать, если рисунок выводится через СКД, а не табличный документ?

В схеме компоновки данных рисунок обычно помещается в макет СКД (закладка «Макеты» конструктора). Удалите элемент из макета СКД или уберите соответствующую область. Логика отличается от табличного документа: коллекции «Рисунки» там нет, управление идёт через структуру макета компоновки.

Вернётся ли рисунок после обновления конфигурации?

Если вы изменили типовой макет напрямую — да, при полной загрузке конфигурации поставщика макет будет заменён на типовой. Изменения, внесённые через расширение или внешнюю печатную форму, обновлению не мешают и сохраняются.

Итог

Что важно запомнить

Рисунок в макете 1С — отдельный объект, а не содержимое ячейки, поэтому убирать его нужно либо удалением из макета в конфигураторе, либо программно через коллекцию ТабличныйДокумент.Рисунки после вывода области. Для типовых конфигураций безопаснее использовать условное удаление в коде, внешнюю печатную форму или расширение — так доработка переживёт обновление.