В начало

Фото в справочнике «Дежурные блюда»

 

            Есть справочник «Дежурные блюда», в котором перечислены оные, нужно помимо прочего организовать справочник таким образом, чтобы в нем присутствовало изображение блюд.

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

 

Рис. Структура справочников «Дежурные блюда» и «Файлы»

 

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

            Далее создаем форму элемента справочника «Дежурные блюда». Размещаем на форме реквизит формы «Фото» с типом «Строка» и видом «Поле картинки». Также добавляем команду «Загрузить фото». Команда будет выполняться, как на клиенте, так и на сервере.

Рис. Форма элемента справочника «Дежурные блюда»

 

            Затем добавляем несколько процедур в модуль формы элемента справочника «Дежурные блюда».

 

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

&НаКлиенте

Процедура ЗагрузитьФото(Команда)

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

            ПутьФайлаВХранилище = "";

           

            //Вызываем диалоговое окно

            //и помещаем файл во временное хранилище

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

                        ЗагрузитьФотоНаСервере(ПутьФайлаВХранилище);

            КонецЕсли;    

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

///////////////////////////////////////////////////////////////////////////////////////////////////////////

&НаСервере

Процедура ЗагрузитьФотоНаСервере(ПутьФайлаВХранилище)

            //Создаем новый элемент в спр. "Файлы"

                //Тут не совсем правильно, поскольку создаем новый элемент

               //справочника «Файлы», но потом можем отказаться от записи

               //элемента справочника «ДежурныеБлюда»

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

            ДвоичныеДанные = ПолучитьИзВременногоХранилища(ПутьФайлаВХранилище);

            Элем.Файл = Новый ХранилищеЗначения(ДвоичныеДанные);

            Элем.Наименование = Объект.Наименование;

            Элем.Дата = ТекущаяДата();

            Элем.Записать();

           

            //устанавливаем значение реквизита "ФотоБлюд"

            Объект.ФотоБлюд = Элем.Ссылка;

 

            //Вывод фото на форму

            ЭтотОбъект.Фото = ПоместитьВоВременноеХранилище(ДвоичныеДанные);

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

///////////////////////////////////////////////////////////////////////////////////////////////////////////

&НаСервере

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

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

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

 

            Протестируем загрузку фотографий дежурных блюд.

Рис. Загрузка фото в справочник «Дежурные блюда»

 

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