Здравствуйте
Пытаюсь сохранить файл картинки в справочнике Товары в реквизите ДанныеФайлаКартинки - тип СправочникСсылка.Файлы ругается на Поле объекта не доступно для записи (ДанныеКартинки) , ДанныеКартинки это реквизит спр Файлы с типом ХранилищеЗначений

Вот Код:

```1c
    &НаКлиенте
    Процедура ЗагрузитьКартинку(Команда)

    НачатьПомещениеФайла(Новый ОписаниеОповещения("ЗагрузитьКартинкуЗавершение",
    ЭтотОбъект), , , Истина , УникальныйИдентификатор);

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

    &НаКлиенте
    Процедура ЗагрузитьКартинкуЗавершение(Результат, АдресВХранилище, ВыбранноеИмяФайла,
    ДополнительныеПараметры) Экспорт

    Если Результат Тогда
    Файл = Новый Файл(ВыбранноеИмяФайла);
    Объект.ИмяФайла = Файл.Имя;
    АдресКартинки = АдресВХранилище;

    Модифицированность = Истина;
    КонецЕсли;

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

    &НаСервере
    Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

    Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресКартинки);
    ТекущийОбъект.ДанныеФайлаКартинки.ДанныеКартинки = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
    КонецЕсли;

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

    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)

    АдресКартинки = ПолучитьНавигационнуюСсылку(ТекущийОбъект.ДанныеФайлаКартинки.Ссылка, "ДанныеКартинки");

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

    &НаСервере
    Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

    Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда
    УдалитьИзВременногоХранилища(АдресКартинки);
    КонецЕсли;
    АдресКартинки = ПолучитьНавигационнуюСсылку(ТекущийОбъект.ДанныеФайлаКартинки.Ссылка, "ДанныеКартинки");

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

можно конечно же сохранять в самом спр Товары тогда код отрабатывает как надо, но нужно сохранять картинки в отдельном справочнике. Это возможно?
---
```1c
    СправочникОбъект.ДанныеКартинки = Новый ХранилищеЗначения(Новый Картинка(ДвоичныеДанные), Новый СжатиеДанных());
```
---
Видимо ссылка ДанныеФайлаКартинки пустая. Проверяйте ДанныеФайлаКартинки на заполненность:
```1c
    Если ЗначениеЗаполнено(ТекущийОбъект.ДанныеФайлаКартинки) Тогда
    СправочникОбъект = ТекущийОбъект.ДанныеФайлаКартинки.ПолучитьОбъект();
    Иначе
    СправочникОбъект = Справочники.Файлы.СоздатьЭлемент();
    // заполняем реквизиты
    КонецЕсли;

    СправочникОбъект.ДанныеКартинки = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
    СправочникОбъект.Записать()
```

Но есть подозрение, что всё это можно реализовать через типовой программный интерфейс, если конфигурация на основе БСП.
---
ТекущийОбъект.ДанныеФайлаКартинки.ДанныеКартинки = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных()); Вот это работать не будет. Сначала надо получить объект из ДанныеФайлаКартинки.

В теории так:

```1c
    СправочникОбъект = ТекущийОбъект.ДанныеФайлаКартинки.ПолучитьОбъект();
    СправочникОбъект.ДанныеКартинки = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
    СправочникОбъект.Записать();
```
---
не сработало теперь пишет элемент не выбран
---
Видимо ссылка ДанныеФайлаКартинки пустая. Проверяйте ДанныеФайлаКартинки на заполненность:
```1c
    Если ЗначениеЗаполнено(ТекущийОбъект.ДанныеФайлаКартинки) Тогда
    СправочникОбъект = ТекущийОбъект.ДанныеФайлаКартинки.ПолучитьОбъект();
    Иначе
    СправочникОбъект = Справочники.Файлы.СоздатьЭлемент();
    // заполняем реквизиты
    КонецЕсли;

    СправочникОбъект.ДанныеКартинки = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
    СправочникОбъект.Записать()
```

Но есть подозрение, что всё это можно реализовать через типовой программный интерфейс, если конфигурация на основе БСП.
---
мне посоветовали так

```1c
    Фото = Новый Картинка(Файл.ПолноеИмя);
    Хранилище = Новый ХранилищеЗначения(Фото);
```

правда не знаю куда мне его приделать в моем коде
---
```1c
    СправочникОбъект.ДанныеКартинки = Новый ХранилищеЗначения(Новый Картинка(ДвоичныеДанные), Новый СжатиеДанных());
```