Как программно удалить или скрыть картинку (факсимиле) в таблице 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

Разработка печатных форм в системе 1С:Предприятие 7.7 часто сопряжена с определенными трудностями, особенно когда речь идет о динамическом управлении графическими объектами. В отличие от версии 8.x, где каждый рисунок является объектом коллекции с доступными методами Удалить() или свойством Видимость, штатный функционал «семерки» весьма ограничен. Рассмотрим подробнее, как можно реализовать задачу скрытия или удаления факсимильной печати в зависимости от условий, например, при нажатии на флажок в форме.

Метод 1: Использование различных секций таблицы

Проанализируем самый надежный и «чистый» с точки зрения платформы способ. Вместо того чтобы пытаться удалить уже выведенный объект, мы определим логику вывода еще на этапе формирования таблицы. Для этого в шаблоне печатной формы создаются две идентичные области (секции), которые назовем, например, Подпись и ПодписьФаксимиле.

Разберем алгоритм действий:

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

Посмотрим на пример кода, реализующего этот подход:


Если ФлагВыводитьФаксимиле = 1 Тогда
    Таб.ВывестиСекцию("ПодписьФаксимиле");
Иначе
    Таб.ВывестиСекцию("Подпись");
КонецЕсли;

Этот метод исключает необходимость манипулировать объектами после их появления на экране и является наиболее стабильным. Однако он требует дублирования областей в макете, что может быть неудобно при сложных формах.

Метод 2: Манипуляция размерами и координатами (программный «хак»)

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

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

Пример логики:

Важный нюанс: Чтобы этот метод работал, рисунок должен иметь имя в свойствах (в режиме конфигуратора), к которому можно обратиться (хотя в штатной 7.7 программный доступ к именам картинок без внешних компонент крайне ограничен и часто требует использования TableDoc.dll).

Метод 3: Использование внешней компоненты Йоксель (Yoksel)

Рассмотрим наиболее профессиональный подход. Для полноценной работы с табличными документами в 1С 7.7 часто применяется компонента Йоксель (развитие идей TableDoc.dll). Она расширяет объектную модель таблицы до уровня, сопоставимого с современными версиями 1С.

С помощью Йокселя мы можем обращаться к коллекции ГрафическиеОбъекты. Это позволяет реализовать следующие действия:

  1. Перебирать все картинки в документе.
  2. Удалять конкретный объект методом Удалить().
  3. Управлять свойством Видимость (0 или 1), что полностью решает задачу автора темы.

Проанализируем примерный принцип работы через компоненту:


// Предположим, ГрафОбъект получен из коллекции графики таблицы
ГрафОбъект.Видимость = ?(НужноОтобразить = 1, 1, 0);

Использование формата WMF для прозрачности

Часто вопрос удаления картинки возникает из-за того, что она перекрывает текст или другие элементы своим белым фоном. Разберем технический момент: штатные форматы (BMP, JPG) в 1С 7.7 плохо поддерживают прозрачность. Однако платформа отлично работает с векторным форматом WMF (Windows Metafile).

Если подготовить факсимиле в формате WMF, оно будет обладать естественной прозрачностью. Это позволяет:

Итоги и рекомендации

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

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

← На главную