Где в 1С:УТ 11.5 хранятся изображения товаров и как их вывести в отчете на СКД?

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

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

Эта ситуация вызывает закономерный вопрос: где теперь искать двоичные данные картинки и как адаптировать старые отчеты на СКД, которые выводили изображения товаров? Давайте разберем этот вопрос по шагам.

Анализ изменений: что, где и почему?

Переход от одного регистра к другому — это не просто переименование, а часть планомерного развития платформы. Фирма «1С» унифицирует работу с файлами во всех своих типовых решениях, внедряя механизм из БСП.

Основные причины изменений:

  1. Унификация. Единый подход для всех современных конфигураций (УТ, ERP, КА) упрощает поддержку, разработку и обмен данными.
  2. Производительность. Разделение метаданных о файле (название, автор, дата) и его «тяжелого» бинарного содержимого — это правильный архитектурный подход. Он позволяет быстро работать со списками файлов, не загружая в память сами изображения.
  3. Гибкость хранения. Новый механизм изначально поддерживает два варианта хранения, которые можно настроить в разделе Администрирование – Настройки работы с файлами:
    • В информационной базе: Удобно для небольших объемов данных. Все хранится в одном месте и попадает в стандартный бэкап.
    • В томах на диске: Рекомендуется для больших баз. Это предотвращает «раздувание» файла базы данных (.1CD), ускоряет резервное копирование и обслуживание. В базе хранятся только ссылки (пути), а сами файлы лежат в папках на сервере.
  4. Перспективы развития. Эта архитектура стала основой для интеграции с облачными S3-хранилищами, что позволяет создавать масштабируемые и отказоустойчивые системы.

Новая структура хранения файлов: разбираем связи

Чтобы правильно составить запрос для отчета, нужно понимать новую цепочку объектов, которая связывает номенклатуру с ее изображением. Раньше связь была проще, теперь она более многоуровневая, но логичная.

Вот как выглядит современная схема:

Номенклатура → НоменклатураПрисоединенныеФайлы → ВерсииФайлов → ХранилищеФайлов

Разберем каждый элемент этой цепочки:

Таким образом, чтобы добраться до картинки, нам нужно пройти по всей этой цепочке с помощью соединений в запросе.

Практическое решение: выводим изображение в отчете на СКД

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

  1. Основная таблица. Начнем с основного объекта — справочника Номенклатура.

  2. Присоединяем файл картинки. В справочнике Номенклатура есть реквизит ФайлКартинки. Он ссылается на основной файл изображения в справочнике НоменклатураПрисоединенныеФайлы. Используем его для первого соединения.

    Делаем ЛЕВОЕ СОЕДИНЕНИЕ со справочником НоменклатураПрисоединенныеФайлы по условию Номенклатура.ФайлКартинки = НоменклатураПрисоединенныеФайлы.Ссылка.

  3. Получаем версию файла. Теперь от присоединенного файла нам нужно перейти к его версии. В справочнике НоменклатураПрисоединенныеФайлы есть реквизит, ссылающийся на текущую активную версию (обычно это реквизит типа СправочникСсылка.ВерсииФайлов, например, ТекущаяВерсия).

    Делаем ЛЕВОЕ СОЕДИНЕНИЕ со справочником ВерсииФайлов по условию НоменклатураПрисоединенныеФайлы.ТекущаяВерсия = ВерсииФайлов.Ссылка.

  4. Извлекаем двоичные данные. Финальный шаг — получить само изображение из нового хранилища.

    Делаем ЛЕВОЕ СОЕДИНЕНИЕ с регистром сведений ХранилищеФайлов по условию ВерсииФайлов.Ссылка = ХранилищеФайлов.ВерсияФайла. Из этого регистра забираем ресурс Хранилище — это и есть наши двоичные данные.

Важный момент: обратная совместимость. При обновлении конфигурации старые файлы могут оставаться в устаревшем регистре УдалитьДвоичныеДанныеФайлов. Чтобы отчет работал корректно в переходный период, пока все данные не будут перенесены фоновым заданием, лучше объединить данные из двух регистров. Это можно сделать с помощью ОБЪЕДИНИТЬ ВСЕ.

Посмотрим на пример итогового запроса:


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

Обратите внимание: в примере выше используется подзапрос с объединением для получения данных из нового и старого хранилищ. Имя реквизита для связи с версией в справочнике присоединенных файлов может отличаться (например, ТекущаяВерсия или другое), его следует уточнить в конфигураторе. После того как все данные будут перенесены в новый регистр, часть запроса с ОБЪЕДИНИТЬ ВСЕ и регистром УдалитьДвоичныеДанныеФайлов можно будет убрать для оптимизации.

После получения поля с двоичными данными в СКД не забудьте настроить его отображение в макете. В поле вывода установите тип «Картинка». Если же перед вами стоит задача не вывести саму картинку, а лишь отобразить индикатор наличия вложений в формах списков, рекомендуем ознакомиться с решением по выводу «скрепки» в журналах документов для УТ 11.5.

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

← На главную