В начало

Справочник «Автоконцерны» с логотипом

 

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

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

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

 

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

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

 

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

 

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

&НаСервере

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

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

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

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

 

            Затем переходим в основной справочник «Автоконцерны» и создаем реквизит «Логотип» с типом «СправочникСсылка.Файлы». В этом реквизите будем хранить ссылки на логотипы, загруженные в справочник «Файлы». Структура справочника «Автоконцерны» приведена далее.

Рис. Структура справочника «Автоконцерны»

            После этого дорабатываем форму элемента справочника «Автоконцерны». Создаем реквизит формы «Реквизит1» с типом «Строка» неограниченной длины. У элемента «Реквизит1» устанавливаем вид «Поле картинки».

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

 

            Также добавляем команду «ДобавитьЛоготип», для которого  определяем действие.

 

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

&НаСервере

Процедура ДобавитьЛоготипНаСервере(ПутьФайла)

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

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

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

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

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

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

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

           

            //устанавливаем значение для реквизита "Логотип"

            Объект.Логотип = НовыйЛого.Ссылка;

           

            //Показываем картинку на ворме элемента

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

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

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

 

&НаКлиенте

Процедура ДобавитьЛоготип(Команда)

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

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

 

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

            //Путь файла: e1cib/tempstorage/f9c2aa5c-4dc1-4d8e-b06c-6dd3cf55e627?seanceId=f161c2fa-ce04-4f7a-b9bc-47d2122e1fef

            ДобавитьЛоготипНаСервере(ПутьФайла);

            КонецЕсли;

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

 

            Запускаем режим отладки и тестируем загрузку логотипов.

Рис. Загрузка логотипа в справочник «АвтоПроизводители»

 

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

Листинг. Обработчик «ПриСозданииНаСервере»

&НаСервере

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

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

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

 

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