Рассмотрим задачу, с которой часто сталкиваются разработчики: необходимо добавить возможность хранить изображение для каждой позиции номенклатуры в конфигурации "1С:Бухгалтерия 3.0" и, что самое главное, выводить эти изображения в стандартных отчетах, например, в оборотно-сальдовой ведомости или строить расширенный анализ выполнения отгрузки и оплат по счетам на оплату — для этого есть обработка для формирования прайс-листов с изображениями товаров. На первый взгляд задача кажется нетривиальной, поскольку типовые бухгалтерские отчеты не предназначены для отображения графики. Однако современные версии платформы 1С предоставляют для этого все необходимые инструменты. Давайте разберемся по шагам, как это реализовать.
Прежде чем выводить картинки, нужно определиться, где и как мы будем их хранить — в этом поможет управление и сжатие изображений номенклатуры. Существует два основных подхода, каждый со своими плюсами и минусами. Реализацию в обоих случаях лучше всего выполнять через механизм расширений, не изменяя основную конфигурацию.
Вариант 1: Хранение в базе данных (в реквизите справочника)
Это самый прямой путь, который изначально и рассматривал автор вопроса. Мы добавляем в справочник Номенклатура новый реквизит, например, с именем Изображение и типом данных ХранилищеЗначения. В это хранилище и будет помещаться двоичное представление картинки.
Вариант 2: Использование механизма присоединенных файлов (рекомендуемый)
Этот подход является более профессиональным и масштабируемым. Он используется в типовых конфигурациях, таких как "Управление торговлей 11", где часто требуется реализовать просмотр изображения номенклатуры текущей строки (удобно через вывод изображений и цен в формах списка). Суть в том, чтобы не хранить файлы непосредственно в объекте, а создать отдельный справочник для файлов и связывать их с номенклатурой.
Разберем по шагам, как это можно сделать в расширении:
НоменклатураПрисоединенныеФайлы, подчиненный справочнику Номенклатура.ФайлКартинки с типом ХранилищеЗначения, куда и будут помещаться двоичные данные изображения.Номенклатура добавляем реквизит ОсновноеИзображение с типом СправочникСсылка.НоменклатураПрисоединенныеФайлы.Таким образом, мы храним в номенклатуре лишь ссылку на файл, а сами тяжелые данные лежат в отдельной таблице. Этот метод позволяет не только хранить основное изображение, но и легко расширить функциональность для хранения нескольких картинок для одного товара — для их вывода пригодится печать изображений номенклатуры из присоединенных файлов.
Итак, мы организовали хранение. Теперь самое интересное — как показать картинки в отчете. К счастью, платформа 1С, начиная с версии 8.3.14, позволяет делать это штатными средствами Системы Компоновки Данных (СКД) — для отладки пригодится консоль запросов и СКД для разработчика. Чтобы лучше понять механику работы системы, можно изучить внешний отчет на СКД, который демонстрирует принципы вывода данных из базы.
Важное требование: Убедитесь, что ваша конфигурация работает в режиме совместимости не ниже 8.3.14. Если режим совместимости более старый, этот функционал будет недоступен.
Проанализируем алгоритм действий:
Номенклатура.Изображение.Посмотрим на примерный текст запроса для второго, рекомендуемого варианта:
ВЫБРАТЬ
Номенклатура.Ссылка КАК Номенклатура,
Номенклатура.ОсновноеИзображение.ФайлКартинки КАК КартинкаНоменклатуры,
// ... другие поля для отчета
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.НоменклатураПрисоединенныеФайлы КАК Файлы
ПО Номенклатура.ОсновноеИзображение = Файлы.Ссылка
В результате этого запроса поле КартинкаНоменклатуры будет содержать необходимые нам двоичные данные.
КартинкаНоменклатуры) добавлено в список выводимых полей.
Картинка.КартинкаНоменклатуры).КартинкаНоменклатуры или специально созданная для этого колонка.РазмерКартинки: позволяет выбрать режим масштабирования (например, Авторазмер, Растянуть, Пропорционально).ПоложениеКартинки: определяет выравнивание картинки в ячейке (например, Слева, Центр, Справа).Эти настройки позволяют аккуратно вписать изображение в ячейку отчета, чтобы оно выглядело гармонично.
После выполнения этих шагов в вашем отчете, сформированном на СКД, напротив каждой номенклатуры будет отображаться соответствующая картинка. Подобная визуализация значительно упрощает работу, как и отображение остатков и цен в справочнике Номенклатура. Таким образом, даже стандартные отчеты можно обогатить важной визуальной информацией.