Как вывести изображения номенклатуры в отчетах 1С?

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

Рассмотрим задачу, с которой часто сталкиваются разработчики: необходимо добавить возможность хранить изображение для каждой позиции номенклатуры в конфигурации "1С:Бухгалтерия 3.0" и, что самое главное, выводить эти изображения в стандартных отчетах, например, в оборотно-сальдовой ведомости или строить расширенный анализ выполнения отгрузки и оплат по счетам на оплату — для этого есть обработка для формирования прайс-листов с изображениями товаров. На первый взгляд задача кажется нетривиальной, поскольку типовые бухгалтерские отчеты не предназначены для отображения графики. Однако современные версии платформы 1С предоставляют для этого все необходимые инструменты. Давайте разберемся по шагам, как это реализовать.

Шаг 1. Организация хранения изображений

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

Вариант 1: Хранение в базе данных (в реквизите справочника)

Это самый прямой путь, который изначально и рассматривал автор вопроса. Мы добавляем в справочник Номенклатура новый реквизит, например, с именем Изображение и типом данных ХранилищеЗначения. В это хранилище и будет помещаться двоичное представление картинки.

Вариант 2: Использование механизма присоединенных файлов (рекомендуемый)

Этот подход является более профессиональным и масштабируемым. Он используется в типовых конфигурациях, таких как "Управление торговлей 11", где часто требуется реализовать просмотр изображения номенклатуры текущей строки (удобно через вывод изображений и цен в формах списка). Суть в том, чтобы не хранить файлы непосредственно в объекте, а создать отдельный справочник для файлов и связывать их с номенклатурой.

Разберем по шагам, как это можно сделать в расширении:

  1. Создаем новый подчиненный справочник, например, НоменклатураПрисоединенныеФайлы, подчиненный справочнику Номенклатура.
  2. В этом новом справочнике создаем реквизит ФайлКартинки с типом ХранилищеЗначения, куда и будут помещаться двоичные данные изображения.
  3. В справочник Номенклатура добавляем реквизит ОсновноеИзображение с типом СправочникСсылка.НоменклатураПрисоединенныеФайлы.

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

Шаг 2. Вывод изображений в отчетах на СКД

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

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

Проанализируем алгоритм действий:

  1. Подготовка запроса в СКД.
    Ключевой момент — запрос должен возвращать поле, содержащее двоичные данные изображения.
    • Если вы выбрали Вариант 1 (хранение в реквизите), то в запросе достаточно просто выбрать этот реквизит: Номенклатура.Изображение.
    • Если вы выбрали Вариант 2 (через присоединенные файлы), запрос будет немного сложнее. Нужно будет соединить основную таблицу с таблицей присоединенных файлов.

    Посмотрим на примерный текст запроса для второго, рекомендуемого варианта:

    
    ВЫБРАТЬ
        Номенклатура.Ссылка КАК Номенклатура,
        Номенклатура.ОсновноеИзображение.ФайлКартинки КАК КартинкаНоменклатуры,
        // ... другие поля для отчета
    ИЗ
        Справочник.Номенклатура КАК Номенклатура
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НоменклатураПрисоединенныеФайлы КАК Файлы
            ПО Номенклатура.ОсновноеИзображение = Файлы.Ссылка
    

    В результате этого запроса поле КартинкаНоменклатуры будет содержать необходимые нам двоичные данные.

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

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

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

← На главную