Научите копировать файлы с локальной машины в папку на сервере УФ

1. Asuneft 2 05.04.22 08:06 Сейчас в теме
Есть код:

Процедура СохранитьФайлНаСервере() Экспорт
	
	Если Параметры.Ключ.Пустая() Тогда

		УИД = Новый УникальныйИдентификатор();
		НоваяСсылка = Справочники.СсылкиНаФайл.ПолучитьСсылку(УИД);
		
		мОбъект = РеквизитФормыВЗначение("Объект");
		мОБъект.УстановитьСсылкуОбъект(НоваяСсылка);
		
		Файл1С = Новый Файл(Объект.Файл);
		УИН    = Строка(УИД);
		ИмяФайлаНаСервере = Константы.ПутьХраненияФайловСканирования.Получить() + "\" + УИН + Файл1С.Расширение;

		Если Найти(Объект.Файл,"\") > 0 Тогда 
			
			ДвоичныеДанные = Новый ДвоичныеДанные(Объект.Файл);
			
			Идентификатор  = Новый УникальныйИдентификатор;
			
			АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Идентификатор); 
			
			ЗаписатьНаСервер(АдресХранилища, ЛокальныйАдресКаталога, Файл1С.Расширение, ИмяФайлаНаСервере);

		КонецЕсли;
	КонецЕсли;
	
	
КонецПроцедуры

&НаСервере
// Выполняет запись файла из временного хранилища на диск
Процедура ЗаписатьНаСервер(АдресХранилища, ЛокальныйАдресКаталога = "", Расширение, ИмяФайлаНаСервере) Экспорт
	
	// Проверим заполнен ли адрес временного хранилища, откуда будем брать файл
	Если ПустаяСтрока(АдресХранилища) Тогда	
		Возврат;		
	КонецЕсли; 
	
	
	// Проверим существует ли указанный каталог
	КаталогЗаписи = Новый Файл(ЛокальныйАдресКаталога);
	
	Если НЕ КаталогЗаписи.Существует() Тогда	
		Возврат;	
	КонецЕсли; 
	
	ЛокальныйАдресКаталога = ЛокальныйАдресКаталога;
	
	ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища); 
		
	ИмяФайла = ИмяФайлаНаСервере;
	
	Попытка	
		ДвоичныеДанные.Записать(ЛокальныйАдресКаталога  + "\" + ИмяФайла + Расширение);	
	Исключение		
	КонецПопытки; 
	
КонецПроцедуры
Показать


Объект.Файл - имя файла на локальной машине,

код не работает - пишет каталог не обнаружен ,что не так?
По теме из базы знаний
Найденные решения
11. dehro 5 05.04.22 09:08 Сейчас в теме
Я так понял Объект.Файл это строка - имя файла?
&НаКлиенте
Процедура ПеренестиФайлНаСервер()
        ДвоичныеДанные = Новый ДвоичныеДанные(Объект.Файл); 
       АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные); 
       ЗаписатьФайлНаСервере(АдресХранилища);
КонецПроцедуры

&НаСервере
Процедура ЗаписатьФайлНаСервере(аАдресХранилища)
      ДвоичныеДанные = ПолучитьИзВременногоХранилища(аАдресХранилища);
     
      Попытка
                ДвоичныеДанные.Записать(ЛокальныйАдресКаталога + "\" + ИмяФайла + Расширение);
       Исключение
       КонецПопытки; 
КонецПроцедуры

Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1619761 05.04.22 08:18 Сейчас в теме
(1) добрый день. Как вариант нет доступа к папке.
3. Asuneft 2 05.04.22 08:26 Сейчас в теме
(2)
ДвоичныеДанные = Новый ДвоичныеДанные(Объект.Файл);

Идентификатор = Новый УникальныйИдентификатор;

АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные, Идентификатор);


вот тут ломается,

доступ к локальной папке есть
4. dehro 5 05.04.22 08:32 Сейчас в теме
Файл большой?

Может стоит через НачатьПомещениеФайлаНаСервер
5. Asuneft 2 05.04.22 08:35 Сейчас в теме
6. dehro 5 05.04.22 08:45 Сейчас в теме
Сейчас код посмотрел. Каша какая-то:

Серверная процедура
Процедура СохранитьФайлНаСервере() Экспорт 
...
мОбъект = РеквизитФормыВЗначение("Объект")
...


Следовательно, файл уже на сервере. Чего его тогда передавать?
Сразу пиши куда нужно.
7. Asuneft 2 05.04.22 08:46 Сейчас в теме
8. Asuneft 2 05.04.22 08:49 Сейчас в теме
мОбъект = РеквизитФормыВЗначение("Объект") это видимо осталось
9. dehro 5 05.04.22 08:53 Сейчас в теме
(8) Раз работает (нет ошибки) - значит на сервере код выполняется
10. Asuneft 2 05.04.22 09:01 Сейчас в теме
(9) ДвоичныеДанные = Новый ДвоичныеДанные(Объект.Файл);

вот тут не работает, процедура серверная, Объект.Файл - полное имя файла строкой, ошибка "Каталог не обнаружен 'C:\User..."
11. dehro 5 05.04.22 09:08 Сейчас в теме
Я так понял Объект.Файл это строка - имя файла?
&НаКлиенте
Процедура ПеренестиФайлНаСервер()
        ДвоичныеДанные = Новый ДвоичныеДанные(Объект.Файл); 
       АдресХранилища = ПоместитьВоВременноеХранилище(ДвоичныеДанные); 
       ЗаписатьФайлНаСервере(АдресХранилища);
КонецПроцедуры

&НаСервере
Процедура ЗаписатьФайлНаСервере(аАдресХранилища)
      ДвоичныеДанные = ПолучитьИзВременногоХранилища(аАдресХранилища);
     
      Попытка
                ДвоичныеДанные.Записать(ЛокальныйАдресКаталога + "\" + ИмяФайла + Расширение);
       Исключение
       КонецПопытки; 
КонецПроцедуры

Показать
Оставьте свое сообщение

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