1С как изменить ХранилищеЗначений в табличной части?

1. TetZ 05.01.21 19:35 Сейчас в теме
Здравствуйте! Мне необходимо реализовать хранение массива фотографий внутри одного документа. Решил сделать с помощью табличной части, где будут храниться двоичные данные и впоследствии открываться как картинка, но столкнулся с проблемой:
Я не понимаю как обратиться к реквизиту типа ХранилищеЗначений (ДвоичныеДанныеАдреса), который находится в табличной части.

&НаКлиенте
Процедура ДобавитьФото(Команда)
	Если Объект.Фотографии.Количество()>14 тогда
		Сообщить("Доступна загрузка не более 15 фотографий.");
		Возврат;
	КонецЕсли;
	Оповещение = Новый ОписаниеОповещения("ВыборФайла",ЭтотОбъект);
	НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры

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

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

На данном этапе проблемной является вот эта строка:
ДанныеТабЧасти.ДвоичныеДанныеАдреса = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ИмяФайла));

поскольку он не видит данное поле. Пробовал разные способы, ни в ТекущихДанных, ни в Объект.Фотографии[i] данное поле не видит. Как решить данную проблему?
По теме из базы знаний
Найденные решения
2. antz 05.01.21 20:08 Сейчас в теме
Писать данные в реквизит с типом ХранилищеЗначения нужно в предопределенной процедуре ПередЗаписьюНаСервере. То есть, сначала нужно все данные положить во временное хранилище, запомнить адреса, а в этой процедуре из хранилища достать и поместить уже в ХранилищеЗначения.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. antz 05.01.21 20:08 Сейчас в теме
Писать данные в реквизит с типом ХранилищеЗначения нужно в предопределенной процедуре ПередЗаписьюНаСервере. То есть, сначала нужно все данные положить во временное хранилище, запомнить адреса, а в этой процедуре из хранилища достать и поместить уже в ХранилищеЗначения.
3. TetZ 05.01.21 22:36 Сейчас в теме
(2) кажется, я начал понимать, почему рекомендуют подобные задачи реализовывать через справочник, в котором хранятся фотографии
4. Treaqq 07.01.21 15:04 Сейчас в теме
(3) необязательно. Просто обычно хранилище значений используют для каких-то макетов, файлов или ещё чего-нибудь. И обычно такие данные - единичные, т.е. они зависят от чего либо, а сами по себе не особо полезны. Поэтому их типа можно спокойной удалять и вся база не особо пострадает. А по делу - (2) прав. Процедура «ПередЗаписьюНаСервере» и вперёд
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот