Как вывести картинку номенклатуры в СКД только на уровне группировки

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

При работе с системой компоновки данных (СКД) часто возникает задача визуализации данных, например, вывода изображений товаров. Стандартное поведение СКД — привязывать вывод данных к каждой строке детальных записей. Это приводит к тому, что при группировке по Номенклатуре с детализацией по Характеристикам, изображение дублируется для каждой характеристики. Разберем, как изменить этот процесс и выводить картинку только один раз на уровне Номенклатуры.

Анализ причин дублирования

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

Решение через вычисляемые поля и структуру запроса

Чтобы успешно вывести изображение на верхнем уровне, выполним настройку по шагам:

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

Важные рекомендации по настройке

Если при попытке добавления картинки в группировку вы получаете ошибку о запрете использования поля, проверьте следующие моменты:

Альтернативные методы реализации

Если описанный метод требует слишком много доработок в коде общего модуля, вы можете воспользоваться следующими подходами:

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

Вы можете не выводить поле в структуру данных, а воспользоваться механизмом Условного оформления. В настройках СКД для группировки Номенклатура создайте новое условие. В оформлении выберите свойство Картинка. Это позволяет отвязать логику вывода от структуры детальных записей. Однако этот метод может быть менее гибким при сложном форматировании отчета.

Создание макета группировки

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

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

← На главную