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