Перенос файла из одного документа в другой

1. user1458640 11.02.25 11:50 Сейчас в теме
Здравствуйте,
Может кто подскажет, уже бьюсь с этим вопросом второй день.
У меня есть Документ1, в нем есть файл, на основании первого документа я создаю Документ2 и передаю туда присоединенный файл, но при открытии его выдает ошибку Данные файла недоступны, т.к. возможно файл был очищен как ненужный
Прошелся по всем ошибкам, на котором вываливалась она, сначала это была пометка удаления, снял, потом регистр был пустой, заполнил
Сам файл создавая новый элемент в справочнике добавляю в хранилище, все свойства файла2 из документа2 идентичны с файлом1 из документа1, будто проблема с хранилищем, но не пойму какая.
При вызове функции ХранилищеФайлаИзИнформационнойБазы, возвращает мне все что нужно, но обрывается на проверке Результат.Получить() и улетает в ошибку

Сам код
НоваяСтрокаСправочника = Справочники.ЗаказПоставщикуПрисоединенныеФайлы.СоздатьЭлемент();
	ЗаполнитьЗначенияСвойств(НоваяСтрокаСправочника, Результат[2].Ссылка, Неопределено, "Родитель,Владелец, ФайлХранилище"); 
	
	нФайл = Результат[2].Ссылка.ФайлХранилище.Получить();
	нФайлТекст = Результат[2].Ссылка.ТекстХранилище.Получить();   
	
	нДДФ = Результат[2].ДвоичныеДанныеФайла.Получить(); // - Для теста
	//ДвДанные = Новый ДвоичныеДанные(нФайл); 
	
	НовыйЭлементСправочника.Наименование = Результат[2].Наименование;
	НовыйЭлементСправочника.ВладелецФайла = Объект.Ссылка;
	НовыйЭлементСправочника.ФайлХранилище = ПоместитьВоВременноеХранилище(нДДФ);
	//НовыйЭлементСправочника.ТекстХранилище = ПоместитьВоВременноеХранилище(нФайлТекст);	 
	НовыйЭлементСправочника.ХранитьВерсии = Истина;
	НовыйЭлементСправочника.ПометкаУдаления = Ложь;
	НовыйЭлементСправочника.Редактирует = Ложь;
	НовыйЭлементСправочника.Записать(); 
	
	Если ЗначениеЗаполнено(Результат[2].ДвоичныеДанныеФайла) Тогда
		нДДФ = Результат[2].ДвоичныеДанныеФайла.Получить();   
		мЗаписи = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьМенеджерЗаписи(); 
		мЗаписи.Период = ТекущаяДата();
		мЗаписи.Файл = НовыйЭлементСправочника.Ссылка; 
		мЗаписи.ДвоичныеДанныеФайла = НовыйЭлементСправочника.ФайлХранилище;
		//мЗаписи.ДвоичныеДанныеФайла = ПоместитьВоВременноеХранилище(нДДФ);
		мЗаписи.Записать();
	КонецЕсли;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 33 11.02.25 12:13 Сейчас в теме
(1) Зачем вы изобретаете велосипед?
Есть функции в общем модуле РаботаСФайлами:
ДанныеФайла или ДвоичныеДанныеФайла - получить данные файла
ДобавитьФайл - добавить файл в присоедиенные.
3. Tigreno 12.02.25 07:39 Сейчас в теме
(1) если надо перенести файл из одного к другому то можно поменять владельца у справочника присоединённых файлов.

Если надо присоединить к 2 документам и файлы хранятся в томах то можно скопировать элемент справочника присоед. Файлов и заменить владельца. Тогда оба документа будут ссылаться на один файл и если он изменится у одного документа - поменяется и у второго.
4. user1458640 12.02.25 12:50 Сейчас в теме
(3) У меня сделано по первому вашему предложению, файл переносится, создается элемент в справочнике, создается запись в регистре по новому файлу, но отваливается на том когда возвращает значение из запроса к регистру сведений двоичные данные, результат с моим файлом, но когда дальше по коду Результат.получить из хранилища, результат становится неопределено
5. Tigreno 12.02.25 14:59 Сейчас в теме
(4)
создается элемент в справочнике, создается запись в регистре по новому файлу


Если по первому предложению, то ничего создаваться не должно!!! Берем уже существующий элемент, по нему получаем объект, меняем владельца и записываем.... Элемент остается тот же самый и никаких новых записей в РС не делает.
Оставьте свое сообщение

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