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