Сабж
Сабж
Хз- хранилище значения?
Только в регистр гоянуть и оттуда скопировать.
Если не ошибаюсь то значение реквизита с типом ХЗ хранится в регистре сведений что то типа "значения реквизитов" и вся та беда ещё связана с ПВХ что ли, как то там замудрённо хранится всё это.
(5) не, ты ошибаешься
ХЗ - это blob
Объект?
(8) бинарные данные
Ясно
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если ЗначениеЗаполнено(ЭтаФорма.Параметры.ЗначениеКопирования) Тогда ОбъектКопирования = ЭтаФорма.Параметры.ЗначениеКопирования; ТекОбъект = РеквизитФормыВЗначение("Объект"); Для й = 0 ПО ТекОбъект.Файлы.Количество()-1 Цикл Попытка ТекОбъект.Файлы[й].Файл = ОбъектКопирования.Файлы[й].Файл.Получить(); Исключение Сообщить("Не скопировался файл, прикрепленный в "+й+" строке"); КонецПопытки; КонецЦикла; ТекОбъект.Записать(); ЗначениеВРеквизитФормы(ТекОбъект, "Объект"); КонецЕсли; КонецПроцедуры
Процедура ПриКопировании(ОбъектКопирования) ДанныеФайлов = Новый Массив; Для й = 0 ПО Файлы.Количество()-1 Цикл Попытка Адрес = Новый УникальныйИдентификатор; Файл = ПоместитьВоВременноеХранилище(Новый ХранилищеЗначения(ОбъектКопирования.Файлы[й].Файл.Получить()), Адрес); ДанныеФайлов.Добавить(Файл); Исключение ДанныеФайлов.Добавить(Неопределено); Сообщить("В строке "+(й+1)+" не скопировался файл"); КонецПопытки; КонецЦикла; ДополнительныеСвойства.Вставить("ДанныеФайлов", ДанныеФайлов); КонецПроцедуры
ТекОбъект.Файлы[й].Файл = Новый ХранилищеЗначения(ОбъектКопирования.Файлы[й].Файл.Получить());
так может ?
(20) что ты делаешь? ок... 5 сек
1. Файлы - это ЭтотОбъект, а не ОбъектКопирования. то есть ты копируешь из нового объекта
2. Можно копировать сразу в ПриКопировании. ОбъектКопирования - Старый объект.
ЭтотОбъект - новый.
Тебе достаточно 5 строк кода в одной процедуре
Процедура ПриКопировании(ОбъектКопирования) Для й = 0 ПО ОбъектКопирования.Файлы.Количество()-1 Цикл ЭтотОбъект.Файлы[й] = Новый ХранилищеЗначения(ОбъектКопирования.Файлы[й].Файл.Получить()); КонецЦикла; КонецПроцедуры
попробуй так
sf то есть ты копируешь из нового объекта
забираю обратно, тут проглядел
sf 1. Файлы - это ЭтотОбъект, а не ОбъектКопирования. то есть ты копируешь из нового объекта
2. Можно копировать сразу в ПриКопировании. ОбъектКопирования - Старый объект.
ЭтотОбъект - новый.
Тебе достаточно 5 строк кода в одной процедуре
я не обернул в ПриСохданииНаСервере в ХранилищеЗначений :)
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если ЗначениеЗаполнено(ЭтаФорма.Параметры.ЗначениеКопирования) Тогда ОбъектКопирования = ЭтаФорма.Параметры.ЗначениеКопирования; ТекОбъект = РеквизитФормыВЗначение("Объект"); Для й = 0 ПО ТекОбъект.Файлы.Количество()-1 Цикл Попытка ТекОбъект.Файлы[й].Файл = Новый ХранилищеЗначения(ОбъектКопирования.Файлы[й].Файл.Получить()); Исключение Сообщить("Не скопировался файл, прикрепленный в "+(й+1)+" строке"); КонецПопытки; КонецЦикла; ТекОбъект.Записать(); ЗначениеВРеквизитФормы(ТекОбъект, "Объект"); КонецЕсли; КонецПроцедуры
вот так заработало
Процедура ПриКопировании(ОбъектКопирования) Для й = 0 ПО ОбъектКопирования.Файлы.Количество()-1 Цикл ЭтотОбъект.Файлы[й] = Новый ХранилищеЗначения(ОбъектКопирования.Файлы[й].Файл.Получить()); КонецЦикла; КонецПроцедурыпопробуй так
с этого я начал - не работает