Сохранение файла на сервере с диалогом выбора, без расширения работы с файлами
Здравствуйте! Нашла много похожих тем, но те методы не работают.
Самописная конфигурация. Хотим обновиться до 8.3.10, но там запрещен модальный режим. Ок - будем отказываться. Вопрос, предупреждение, все это оказалось легким. Сложность с ПолучитьФайл(). В веб клиенте требует расширения для работы с файлами. А с этим большие косяки. Можно ли как то написать без расширения?
Самописная конфигурация. Хотим обновиться до 8.3.10, но там запрещен модальный режим. Ок - будем отказываться. Вопрос, предупреждение, все это оказалось легким. Сложность с ПолучитьФайл(). В веб клиенте требует расширения для работы с файлами. А с этим большие косяки. Можно ли как то написать без расширения?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Косяка никакого нет, все работает в Google Chrome, Firefox. Без расширения написать не получится - для этого оно и нужно - работает стабильно. Делаете диалог выбора, настраиваете, потом через НачатьПомещениеФайла обрабатываете.
(2) В программе 1С "Договрчики" есть возможность открывать без расширения. Но я не могу разобраться в том коде(
А можете привести пример? У меня на internet exploler отработало отлично, а в мозиле ошибка. Использование синхронных вызовов запрещено. Возможно нужно в браузере настройку выполнить. Но клиентов у базы около 200. И если они в момент позвонят и скажут, что тут ошибка у нас это не устроит руководство
А можете привести пример? У меня на internet exploler отработало отлично, а в мозиле ошибка. Использование синхронных вызовов запрещено. Возможно нужно в браузере настройку выполнить. Но клиентов у базы около 200. И если они в момент позвонят и скажут, что тут ошибка у нас это не устроит руководство
(3) Делайте асинхронно все, установка расширения нужна однократно на каждом компьютере. На счет реализации в веб клиенте без расширения - плохо себе это представляю, хотя не работал с указанной вами конфигурацией - если отправите конфигурацию - могу разобраться и поделиться с вами.
Пример:
Пример:
&НаКлиенте
Процедура ПоказатьВыборФайла(Владелец,ФормаВыбора) Экспорт
#Если Не ВебКлиент Тогда
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Фильтр = "Файл изображения|*.bmp;*.jpg;*.jpeg;*.png";
Диалог.Заголовок = "Выберите файл с изображением...";
Диалог.МножественныйВыбор = Ложь;
Диалог.ПроверятьСуществованиеФайла = Истина;
Оповещение = Новый ОписаниеОповещения("ВыборФайла",ФункцииКлиент,Новый Структура("ФормаВыбора,Владелец",ФормаВыбора,Владелец));
Диалог.Показать(Оповещение);
#Иначе
Оповещение = Новый ОписаниеОповещения("ПомещениеФайла",ФункцииКлиент,Новый Структура("ФормаВыбора,Владелец",ФормаВыбора,Владелец));
НачатьПомещениеФайла(Оповещение,,,Истина,ФормаВыбора.УникальныйИдентификатор);
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура ВыборФайла(ВыбранныеФайлы,Данные) Экспорт
Если Не ВыбранныеФайлы = Неопределено Тогда
Для Каждого ВыбранныйФайл Из ВыбранныеФайлы Цикл
Оповещение = Новый ОписаниеОповещения("ПомещениеФайла",ФункцииКлиент,Данные);
НачатьПомещениеФайла(Оповещение,,ВыбранныйФайл,Ложь,Данные.ФормаВыбора.УникальныйИдентификатор);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПомещениеФайла(ФайлВыбран,АдресФайла,ВыбранноеИмяФайла,Данные) Экспорт
Если ФайлВыбран Тогда
ИмяФайла = Сред(ВыбранноеИмяФайла,СтрНайти(ВыбранноеИмяФайла,"\",НаправлениеПоиска.СКонца)+1);
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресФайла);
Изображение = ФункцииСервер.ЗаписатьФайл(ДанныеФайла,ИмяФайла,Данные.Владелец);
Оповестить("Добавление изображения",Изображение,Данные.ФормаВыбора);
Иначе
ПоказатьПредупреждение(,"Вы не выбрали файл.",5,"Предупреждение");
КонецЕсли;
КонецПроцедуры
Показать
Но тут вроде тоже требуется расширение:
&OnClient
Procedure ChoosingFileProcessing(FileName, Parameters) Export
If FileName<>Undefined Then
Object.FileName = AdditionalObjects.GetFileName(FileName);
#If Not WebClient Then
Digdata = New BinaryData(FileName);
SendFileToServer(BinaryData);
#Else
SendingFiles = New Array;
SendingFiles.Add(New TransferableFileDescription(FileName, ""));
SendedFiles = New Array;
If Not SendFiles(SendingFiles, SendedFiles, ,
False, UUID) Then
Message("Error sending file: " + ErrorDescription());
Else
SendFileToServer(SendedFiles, True);
EndIf;
#EndIf
EndIf;
EndProcedure
&OnServer
Procedure SendFileToServer(Datas, CalledFromWeb = False)
If CalledFromWeb Then
FileAddress = Datas[0].Location;
BinaryData = GetFromTempStorage(FileAddress);
Else
BinaryData = Datas;
EndIf;
Obj = FormAttributeToValue("Object");
Obj.Storage = New ValueStorage(BinaryData);
Obj.Size = BinaryData.Size();
If Not ValueIsFilled(Obj.Description) Then
Obj.Description = Obj.FileName;
EndIf;
Obj.AddingDate = CurrentDate();
Obj.Write();
ValueToFormAttribute(Obj, "Object");
EndProcedure
Показать
Решено, все как говорится "проще пареной репы".
НачатьПомещениеФайлов использует расширение, а НачатьПомещениеФайла не использует, все очень просто, пользуйтесь)
&НаКлиенте
Процедура ЗагрузитьДокументыНажатие(Элемент)
ОписаниеОповещения = Новый ОписаниеОповещения("ОбработкаЗагрузкиФайлов", ЭтаФорма);
НачатьПомещениеФайла(ОписаниеОповещения,,,Истина,УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЗагрузкиФайлов(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Результат Тогда
Попытка
ИмяФайла = ПолучитьИмяФайла(ВыбранноеИмяФайла);
Каталог = Каталог();
ОбщийНаСервере.ЗаписатьФайлИзХранилища(Каталог+"\"+ИмяФайла,Адрес);
Исключение;
КонецПопытки
КонецЕсли
КонецПроцедуры
ПоказатьНачатьПомещениеФайлов использует расширение, а НачатьПомещениеФайла не использует, все очень просто, пользуйтесь)
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот