СКД. Отчеты с картинками

25.09.19

Разработка - СКД

Решение популярных кейсов с картинками в отчетах на СКД.

Опять баян

Тема с добавлением картинок в отчеты на СКД появляется периодически на просторах сообщества и вне его. Самыми популярными задачами являются добавление логотипа компании в шапку отчета и отображение картинок товаров.

Почти всегда эти требования появляются для прайс-листов, но бывают и исключения.

Сегодня рассмотрим решения обоих кейсов, а также новые возможности платформы для вывода картинок.

Кейс №1: Логотип в шапке отчета

Начнем с простой задачи - вывод логотипа в шапку отчета на СКД.

Хочу логотип

И так, у нас есть простой внешний отчет "Прайс-лист", в котором для номенклатуры выводятся цены в разрезе их типов. Отчет создан для типовой конфигурации "Управление торговлей" версии 11. На следующем скриншоте представлен вывод для стандартных настроек отчета.

 
 Пример вывода стандартного отчета

Наша задача заключается в добавлении в шапку табличного документа отчета логотипа компании. Для этого нам необходимо программно сформировать отчет и вставить изображение логотипа. Теперь подробнее.

Подготовка

Для начала нам необходимо подготовить изображение для логотипа. Во внешний отчет добавим макет табличного документа "Логотип", в который вставим объект "Картинка" с необходимым изображением.

 
 Настройка макета для логотипа

Не забудьте создать область табличного документа для ячеек, где находится изображение логотипа. В текущем примере область названа "Логотип". Также нужно создать область "СвернутьЛоготип", которая будет использоваться для сворачивания/разворачивания логотипа в сформированном отчете.

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

 
 Вывод логотипа при компоновке результата

Алгоритм программного исполнения отчета не имеет ничего особенного, все стандартно. Перейдем непосредственно к решению поставленной задачи. Выводить логотип из дополнительного макета будем перед выполнением процессора вывода компоновки, но после очистки табличного документа. Итоговый программный код вывода логотипа в шапке отчета приведен на следующем листинге:

 
 Изменения для вывода логотипа

На этом процесс модификации отчета закончен. Посмотрим результат работы в режиме предприятия.

В режиме предприятия

Запустим созданный отчет в режиме предприятия. Мы увидим следующую картину:

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

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

Кейс №2: Вывод изображений номенклатуры

Теперь задача посложнее - нужно выводить изображения номенклатуры. Рассмотрим вариант решения по шагам.

Предисловие

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

 
 Пример сформированного отчета с изображением

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

В чем проблема?

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

Например, добавим в поле макета рисунок, как показано на следующем изображении:

 
 Добавляем изображение в макет СКД

В теории, СКД должна вывести в данной ячейке добавленный рисунок, но этого не происходит:

 
 Нет изображения в отчете!

Как мы видим, создание собственного макета не является решением данной задачи. Использование собственного макета имеет весьма ограниченные возможности в сравнении с отчетами НЕ на СКД.

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

Рассмотрим универсальное решение данной задачи, работающее при любых настройках отчета и выполняемой достаточно оптимальным образом.

Универсальное решение

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

Начнем с того, что нам придется изменить макет СКД в конструкторе, но не для добавления туда картинки, а для изменения вывода ячейки, в которой будет отображаться картинка. Пример такого отчета будет делать для типовой конфигурации "Управление торговлей" версии 11. В соответствии с текущими настройками конфигурации, файлы картинок, как и все прикрепленные файлы, хранятся в регистре сведений "ДвоичныеДанныеФайлов" в ресурсе "ХранимыйФайл" (тип "ХранилищеЗначений"), при этом связь элемента справочника "Номенклатура" и значения в регистре сведений осуществляется через справочник "НоменклатураПрисоединенныеФайлы", в элементах которого хранится информация о загруженных файлах. В самой номенклатуре в реквизите "ФайлКартинки" выбирается основное изображение из справочника "НоменклатураПрисоединенныеФайлы".

 
 Изменяем запрос набора данных для получения изображений

Запрос отчета на СКД выбирает в запросе номенклатуру и ссылку на файл основного изображения. Если мы выведем отчет на такой стадии, то он будет выглядеть следующим образом:

 
 Отчет еще не готов!

Из рисунка выше мы видим, что в отчете ссылка на присоединенный файл (элемент справочника "НоменклатураПрисоединенныеФайлы") отображается в виде представления (реквизит "Наименование"). Чтобы вмешаться в процесс формирования отчета и отобразить изображение в табличном документе, нам необходимо изменить алгоритм компоновки отчета.

Для начала в обработчике "ПриКомпоновкеРезультата" модуля объекта отчета отключим стандартную обработку и сформируем отчет полностью программным образом.

 
 Подготовим программное формирование отчета

Действия в программном коде подробно описаны в комментариях. Отмечу лишь важные моменты:

  1. В начале процедуры "ПриКомпоновкеРезультата" проводим инициализацию настроек.
  2. Далее по обычному алгоритму формируем отчет.
  3. Обязательно необходимо заполнить данные расшифровки, чтобы мы могли получать ссылки на данные, хранящиеся в ячейках табличного документа.

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

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

 
 Обходим ячейки отчета для добавления изображений

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

 
 Получение двоичных данных изображения

Может возникнуть логичный вопрос: "Почему не получить двоичные данные для изображений в одном запросе?". Ответ прост. Если мы будем получать изображения из регистра двоичных данных файлов в одном запросе, то очень велика вероятность получить ошибку "Недостаточно памяти", если размер выбираемых изображений будет очень большим.

Конечно, выполнять запрос в цикле тоже не правильно. Есть наиболее оптимальный способ получения изображений в нашем случае, но чтобы не усложнять пример оставим этот, относительно простой, способ получения картинок.

На этом реализация отчета закончена, посмотрим на его работу в режиме предприятия.

Что имеем

Сформируем отчет в виде простого списка номенклатуры. Результат будет следующим:

Теперь изменим настройки отчета. Вместо списка отчет будет иметь структуру таблицы, где строки - это ссылка на номенклатуру, а колонки - изображения.

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

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

 
 Финальный вариант после перемещения картинок в заголовки колонок таблицы

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

Платформенный путь

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

  1. Убедиться, что у вас режим совместимости 8.3.14 и выше, иначе функционал не будет доступен.
  2. В запросе получить двоичные данные картинок в отдельном поле.
  3. Добавить это поле в выбранные поля.
  4. Добавить условное оформление для этого поля, указав отображение картинки, положение и размер. Последние две настройки по необходимости.
 
 Инструкция с картинками

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

Спасибо за внимание

Благодарю за интерес к статье! Это не первая, и, я надеюсь, не последняя статья про вывод изображений в отчетах на СКД на Инфостарте. Ждем появления информации об опыте наших коллег. В будущем подходы к решению подобных задач могут измениться. Будем следить за событиями.

А пока всем удачи, здоровья, успехов! Подписывайтесь на канал, оставляйте комментарии. :)

Другие ссылки

СКД изображения картинки вывод прайс УТ УТ11

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122069    670    389    

712

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

3 стартмани

05.02.2024    4035    25    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8155    20    John_d    25    

123

Использование менеджера временных таблиц в СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    4652    PROSTO-1C    13    

61

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5805    15    kalyaka    5    

86

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    6696    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

01.09.2023    4518    KVIKS    15    

80
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. rpgshnik 3631 26.09.19 05:35 Сейчас в теме
Дельная статья и собрано в одном месте. Подача материала как всегда хорошая, лови ⭐
Михаська; abasovit; kulcha; pivovr; Free1CforAll; VVi3ard; rovenko.n; jaroslav.h; wowik; user1227864; МимохожийОднако; VIA_1C; YPermitin; +13 Ответить
2. пользователь 26.09.19 06:22
3. ZloyProger 8 26.09.19 08:54 Сейчас в теме
(0) Автор пеши есчо)) Как всегда отличная подача и материал интересный, лови заслуженный плюс.
Михаська; kulcha; Innuil; VVi3ard; YPermitin; +5 Ответить
4. пользователь 26.09.19 08:56
(3) хммм, и правда. Возможно забыл что-то, перепроверю сегодня :)

Спасибо )
5. ZloyProger 8 26.09.19 08:57 Сейчас в теме
(4) Да я отредактировал уже :-(, там же в процедуре получения изображения проверка и возврат пустой картинки если не тот тип) Поспешишь - людей насмешишь)
6. пользователь 26.09.19 08:59
(5) очепятался по полной :)
34. work.sable 26 10.06.20 06:03 Сейчас в теме
(0)
https://forum.infostart.ru/forum9/topic242540/
Есть вот такая проблема при формировании отчета по кейсу №2. Есть идеи в чем дело?
7. glek 119 26.09.19 09:10 Сейчас в теме
Классная статья. Утаскиваю в закладки
8. makc2k 107 26.09.19 10:05 Сейчас в теме
Можно выводить картинки "при компоновке" анализируя значение элемента КД

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
		
	Компоновщик = новый КомпоновщикМакетаКомпоновкиДанных;
	Настройки = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
	МакетКомпоновки = Компоновщик.Выполнить(СхемаКомпоновкиДанных,Настройки);
	
	ПроцессорКД = новый ПроцессорКомпоновкиДанных;
	ПроцессорКД.Инициализировать(МакетКомпоновки);
	
	ПроцессорВывода = новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	
	ПроцессорВывода.НачатьВывод();
	
	Пока Истина Цикл
		
		ЕлементРКД = ПроцессорКД.Следующий();
		
		Если ЕлементРКД = Неопределено Тогда
			Прервать;
		КонецЕсли;
		
		Рисунки = Новый Соответствие;
		
		// 1. Собираем рисунки
		
		Если ЕлементРКД.ЗначенияПараметров.Количество()>0 Тогда
			Для каждого Параметр Из ЕлементРКД.ЗначенияПараметров Цикл
				Если ТипЗнч(Параметр.Значение) = Тип("ХранилищеЗначения") Тогда
					КартинкаТД = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
					КартинкаТД.Картинка = новый Картинка(Параметр.Значение.Получить());
					КартинкаТД.РазмерКартинки = РазмерКартинки.Пропорционально;
					
					Рисунки.Вставить(Параметр.Имя,КартинкаТД);
					
					Параметр.Значение = Параметр.Имя;
					
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
		
		ПроцессорВывода.ВывестиЭлемент(ЕлементРКД);
		
		// 2. Вывести рисунки в табличный документ
		
		Для каждого Рисунок Из Рисунки Цикл
			
			ШиринаСтроки = ДокументРезультат.ШиринаТаблицы;
			
			Для Колонка = 1 По  ШиринаСтроки Цикл
				ВысотаТаб = СтрЗаменить(ДокументРезультат.ВысотаТаблицы, Символы.НПП, "");
				ОбластьВывода = ДокументРезультат.Область("R" + ВысотаТаб + "C" + Колонка);
				Если ОбластьВывода.Текст = Рисунок.Ключ Тогда
					Прервать;
				КонецЕсли;
			КонецЦикла;
			
			Рисунок.Значение.Расположить(ОбластьВывода);
			ОбластьВывода.ВысотаСтроки = 100;
		КонецЦикла;
	КонецЦикла;
	
	ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
Показать
Михаська; Simonov_NPM; simgo83; PetrPan; user811769; alevnev; acanta; YPermitin; A_Max; +9 Ответить
9. пользователь 26.09.19 11:58
(8) супер вариант!

Если не будете против, то через пару дней этот вариант добавлю в конце публикации с упоминанием Вашего авторства.
manaxov83; user811769; +2 Ответить
17. makc2k 107 26.09.19 17:13 Сейчас в теме
(9) Конечно нет, тем более сам его унес из УЦ №1 )))
10. ids79 8291 26.09.19 12:10 Сейчас в теме
Спасибо за статью!
Хорошие новости! Платформа 1С начиная с версии 8.3.14 (причем режим совместимости тоже должен быть 8.3.14 и выше) позволяет штатными средствами выводить картинки в отчетах на СКД

Здорово, не знал. Ну наконец-то сделали )).
acanta; Yashazz; YPermitin; +3 Ответить
11. пользователь 26.09.19 12:15
(10) я сам сначала в шоке был :)
12. Den75Ch 26.09.19 12:37 Сейчас в теме
13. AlX0id 26.09.19 14:02 Сейчас в теме
В запросе получить двоичные данные картинок в отдельном поле.

Это, конечно, хорошо.. Но как тогда быть вот с этим?
Если мы будем получать изображения из регистра двоичных данных файлов в одном запросе, то очень велика вероятность получить ошибку "Недостаточно памяти", если размер выбираемых изображений будет очень большим.
корум; YPermitin; +2 Ответить
14. пользователь 26.09.19 14:21
(13) подходить разумно:)

То есть:
1. Не хранить картинки для отчетов по 2.5 МБ
2. Ее формировать отчеты с выводом 1000 картинок. Все таки это больше какой-то точечный отчет.
3. Смириться и докупить железа :)
Федосеев; +1 Ответить
15. AlX0id 26.09.19 14:49 Сейчас в теме
(14)
Ну то есть 1сники чот сделали, но как это будет работать - хз )

По поводу смириться и докупить железа - еще не факт, возможно, просто расширить файл подкачки - ведь, если я правильно понимаю - если не хватает памяти реальной - она свопается на диск. Уж такого чтобы вообще "Не хватает памяти" - это либо 32битная система должна быть или же сильно маленький своп-файл..
YPermitin; +1 Ответить
16. пользователь 26.09.19 15:05
(15) на маленьких отчетах у меня нареканий нет. На больших не смотрел.

По нехватке памяти там сложнее. А на клиент-сервере еще вопросы с размером сеансовых данных будут и др. Вообщем надо тестить :)
30. Федосеев 12.02.20 02:53 Сейчас в теме
(15) Картинки при выводе на экран отжирают оперативку, так что хоть 1с хоть не 1с, я файлы картинок с диска тяну оперативка уходит только в путь. Так что как вариант можно взять клиентскую машину и впихать в нее 256 гигов оперативы.
29. Федосеев 12.02.20 02:50 Сейчас в теме
(14) Да есть многие ХОЧУКИ, которые хотят более 1000 позиций. Этакий прайс с картинками для себя. По тому что ассортимент большой помнить трудно а по картинкам сразу понятно. Как правило его печатают и забирают с собой. Как вариант формировать прайс по частям. На 4 гиговой машине при формировании прайса более 300 строк 1ска падает по нехватки памяти. на 16 гиговой полет нормальный.
21. RocKeR_13 1317 27.09.19 11:45 Сейчас в теме
(13) Еще на прошлых платформах, когда не добавили эту фишку, делал отчет по методу, описанном в сообщении (8). Так вот, отчет выводился, в котором было картинок на 6 Гб))) При этом временные файлы раздувались примерно до 18-20 Гб, но отчет формировался. На криво настроенной виртуалке время формирования приближалось к 5 часам))) Но тем не менее. Не думаю, что использование нового функционала платформы будет хуже)
YPermitin; +1 Ответить
22. пользователь 27.09.19 11:47
(21) однако.

Прайс на 6 ГБ? :)
23. RocKeR_13 1317 27.09.19 11:52 Сейчас в теме
(22) ну да, сеть магазинов одежды и обуви) Там картинки просто "жирные". На файловом варианте 1С пробовал этот же отчет на базе другого клиента - 800 строк с картинками выводились примерно минут 7-10
24. nsirotkin@mail.ru 75 30.09.19 08:33 Сейчас в теме
(23) Табличный документ получается сильно легче, а на экране или печати разницы не видно

Функция ВывестиИзображениеВОбластиТД(ДанныеКартинки, ТД, Область)
     Изображение = ТД.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
     Изображение.РазмерКартинки = РазмерКартинки.Пропорционально;
     Индекс = ТД.Рисунки.Индекс(Изображение);
     //ТД.Рисунки[Индекс].Картинка = Новый Картинка(ДанныеКартинки, Истина);
	 ////////////////////////////////////////////////////////////­////////////////////
	 Картинка = Новый Картинка(ДанныеКартинки, Истина);
	 Размер = ДанныеКартинки.Размер();
	 МаксимальныйРазмер = 40000;
	 Если Размер > МаксимальныйРазмер Тогда
	    ОбрабатываемаяКартинка = Новый ОбрабатываемаяКартинка(Картинка);
		Попытка
			Если Картинка.ПлотностьПоВертикали() >= 150 Тогда
				ОбрабатываемаяКартинка.УстановитьПлотность(72, 72);
			КонецЕсли; 
		Исключение
			
		КонецПопытки;
	    //ОбрабатываемаяКартинка.Масштабировать(Макс(10,Окр(100*МаксимальныйРазмер/Размер)));
	    Ширина = Картинка.Ширина();
	    МаксимальнаяШирина = 320;
	    Если Ширина > МаксимальнаяШирина Тогда
	    	ОбрабатываемаяКартинка.УстановитьРазмер(МаксимальнаяШирина,Окр(Картинка.Высота()/Ширина*МаксимальнаяШирина));
	    КонецЕсли; 
	    Картинка = ОбрабатываемаяКартинка.ПолучитьКартинку();
	 КонецЕсли; 
	 ТД.Рисунки[Индекс].Картинка = Картинка;
	 ////////////////////////////////////////////////////////////­////////////////////
	  
     ТД.Рисунки[Индекс].Расположить(Область);
     Возврат ТД.Рисунки[Индекс]; 
КонецФункции
Показать
saddy; Simonov_NPM; smwed; starik-2005; +4 Ответить
18. Yashazz 4709 26.09.19 17:21 Сейчас в теме
Кстати в новых релизах хвалятся, что ещё более будут продвигать вопрос картинок в СКД. В условном оформлении там и прочая, даже на Зазеркалье кажись было.
YPermitin; +1 Ответить
19. пользователь 26.09.19 18:29
(18) про Зазеркалье не знал. Как-то упустил из виду.
20. pan_alex 27.09.19 11:15 Сейчас в теме
Отличная статья!
YPermitin; +1 Ответить
25. ByNiko1984 11.12.19 11:16 Сейчас в теме
(0) статьи отличная. Плюс поставить не могу, говорит 5 минут назад ставил. А я только авторизовался.

Пишите еще!
26. ByNiko1984 11.12.19 11:20 Сейчас в теме
(25) а нет, смог поставить. Магия....
27. Cyberhawk 135 11.01.20 14:36 Сейчас в теме
метод "Выполнить" процессора вывода
Вывести
28. user_2010 871 31.01.20 16:17 Сейчас в теме
можно ли вывести картинку в качестве фона и на нее вывести текст отчета?
Спасибо!
31. Antoska 17 18.03.20 13:28 Сейчас в теме
Лично мне понадобилось добавить в функцию ПолучитьИзображение() проверку на пустую ссылку:
Если ТипЗнч(ПрисоединенныйФайл) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") И Не ПрисоединенныйФайл.Пустая() Тогда

Спасибо за очень удобное решение.
32. starik-2005 3033 13.04.20 17:50 Сейчас в теме
(0)
Конечно, есть и некоторые ограничения. Например, картинку в шапку Вы так не выведите, но для решения большинства задач работает отлично.
Ну если постараться, то можно. Все дело в волшебных таблицах.
33. mikl79 118 16.05.20 08:37 Сейчас в теме
Спасибо большое автору воспользовался и сделал отчет по товарам с картинками.
Так же попробовал вариант из ответа 8, спасибо makc2k, тоже заработало с небольшими правками.
По времени оба варианта примерно одинаково отработали.

У нас картинки хранятся в каталогах (томах) на диске, поэтому платформенный вариант видимо не подходит.
35. work.sable 26 10.06.20 06:03 Сейчас в теме
(0)
https://forum.infostart.ru/forum9/topic242540/
Есть вот такая проблема при формировании отчета по кейсу №2. Есть идеи в чем дело?
36. user1346935 18.08.20 10:19 Сейчас в теме
Как сказать "спасибо"? Могу одну маню подарить.
YPermitin; +1 Ответить
37. пользователь 18.08.20 10:21
(36) уже сказали, этого достаточно :)
38. Hatson 528 30.09.20 16:17 Сейчас в теме
Вместо функции ПолучитьИзображение() можно использовать готовую функцию общего модуля.
Двоичные данные могут храниться не в базе, а в томах.


		КартинкаНоменклатуры = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(ПрисоединенныйФайл);
		
		Если ТипЗнч(КартинкаНоменклатуры) = Тип("Картинка") Тогда
			Возврат КартинкаНоменклатуры;
		ИначеЕсли ТипЗнч(КартинкаНоменклатуры) = Тип("ДвоичныеДанные") Тогда
			Возврат Новый Картинка(КартинкаНоменклатуры);
		Иначе
			Возврат КартинкаПоумолчанию;
		КонецЕсли;


Показать
39. echo77 1868 16.10.20 18:47 Сейчас в теме
(38) Я написал в СКД в вычисляемом поле
ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(ПрисоединенныйФайл)

где ПрисоединенныйФайл - ссылка на элемент справочника Присоединенные файлы, в итоге отчет мне вывел текстовое содержимое двоичных данных - что не есть картинка.

Здесь важно понимать, что для вывода картинки поле должно содержать ХранилищеЗначения, которое содержит Картинку.

Если я не прав - дайте пожалуйста пример.
40. Hatson 528 20.10.20 17:57 Сейчас в теме
(39) У меня речь НЕ идет про вычисляемое поле.
Речь идет про обработчик ПриКомпоновкеРезультата()
41. edesyatov 39 08.03.21 12:10 Сейчас в теме
42. titanium2008 42 15.05.21 15:04 Сейчас в теме
подскажите, при платформенном добавлении - не дает выбрать поле с типом хранилище значений в группировке. Пишет ошибку что в группировке нельзя.
45. Snegur 08.06.21 16:45 Сейчас в теме
(42) один из способов в папку отдельно добавить
43. ivprovotorov 41 18.05.21 04:15 Сейчас в теме
Спасибо за статью! Уже использовал в работе ;-)
44. Yashazz 4709 26.05.21 17:31 Сейчас в теме
...а вообще есть ещё один способ, который работал всегда и который, возможно, самый быстрый - курочить табличные фрагменты, взятые из макетов макета компоновки, уже после обработки его процессора.
46. Snegur 08.06.21 16:46 Сейчас в теме
Подскажите кто-нибудь замерял, что работает быстрее платформой или ручное выведение картинки ?
47. ids79 8291 17.06.21 11:11 Сейчас в теме
На счет вывода картинок средствами СКД, у меня работает вывод по ссылке или "АВТО" в настройках условного оформления. Вывод по значению, как написано в статье ничего не выводит. В качестве источника так же, хранилище значения.
48. Ambakollajder 23.06.21 10:34 Сейчас в теме
(47) У меня на платформе 8.3.19.1150 вообще никак не хочет значение типа "ХранилищеЗначения" преобразовывать в картинку, ни с АВТО, ни по значению, ни по ссылке. При этом по навигационной ссылке работает
Прикрепленные файлы:
49. ids79 8291 23.06.21 10:52 Сейчас в теме
(48)Попробуйте не в формате поля, а в условном оформлении сделать.
50. Ambakollajder 23.06.21 11:58 Сейчас в теме
Все оказалось прозаичнее, я не оттуда хранилище значения для картинки взял.
51. sg12 17 05.07.21 17:18 Сейчас в теме
Пользовался статьей (метод платформы), до тех пор пока не попался на базу где картинки хранятся в томах. Из номенклатуры вытягиваю реквизит "Файл картинка", потом в вычисляемых полях использую функцию свою функцию которая помещает двоичные данные (РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки)) в хранилище значений, и не чего не выводит, убился уже.
LomayaZakat; Laretyn; EMelihoff; +3 Ответить
59. Laretyn 02.02.22 20:09 Сейчас в теме
(51) Тоже самое пытаюсь сделать) Побороли задачу?
52. EMelihoff 23.07.21 09:03 Сейчас в теме
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	
	ПроцессорВывода.НачатьВывод();
	ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	Пока ЭлементРезультата <> Неопределено Цикл
		Для Каждого ЭлементПараметра ИЗ ЭлементРезультата.ЗначенияПараметров Цикл  
			Если ТипЗнч(ЭлементПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
				ПоляРасшифровки	 = ДанныеРасшифровки.Элементы[ЭлементПараметра.Значение].ПолучитьПоля();
				Для Каждого ПолеРасшифровки Из ПоляРасшифровки Цикл
					Если ТипЗнч(ПолеРасшифровки.Значение) = Тип("ХранилищеЗначения") и ПолеРасшифровки.Поле = "ХранимыйФайл"  Тогда
						 ЗначениеКартинки = ПолеРасшифровки.Значение.Получить();
						 Если ЗначениеКартинки = Неопределено Тогда
							 Продолжить;
						 КонецЕсли;	 
						 //алгоритм вывода картинки
						Рисунок =  ДокументРезультат.рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
						Рисунок.Картинка = Новый Картинка(ЗначениеКартинки,Истина);
						//3 это номер колонки, Высота таблицы - строка вывода
						ОбластьИзображение = ДокументРезультат.область(ДокументРезультат.ВысотаТаблицы,3); //3 это номер колонки вы
						Рисунок.Расположить(ОбластьИзображение);
						
					КонецЕсли;	
				КонецЦикла;	
			КонецЕсли;	
		КонецЦикла;	
		ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);	
		ЭлементРезультата = ПроцессорКомпоновки.Следующий();
	КонецЦикла;	
	ПроцессорВывода.ЗакончитьВывод();
Показать
53. EMelihoff 23.07.21 09:52 Сейчас в теме
(52)//цифрой выводить жёстко номер колонки не универсально
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
	Для НомерСтроки = 1 По ДокументРезультат.ВысотаТаблицы Цикл
		
		Для НомерКолонки = 1 По ДокументРезультат.ШиринаТаблицы Цикл

			ТекущаяОбласть = ДокументРезультат.Область(НомерСтроки,НомерКолонки);
			Расшифровка =  ТекущаяОбласть.расшифровка;
			Если ТипЗнч(Расшифровка) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
				ПоляРасшифровки	 = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля();
				Для Каждого ПолеРасшифровки Из ПоляРасшифровки Цикл
					Если ТипЗнч(ПолеРасшифровки.Значение) = Тип("ХранилищеЗначения") и ПолеРасшифровки.Поле = "ХранимыйФайл"  Тогда
						ЗначениеКартинки = ПолеРасшифровки.Значение.Получить();
						Если ЗначениеКартинки = Неопределено Тогда
							Продолжить;
						КонецЕсли;	 
						
						//алгоритм вывода картинки
						Рисунок =  ДокументРезультат.рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
						Рисунок.Картинка = Новый Картинка(ЗначениеКартинки,Истина);
						//цифрой выводить жёстко номер колонки не универсально
						ОбластьИзображение = ДокументРезультат.область(НомерСтроки,НомерКолонки); 
						Рисунок.Расположить(ОбластьИзображение);
						
						//наведениеКрасоты
						ОбластьИзображение.ВысотаСтроки = 100;
						Рисунок.РазмерКартинки = РазмерКартинки.Пропорционально;
						Рисунок.ЦветЛинии = Новый Цвет(190,202,134);
					КонецЕсли;		
				КонецЦикла;
			КонецЕсли;	
		КонецЦикла;
		
	КонецЦикла;
Показать
54. EMelihoff 23.07.21 10:01 Сейчас в теме
(53) из минусов второго варианта, полный перебор таб. документа и повторная обработка вывода данных.
55. UserPro 4 04.08.21 16:05 Сейчас в теме
Платформенный метод вывод картинок в СКД работает если Детальная расшифровка, а в группировке почему то не работает. Например 1-я группировка Номенклатура для которой нужно получить Картинку и 2-я Характеристика для которой Картинка не нужна.
56. DarkDaemon 15.08.21 18:08 Сейчас в теме
Помогите с выводом картинок в стандартном Прайс-листе УТ 11.4. Жирным выделил строки в запросе, которые я добавил. В списке полей появилось поле Картинка, условное оформление сделал. Но в прайсе колонка Картинка не отображается. Думаю, что проблема в запросе. Добавил в список значений

ДвоичныеДанныеФайлов.ДвоичныеДанныеФайла КАК Картинка,

и соединение

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

Вот полный код запроса:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
	Сегменты.Номенклатура КАК Номенклатура,
	Сегменты.Характеристика КАК Характеристика,
	ИСТИНА КАК ИспользуетсяОтборПоСегментуНоменклатуры
ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
ИЗ
	РегистрСведений.НоменклатураСегмента КАК Сегменты
{ГДЕ
	Сегменты.Сегмент.* КАК СегментНоменклатуры,
	Сегменты.Номенклатура.* КАК Номенклатура,
	Сегменты.Характеристика.* КАК Характеристика}

ИНДЕКСИРОВАТЬ ПО
	Номенклатура,
	Характеристика,
	ИспользуетсяОтборПоСегментуНоменклатуры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	Ассортимент.Номенклатура КАК Номенклатура,
	Ассортимент.ОбъектПланирования КАК ОбъектПланирования,
	ИСТИНА КАК ИспользуетсяОтборПоАссортименту
ПОМЕСТИТЬ ОтборПоАссортименту
ИЗ
	РегистрСведений.Ассортимент.СрезПоследних(&Период) КАК Ассортимент
{ГДЕ
	Ассортимент.Номенклатура.* КАК Номенклатура,
	Ассортимент.ОбъектПланирования.* КАК ОбъектПланирования,
	Ассортимент.КоллекцияНоменклатуры.* КАК КоллекцияНоменклатуры,
	Ассортимент.РазрешеныПродажи КАК РазрешеныПродажи}
ИНДЕКСИРОВАТЬ ПО
	Номенклатура,
	ОбъектПланирования,
	ИспользуетсяОтборПоАссортименту
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	СвободныеОстаткиОстатки.Номенклатура,
	СвободныеОстаткиОстатки.Характеристика,
	СвободныеОстаткиОстатки.Склад,
	СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
	СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток КАК ВРезервеОстаток,
	ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) - ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеСоСкладаОстаток, 0) - ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеПодЗаказОстаток, 0) КАК Остаток,
	ТоварныеОграничения.СтраховоеКоличествоЗапаса КАК СтраховоеКоличествоЗапаса,
	ТоварныеОграничения.МинимальноеКоличествоЗапаса КАК МинимальноеКоличествоЗапаса,
	ТоварныеОграничения.МаксимальноеКоличествоЗапаса КАК МаксимальноеКоличествоЗапаса,
	ТоварныеОграничения.МетодОбеспеченияПотребностей КАК МетодОбеспеченияПотребностей
ПОМЕСТИТЬ СвободныеОстатки
ИЗ
	РегистрНакопления.СвободныеОстатки.Остатки(&Период, ) КАК СвободныеОстаткиОстатки
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТоварныеОграничения КАК ТоварныеОграничения
		ПО &ПодстановкаТоварногоОграничения
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
	ЦеныНоменклатурыСрезПоследних.Характеристика КАК Характеристика,
	ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
	ВЫБОР
		КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
			ТОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.ЕдиницаИзмерения
		ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Упаковка
	КОНЕЦ КАК Упаковка,
	ЦеныНоменклатурыСрезПоследних.Валюта КАК Валюта,
	ЦеныНоменклатурыСрезПоследних.Номенклатура.ЦеноваяГруппа КАК ЦеноваяГруппа,
	ВЫБОР
		КОГДА ЦеныНоменклатурыСрезПоследних.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
			ТОГДА СвободныеОстатки.Остаток
		ИНАЧЕ СвободныеОстатки.Остаток / &ТекстЗапросаКоэффициентУпаковки
	КОНЕЦ КАК Остаток,
	ВЫБОР
		КОГДА СвободныеОстатки.Остаток <= 0 ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.НетВНаличии) ИНАЧЕ
			ВЫБОР КОГДА СвободныеОстатки.Остаток <= (СвободныеОстатки.МинимальноеКоличествоЗапаса) ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.УточняйтеНаличие) ИНАЧЕ
				ВЫБОР 
					КОГДА СвободныеОстатки.Остаток < (СвободныеОстатки.СтраховоеКоличествоЗапаса + СвободныеОстатки.МинимальноеКоличествоЗапаса) ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.Мало) ИНАЧЕ
						ВЫБОР 
							КОГДА СвободныеОстатки.Остаток < СвободныеОстатки.МаксимальноеКоличествоЗапаса ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.Достаточно) ИНАЧЕ
								ВЫБОР КОГДА СвободныеОстатки.Остаток >= СвободныеОстатки.МаксимальноеКоличествоЗапаса 
									ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.Много) ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.Неизвестно)
							КОНЕЦ
						КОНЕЦ
				КОНЕЦ
		КОНЕЦ
	КОНЕЦ КАК ОстатокТекстом,
	СвободныеОстатки.Склад КАК Склад,
	СвободныеОстатки.МетодОбеспеченияПотребностей КАК МетодОбеспеченияПотребностей
ПОМЕСТИТЬ Цены
ИЗ
	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ВидЦены В (&ВидыЦен) {((Номенклатура, Характеристика) В
				(ВЫБРАТЬ
					ОтборПоСегментуНоменклатуры.Номенклатура,
					ОтборПоСегментуНоменклатуры.Характеристика
				ИЗ
					ОтборПоСегментуНоменклатуры
				ГДЕ
					ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)),
				((Номенклатура) В
				(ВЫБРАТЬ
					ОтборПоАссортименту.Номенклатура
				ИЗ
					ОтборПоАссортименту
				ГДЕ
					ОтборПоАссортименту.ИспользуетсяОтборПоАссортименту = &ИспользуетсяОтборПоАссортименту))
					}) КАК ЦеныНоменклатурыСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ СвободныеОстатки КАК СвободныеОстатки
		ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СвободныеОстатки.Номенклатура
			И ЦеныНоменклатурыСрезПоследних.Характеристика = СвободныеОстатки.Характеристика
			
		{ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, {ВидЦены КАК ВидЦеныДиапазон((Номенклатура, Характеристика) В
				(ВЫБРАТЬ
					ОтборПоСегментуНоменклатуры.Номенклатура,
					ОтборПоСегментуНоменклатуры.Характеристика
				ИЗ
					ОтборПоСегментуНоменклатуры
				ГДЕ
					ОтборПоСегментуНоменклатуры.ИспользуетсяОтборПоСегментуНоменклатуры = &ИспользуетсяОтборПоСегментуНоменклатуры)),
				((Номенклатура) В
				(ВЫБРАТЬ
					ОтборПоАссортименту.Номенклатура
				ИЗ
					ОтборПоАссортименту
				ГДЕ
					ОтборПоАссортименту.ИспользуетсяОтборПоАссортименту = &ИспользуетсяОтборПоАссортименту))
					}) КАК ЦеныНоменклатурыОтбор
		ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыОтбор.Номенклатура
			И ЦеныНоменклатурыСрезПоследних.Характеристика = ЦеныНоменклатурыОтбор.Характеристика
			}
		
ГДЕ
	ЦеныНоменклатурыСрезПоследних.Цена > 0
{ГДЕ
	ЦеныНоменклатурыОтбор.Цена КАК ЦенаОт,
	ЦеныНоменклатурыОтбор.Цена КАК ЦенаДо
}
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Цены.Номенклатура,
	Цены.Характеристика,
	Цены.ВидЦены,
	Цены.Цена,
	Цены.Упаковка,
	Цены.Валюта,
	Цены.ЦеноваяГруппа,
	Цены.Склад,
        ДвоичныеДанныеФайлов.ДвоичныеДанныеФайла КАК Картинка,
	ВЫБОР КОГДА Цены.Остаток <0 
		ТОГДА 0 
		ИНАЧЕ Цены.Остаток
	КОНЕЦ КАК Остаток,
	ВЫБОР КОГДА (Цены.МетодОбеспеченияПотребностей = ЗНАЧЕНИЕ (Перечисление.МетодыОбеспеченияПотребностей.ЗаказПодЗаказ))
			ИЛИ (Цены.МетодОбеспеченияПотребностей ЕСТЬ NULL И Цены.Остаток > 0)
		ТОГДА ЗНАЧЕНИЕ(Перечисление.ДоступностьТовараДляКлиента.ПодЗаказ)
		ИНАЧЕ Цены.ОстатокТекстом
	КОНЕЦ КАК ОстатокТекстом
{ВЫБРАТЬ
	Номенклатура.*,
	Характеристика.*,
	ВидЦены.*,
	Цена,
	Упаковка.*,
	Валюта.*,
	ЦеноваяГруппа.*,
	Склад.*}
ИЗ
	Цены КАК Цены
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНом
	ПО Цены.Номенклатура = СпрНом.Ссылка
	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
	ПО СпрНом.ФайлКартинки = ДвоичныеДанныеФайлов.Файл
{ГДЕ
	Цены.Номенклатура.*,
	Цены.Характеристика.*,
	Цены.ВидЦены.*,
	Цены.Цена,
	Цены.Упаковка.*,
	Цены.Валюта.*,
	Цены.Склад.*}
}
Показать
57. DarkDaemon 15.08.21 23:36 Сейчас в теме
Поменял
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНом
ПО Цены.Номенклатура = СпрНом.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
ПО СпрНом.ФайлКартинки = ДвоичныеДанныеФайлов.Файл

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

результат не изменился
58. &rew 49 13.10.21 11:33 Сейчас в теме
Решил попробовать данный метод. Вывести шапку из другого макета. Но при взаимодействии в вычисляемым полем, в котором вызывается функция общего модуля, СКД шлет "лесом" с синтаксической ошибкой. Как только убираем нашу шапку. Вычисляемое поле работает штатно.
Да, конфа старая, режим совместимости 8.3.8
60. ALLES 65 31.03.22 19:38 Сейчас в теме
Кто то пробовал сохранять результат отчета в эксель через Сохранить как - в экселе картинки в ячейках нормально располагаются или нет
61. Serg2000mr 311 07.06.23 00:06 Сейчас в теме
Если нужно переопределить расшифровку поля Картинка, то вариант с условным оформлением не подойдет, т.к. нужно использовать макет поля. Вместо условного оформления определяем макет, как на картинке:
Прикрепленные файлы:
62. frkbvfnjh 785 28.06.23 08:07 Сейчас в теме
Отличная статья, выручила меня! Спасибо огромное!
63. Recudo 16.08.23 09:08 Сейчас в теме
Подскажите пожалуйста, может задавался кто вопросом как вывести картинку отдельной колонкой в таблице? Я просто уже и так и эдак пытался, чет в тупик зашел.
Оставьте свое сообщение