В начало

Справочник Номенклатура с картинками на УФ

 

            Очередной пример справочника «Номенклатура» с фотографиями номенклатуры, загруженными в справочник «Файлы». И это все на управляемых формах в интерфейсе «Такси».

            Итак, справочники «Номенклатура» и «Файлы» имеют следующую структуру. Для хранения фотографии номенклатура создан реквизит «ФотоНоменклатуры» с типом «СправочникСсылка.Файлы», а в справочнике «Файлы» для хранения изображения создан реквизит «Файл» с типом «ХранилищеЗначения».

 
Рис. Структура справочников «Номенклатура» и «Файлы»

 

            Далее необходимо подготовить форму элемента справочника «Номенклатура». Нужно создать реквизит с типом «Строка» неограниченной длины. Потом перетащить его к элементам формы и уже у элемента «Реквизит1» установить параметр «Вид» со значением «Поле картинки». Довольно странная комбинация, типа если в строку поместить файл с изображением, то он потом отобразиться.

Рис. Форма элемента справочника «Номенклатура»

 

            Далее нужно добавить команду «Добавить фото номенклатуры», чтобы через диалог выбирать картинку и загружать ее в хранилище значений. Создаем команду, перетаскиваем налево к элементам формы и добавляем действие в двух частях: на сервере и на клиенте.

 

Листинг. Содержимое модуля формы элемента справочника «Номенклатура»

&НаСервере

Процедура ДобавитьФотоНоменклатурыНаСервере(ПутьФайла)

            //Создание и загрузка

            НовыйФайлКартинки = Справочники.Файлы.СоздатьЭлемент();

            НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(ПутьФайла));

            НовыйФайлКартинки.Дата = ТекущаяДата();

            НовыйФайлКартинки.Наименование = Объект.Наименование;

            НовыйФайлКартинки.Записать();

           

            //Помещаем ссылку в реквизит "ФотоНоменклатуры"

            Объект.ФотоНоменклатуры = НовыйФайлКартинки.Ссылка;

           

            //Вывод и масштабирование

            ЭтотОбъект.Реквизит1 = ПоместитьВоВременноеХранилище(НовыйФайлКартинки.Файл.Получить());

            Элементы.Реквизит1.РазмерКартинки = РазмерКартинки.АвтоРазмер;

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

 

&НаКлиенте

Процедура ДобавитьФотоНоменклатуры(Команда)

            ИмяФайла = "";

            ПутьФайла = "";

 

            Если ПоместитьФайл(ПутьФайла, , ИмяФайла, Истина) = Истина Тогда

                        ДобавитьФотоНоменклатурыНаСервере(ПутьФайла);

            КонецЕсли;

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

 

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

            ЭтотОбъект.Реквизит1 =             ПолучитьНавигационнуюСсылку(Объект.ФотоНоменклатуры, "Файл");

            Элементы.Реквизит1.РазмерКартинки = РазмерКартинки.АвтоРазмер;

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

 

            Тестируем в режиме отладки.

Рис. Форма списка и форма элемента справочника «Номенклатура»

 

            Также можно добавить форму элемента в справочник «Файлы», на которой создать реквизит «Фото» с типом «Строка» неограниченной длины, после чего создать элемент «Фото».

Рис. Форма элемента справочника «Файлы»

 

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

 

Листинг. Модуль формы элемента справочника «Файлы»

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

            Фото = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Файл");

            Элементы.Фото.РазмерКартинки = РазмерКартинки.АвтоРазмер;

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

 

            Протестируем просмотр картинок из справочника «Файлы» в режиме отладки.

 

Рис. Форма элемента справочника «Файлы»

 

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