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

1. Размещение на форме картинки основного изображения товара. Объект был скопирован из справочника номенклатура.

2. Написание кода, который бы подтягивал к текущей номенклатуре ее изображение, а в случае отсутствия изображения пустую картинку

3. Написание кода, который открывает картинку прямо из формы по ее нажатию.

ШАБЛОНЫ КОДА

Функция ЕстьКартинкаДаНет (Ссылка)

СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Номенклатура = СтрокаТабличнойЧасти.Номенклатура.Ссылка;

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Номенклатура);
Запрос.Текст =
"ВЫБРАТЬ
| ХранилищеДополнительнойИнформации.Ссылка КАК Ссылка,
| ХранилищеДополнительнойИнформации.Хранилище,
| ХранилищеДополнительнойИнформации.Объект.Код КАК Код
|ИЗ
| Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации
|ГДЕ
| ХранилищеДополнительнойИнформации.Объект.Ссылка = &Ссылка";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Картинка = ВыборкаДетальныеЗаписи.Ссылка;
КодТовара = ВыборкаДетальныеЗаписи.Код;

КонецЦикла;

Возврат КодТовара;

КонецФункции

Процедура ТоварыПриАктивизацииСтроки(Элемент)

мПустаяКартинка = Новый Картинка;

СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Номенклатура = СтрокаТабличнойЧасти.Номенклатура.Ссылка;
Если Номенклатура.Код = ЕстьКартинкаДаНет (Номенклатура) Тогда
ЭлементыФормы.ОсновноеИзображение.Картинка = Номенклатура.ОсновноеИзображение.Хранилище.Получить();
Иначе
ЭлементыФормы.ОсновноеИзображение.Картинка = мПустаяКартинка;

КонецЕсли;

КонецПроцедуры


Процедура ОсновноеИзображениеНажатие(Элемент)

СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Номенклатура = СтрокаТабличнойЧасти.Номенклатура.Ссылка;
Если Номенклатура.Код = ЕстьКартинкаДаНет (Номенклатура) Тогда
ЭлементыФормы.ОсновноеИзображение.Картинка = Номенклатура.ОсновноеИзображение.Хранилище.Получить();
Иначе
ЭлементыФормы.ОсновноеИзображение.Картинка = мПустаяКартинка;
КонецЕсли;

Если ЭлементыФормы.ОсновноеИзображение.Картинка = мПустаяКартинка Тогда
Возврат;
Иначе
ФормаИзображения = Номенклатура.ОсновноеИзображение.ПолучитьФорму("ФормаИзображения");
ФормаИзображения.Открыть();
КонецЕсли;

КонецПроцедуры

СКРИНШОТЫ КОДА

РЕЗУЛЬТАТ