В начало

Фото в справочнике «Грибы съедобные»

 

            Нужно организовать в справочнике «Грибы съедобные» возможность загрузки изображения этих самых съедобных грибов, чтобы народ не путался, когда их собирает.

Рис. Справочник «ГрибыСъедобные» в структуре метаданных

 

            В справочнике «Грибы съедобные» для хранения ссылки на изображение создаем реквизит «ФоткаГриба» с типом «СправочникСсылка.Файлы». На форме элемента справочника  «Грибы съедобные» размещаем реквизит «ФайлКартинки» с типом строка, которому соответствует элемент формы «ФайлКартинки» с видом «Поле картинки». Такую неочевидную загагулину придумала компания «1Цэ».

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

 

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

 

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

&НаКлиенте

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

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

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

           

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

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

            //ПоместитьФайл(<Адрес>, <НачальноеИмяФайла>, <ВыбранноеИмяФайла>,

            //<Интерактивно>, <УникальныйИдентификаторФормы>)

           

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

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

            КонецЕсли;

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

 

&НаСервере

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

            //Создаем новый элемент

            //засовываем в него картинку

            //в виде двоичных данных

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

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

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

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

            НовыйЭл.Дата = ТекущаяДата();

            НовыйЭл.Записать();

           

            //устанавливаем значение реквизита [ФоткаГриба]

            Объект.ФоткаГриба = НовыйЭл.Ссылка;

           

            //Читаем двоичные данные файла

            //Присваиваем их реквизиту формы [ФайлКартинки]

            //Так выводится изображение

            ОпятьДвоичныеДанные = НовыйЭл.Файл.Получить();

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

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

 

&НаСервере

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

            //ПолучитьНавигационнуюСсылку(<Объект>, <ИмяРеквизита>, <Индекс>)

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

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

 

            Запускаем режим отладки, проверяем, как загружаются изображения грибов.

Рис. Загрузка изображения Белого гриба

Рис. Форма списка справочника «Грибы съедобные»

 

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

 

Рис. Справочник «Файлы»

 

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

 

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

&НаСервере

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

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

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

 

            Таким образом, загрузка грибов в справочник «Файлы» и хранение ссылок на изображения в справочнике «Грибы съедобные» организована к грибному сезону.