Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Копирование файлов с клиента на сервер

Копирование файлов с клиента на сервер
Я
   Pol1C
 
27.08.21 - 11:26
Добрый день
Помещаю файлы во временное хранилище через НачатьПомещениеФайловНаСервер
Далее сохраняю их
&НаСервере
Функция ЗаписатьНаСервере(АдресХранилища, ЛокальныйАдресКаталога, ИмяФайла, РасширениеФайла);
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища);
    Попытка    
        СоздатьКаталог(ЛокальныйАдресКаталога);
        ДвоичныеДанные.Записать(ЛокальныйАдресКаталога + ИмяФайла + "." + РасширениеФайла);
        
        УдалитьИзВременногоХранилища(АдресХранилища);
    Исключение        
        ЗаписьЖурналаРегистрации("Запись файла на сервере.", УровеньЖурналаРегистрации.Ошибка, , ,ОписаниеОшибки());
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки());
    КонецПопытки;    
КонецФункции

В тонком клиенте все работает, но в web-клиенте нет и ошибки не выдает.
   ДенисЧ
 
1 - 27.08.21 - 11:34
А расширение для работы с файлами установил для веб-клиента?
   Pol1C
 
2 - 27.08.21 - 11:40
(1) Да
   Garykom
 
3 - 27.08.21 - 11:44
браузер перезапусти
   Pol1C
 
4 - 27.08.21 - 11:57
(3) Не помогло
веб-клиент работает удаленно через vpn
   Pol1C
 
5 - 30.08.21 - 10:42
Подниму разок
   lodger
 
6 - 30.08.21 - 11:29
(2) НачатьПодключениеРасширенияРаботыСФайлами дергал?
   Pol1C
 
7 - 30.08.21 - 12:44
(6) &НаКлиенте
Процедура СписокФайловФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    НачатьПодключениеРасширенияРаботыСФайлами(Новый ОписаниеОповещения("ОповещениеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект));
КонецПроцедуры

&НаКлиенте
Процедура ОповещениеПодключенияРасширенияРаботыСФайлами(Подключено, ДополнительныеПараметры) Экспорт
    
    Если Подключено Тогда
        ДиалогОткрытия = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        ДиалогОткрытия.ПолноеИмяФайла = "";
        Фильтр = "Файл (*.pdf;*.jpg;*.jpeg;*.tif)|*.pdf;*.jpg;*.jpeg;*.tif|";
        ДиалогОткрытия.Фильтр = Фильтр;
        ДиалогОткрытия.МножественныйВыбор = Ложь;
        ДиалогОткрытия.Заголовок = "Выберите файлы";
        ДиалогОткрытия.Показать(Новый ОписаниеОповещения("ОповещениеВыборФайла", ЭтотОбъект));
    Иначе
        Сообщить("Не подключено расширение для работы с файлами!!");
    КонецЕсли;
КонецПроцедуры
   lodger
 
8 - 30.08.21 - 13:29
(7) ну если тебе западло сразу весь код работы с файлами выкладывать...
давайте теперь посмотрим, как ты наполнил ОписанияПередаваемыхФайлов
   Pol1C
 
9 - 30.08.21 - 13:47
(8) Сорри

&НаКлиенте
Процедура СписокФайловФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    НачатьПодключениеРасширенияРаботыСФайлами(Новый ОписаниеОповещения("ОповещениеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект));
КонецПроцедуры

// Процедура прикрепления файлов к документу

&НаКлиенте
Процедура ОповещениеПодключенияРасширенияРаботыСФайлами(Подключено, ДополнительныеПараметры) Экспорт
    
    Если Подключено Тогда
        ДиалогОткрытия = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        ДиалогОткрытия.ПолноеИмяФайла = "";
        Фильтр = "Файл (*.pdf;*.jpg;*.jpeg;*.tif)|*.pdf;*.jpg;*.jpeg;*.tif|";
        ДиалогОткрытия.Фильтр = Фильтр;
        ДиалогОткрытия.МножественныйВыбор = Ложь;
        ДиалогОткрытия.Заголовок = "Выберите файлы";
        ДиалогОткрытия.Показать(Новый ОписаниеОповещения("ОповещениеВыборФайла", ЭтотОбъект));
    Иначе
        Сообщить("Не подключено расширение для работы с файлами!!");
    КонецЕсли;
КонецПроцедуры

// Процедура прикрепления файлов к документу

&НаКлиенте
Процедура ОповещениеВыборФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
        Если ВыбранныеФайлы <> Неопределено И ВыбранныеФайлы.Количество() > 0 Тогда
            ЭтотОбъект.ТекущийЭлемент.ТекущиеДанные.Файл = ВыбранныеФайлы[0];
            ЭтотОбъект.ТекущийЭлемент.ТекущиеДанные.ПутьКФайлуВХранилище = ИмяСерверноФайлов(ЭтотОбъект.ТекущийЭлемент.ТекущиеДанные.Файл, ЭтотОбъект);
            ЭтотОбъект.ТекущийЭлемент.ТекущиеДанные.ПризнакРедактирования = Истина;
            ЭтаФорма.Модифицированность = Истина;
        Иначе
            Сообщить("Нет выбранных файлов!");
        КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    МассивПолучаемыхФайлов = Новый Массив;
    Для Каждого ТекущаяСтрока Из ЭтотОбъект.Объект.СписокФайлов Цикл
        Если ТекущаяСтрока.ПризнакРедактирования = Истина Тогда
            МассивПолучаемыхФайлов.Добавить(Новый ОписаниеПередаваемогоФайла(ТекущаяСтрока.Файл));
        КонецЕсли;
    КонецЦикла;
    ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьЗавершение", ЭтотОбъект);
    Идентификатор  = Новый УникальныйИдентификатор;
    НачатьПомещениеФайловНаСервер(ОписаниеОповещения,,, МассивПолучаемыхФайлов, Идентификатор);
КонецПроцедуры


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


&НаСервере
Функция ЗаписатьНаСервере(АдресХранилища, ЛокальныйАдресКаталога, ИмяФайла, РасширениеФайла);
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища);
    Попытка    
        СоздатьКаталог(ЛокальныйАдресКаталога);
        ДвоичныеДанные.Записать(ЛокальныйАдресКаталога + ИмяФайла + "." + РасширениеФайла);
        УдалитьИзВременногоХранилища(АдресХранилища);
    Исключение        
        ЗаписьЖурналаРегистрации("Запись файла на сервере.", УровеньЖурналаРегистрации.Ошибка, , ,ОписаниеОшибки());
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОписаниеОшибки());
    КонецПопытки;    
КонецФункции
   lodger
 
10 - 30.08.21 - 14:33
попробуй вместо 
Идентификатор  = Новый УникальныйИдентификатор

передать ничего или ЭтотОбъект.УникальныйИдентификатор;
   Pol1C
 
11 - 31.08.21 - 10:50
(10) Не помогло
   Вафель
 
12 - 31.08.21 - 10:54
попробуй через одиночный файл
НачатьПомещениеФайлаНаСервер
вроде как не требуется для этого расширение
   lodger
 
13 - 31.08.21 - 10:55
(11) после (12) попробуй по кнопке помещать файл, а не в ПередЗаписью.
   Вафель
 
14 - 31.08.21 - 10:56
Только если с выбором файла сразу
НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, <Адрес>, <ПараметрыДиалога>, <УникальныйИдентификаторФормы>)
   Pol1C
 
15 - 31.08.21 - 16:05
(13) Ты прав, по кнопке все заработало.
Всем спасибо за помощь.
Буду думать как лучше исправить
   lodger
 
16 - 01.09.21 - 09:21
(15) делаем вывод - недокументированная фича.
НачатьПомещениеФайлаНаСервер не работает в процедуре ПередЗаписью в веб-клиенте.
или наоборот:
НачатьПомещениеФайлаНаСервер какого-то хрена работает в процедуре ПередЗаписью в тонком-клиенте.
   Garykom
 
17 - 01.09.21 - 09:31
(16) баг это а не фича
   ДенисЧ
 
18 - 01.09.21 - 09:43
(17) В (16) это продокументировано. Значит, фича.
   Garykom
 
19 - 01.09.21 - 09:51
(18) Это когда Миста стала официальным ресурсом фирмы 1С?
   sikuda
 
20 - 01.09.21 - 09:59
НачатьПомещениеФайлаНаСервер - устаревший метод, тестируем ПоместитьФайлНаСерверАсинх
   ДенисЧ
 
21 - 01.09.21 - 10:00
(19) А когда перестала? )))
   sikuda
 
22 - 01.09.21 - 10:03
ПоместитьФайл - Не рекомендуется использовать, начиная с версии 8.3.13.
НачатьПомещениеФайла - Не рекомендуется использовать, начиная с версии 8.3.15.
НачатьПомещениеФайлаНаСервер - Не рекомендуется использовать, начиная ...
Ваши ставки господа.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.