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



