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