Как добавить изображение номенклатуры в отчет «Прайс-лист» в 1С:ERP и УТ 11

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

В современных бизнес-процессах визуализация данных играет ключевую роль. Клиентам гораздо удобнее работать с прайс-листом, в котором они сразу видят внешний вид товара, а не только его артикул и наименование. Однако в типовых конфигурациях 1С:ERP и 1С:Управление торговлей 11 вывод изображений в стандартные отчеты часто требует дополнительной настройки со стороны разработчика. В этой статье мы подробно разберем, как устроена архитектура хранения изображений и как вывести их в отчет с помощью Системы компоновки данных (СКД). Для решения этой задачи есть готовый генератор Excel прайс-листов с остатками и изображениями.

Архитектура хранения файлов в типовых конфигурациях

Прежде чем приступать к написанию запроса, нам необходимо разобраться, где именно лежат данные. В конфигурациях, построенных на Библиотеке стандартных подсистем (БСП), таких как 1С:ERP, 1С:КА 2 и 1С:УТ 11, используется многоуровневая структура хранения. Разберем эту цепочку по шагам:

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

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

Шаг 1. Подготовка запроса в СКД

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


ВЫБРАТЬ
    Номенклатура.Ссылка КАК Товар,
    Номенклатура.Артикул КАК Артикул,
    Номенклатура.ФайлКартинки КАК ФайлСсылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.ЭтоГруппа

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

Шаг 2. Настройка вычисляемых полей

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

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

ПолучитьНавигационнуюСсылку(ФайлСсылка)

В колонке «Тип значения» обязательно укажем Картинка. Это даст сигнал системе, что данные нужно интерпретировать как визуальный объект.

Шаг 3. Настройка оформления и вывода

Теперь выясним, как правильно расположить картинку в итоговой таблице документа. На вкладке «Настройки» в СКД выберем наше поле Изображение и настроим его условное оформление:

  1. Установим фиксированную ширину и высоту ячейки. Если этого не сделать, картинки разных размеров «разнесут» отчет, и он станет нечитаемым. Рекомендуемые значения для прайс-листа: ширина 15-20, высота 15-20.
  2. В параметре «Выводить картинку» укажем значение «Картинка».

Проанализируем важный нюанс: если мы формируем прайс-лист на 10 000 позиций, одновременная загрузка всех полноразмерных изображений приведет к ошибке Нехватка памяти. Выясним, как этого избежать. Для решения проблемы нехватки памяти есть обработка для сжатия и оптимизации изображений в 1С.

Оптимизация работы с миниатюрами (превью)

В 1С:ERP реализован механизм создания миниатюр. При загрузке основного изображения система автоматически генерирует уменьшенную копию. Для отчета «Прайс-лист» использование миниатюр является обязательным условием стабильной работы. Вместо обращения к основному файлу, следует обращаться к связанному файлу превью, если он существует в системе.

Посмотрим на пример логики: в справочнике НоменклатураПрисоединенныеФайлы могут быть ссылки на связанные превью-изображения. Если программно или через запрос подтянуть именно их, нагрузка на оперативную память снизится в десятки раз.

Проблема выгрузки в Excel

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

Для решения этой проблемы мы рекомендуем использовать программный вывод в Excel через COM-соединение или специализированные библиотеки, которые позволяют жестко закрепить объект «Картинка» внутри координат ячейки. Если же используется стандартное сохранение, убедитесь, что в свойствах ячеек в 1С установлено «Размещение: Переносить», а размер картинки максимально приближен к размеру ячейки. Также для корректного экспорта без искажений можно использовать модуль выгрузки произвольных данных с картинками в Excel.

Альтернативный вариант: Использование внешних ссылок

Если ваша база данных хранит огромное количество медиаконтента, возможно, стоит рассмотреть альтернативный путь. Вместо того чтобы хранить картинки в ДвоичныеДанныеФайлов, можно выводить в отчет QR-код или текстовую гиперссылку на публичный сервер/облако, где хранятся фотографии товаров. Это сделает отчет максимально легким, а клиент сможет открыть фото в высоком разрешении по клику. Для реализации этого в СКД достаточно добавить поле типа Строка и в оформлении указать «Гиперссылка: Да».

Заключение

Мы разберем по шагам весь процесс: от понимания того, что данные лежат в связке Номенклатура -> ПрисоединенныеФайлы -> ДвоичныеДанные, до тонкой настройки визуализации в СКД. Помните, что добавление изображений — это всегда компромисс между красотой отчета и скоростью его формирования. Используйте миниатюры, ограничивайте количество позиций в одном отчете и всегда проверяйте корректность отображения при экспорте во внешние форматы.

← На главную