Записки программиста 1с

Загрузка картинок для справочника 1с новый вариант.

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

Загрузка картинок новый вариант
Схема загрузке картинки в 1с.

Ранее был рассмотрен вариант загрузки картинки в элемент справочника 1с. Данная статья описывает загрузку картинки протестированную в 1с: Предприятие для разработчиков.

Версия платформы 1с на которой протестирован код.

Загрузка картинок новый вариант
Версия платформы 1с

Рассмотрим загрузку картинки на примере загрузки логотипа для элемента справочника Контрагенты.

Загрузка картинок новый вариант реализация.

Во-первых добавим реквизит ИзображениеЛого типа ХранилищеЗначений.

Добавляем реквизит типа Хранилище значений.

Во-вторых помещаем на форму элемента реквизит АдресКартинкиЛого с типом Строка длина Неограниченная.

Загрузка картинок новый вариант
Разместим Реквизит на форме элемента.

На форме изменяем тип Поля Ввода выставив Поле Картинки.

Выставляем Поле Картинки.

Подготовительные настройки завершены. Для Поля Картинки задаем процедуру для события Нажатие. Проверим, чтобы была выставлена галочка “Гиперссылка”.

Элемент формы КАРТИНКА, не обрабатываеться событие (Нажатие)

Галочку “Гиперссылка” должна быть установлена в свойствах объекта “Поле Картинки”.

Задаем процедуру для события Нажатие.

Загрузка картинок новый вариант начнем с процедуры “Нажатие” . Ее условно можно разделить на 2 части.

В первой будет код выбора файла с использованием Диалога Выбора файла. Подробно синтаксическая конструкция “ДиалогВыбораФайла” и ее параметры описаны в статье работа с файлами.

Загрузка картинок новый вариант
Код выбора файла с использованием “ДиалогВыбораФайла”.

Во-второй части сохранение файла в “АдресКартинкиЛого” и отображаем на форме.

Загрузка картинок новый вариант
Процедура “ПослеЗакрузки” и “ПослеПеремещенияФайлаНаСервер”

Код процедуры сохранения картинки в информационной базе 1С:Предприятие.

Загрузка картинок новый вариант
Код сохранения картинки в базе 1с.

Для отображения картинки сохраненной в информационной базе необходимо добавить код в процедуру. Код процедуры отображения картинки на форме “при Создании на сервере”.

Код процедуры “При создании на сервере”.

Полный код загрузки картинок в элемент справочника:

//В данный обработчик пишем следующий код, 
//который будет вызывать диалог открытия файла с расширением jpg, png, jpeg
&НаКлиенте
Процедура АдресКартинкиЛогоНажатие(Элемент, СтандартнаяОбработка)
	 СтандартнаяОбработка = Ложь;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытия.ПолноеИмяФайла = "";
    ДиалогОткрытия.Фильтр = "Файл JPG, PNG, JPEG |*.jpg; *.png; *.jpeg";
    ДиалогОткрытия.МножественныйВыбор = Ложь;
    ДиалогОткрытия.Заголовок = "Выбор изображения";
    ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗагрузкиФайла", ЭтаФорма); 
    ДиалогОткрытия.Показать(ОписаниеОповещения);
КонецПроцедуры        
 
//Опишем процедуру ПослеЗагрузкиФайла, которую указали в описании оповещения,
//в этой процедуре, если пользователь выбрал файл, 
//мы будем помещать его во временное хранилище при помощи метода НачатьПомещениеФайлаНаСервер.
&НаКлиенте
Процедура ПослеЗагрузкиФайла(ВыбранныйФайл, ДопПараметр)Экспорт 
    Если ВыбранныйФайл = Неопределено Тогда  
        Возврат;
    Иначе
        ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПеремещенияФайлаНаСервер", ЭтаФорма); 
        НачатьПомещениеФайлаНаСервер(ОписаниеОповещения, , , , ВыбранныйФайл[0], УникальныйИдентификатор);
    КонецЕсли
КонецПроцедуры
 
//Следующим шагом, необходимо в процедуре ПослеПеремещенияФайлаНаСервер,
//которая указана в описании оповещения процедуры ПослеЗагрузкиФайла, 
//присвоить реквизиту формы «СсылкаНаКартинку» адрес временного хранилища.
&НаКлиенте
Процедура ПослеПеремещенияФайлаНаСервер(Результат, Адрес)Экспорт
    Если Результат = Ложь Тогда
        Возврат;
    Иначе
        АдресКартинкиЛого= Результат.Адрес;
 
        //СсылкаНаКартинку = Результат.Адрес;
        Модифицированность = Истина;
    КонецЕсли;    
КонецПроцедуры  
 
//Для того, чтобы картинка хранилась в базе,
//нам необходимо сохранить картинку в реквизит объекта,
//делать мы это будем в событии формы ПередЗаписьюНаСервере. 
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    Если ЭтоАдресВременногоХранилища(АдресКартинкиЛого) тогда
        ФайлКартинки = ПолучитьИзВременногоХранилища(АдресКартинкиЛого);
        ТекущийОбъект.ИзображениеЛого = Новый ХранилищеЗначения(ФайлКартинки);
        УдалитьИзВременногоХранилища(АдресКартинкиЛого);
        АдресКартинкиЛого = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ИзображениеЛого");
    КонецЕсли
КонецПроцедуры
 
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    АдресКартинкиЛого = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ИзображениеЛого");
КонецПроцедуры

Проведена загрузка картинки в элемент справочника в современную версию платформы 1С: Предприятие. Общая схема загрузки не изменилась. В примерах кода применяется конструкция “Диалог выбора файла”.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *