Диалог выбора файла и Mozilla FireFox 32.0.3

  1. 10 г. назад

    Mozilla FireFox 32.0.3
    1C 8.2.19.106
    Режим: веб-клиент

    Имеется файлик-картинка "01.JPG", сохранен в базе. Чтобы сохранить к себе на локальную машину, жмем "Сохранить как...", открывается Диалог выбора.

        ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
        ВыборФайла.МножественныйВыбор = Ложь;
    

    Указываем папку, жмем ОК. Состояние: "Идет сохранение файла 01.JPG. Подождите...", а затем БАЦ! Ошибка доступа к файлу 01.JPG.

    В Internet Explorer всё прекрасно работает, никаких ошибок.

    Выяснил, что диалог выбора файла "теряет" выбранный путь к файлу:
    Результат такой:

    ВыборФайла.Каталог = "";
    ВыборФайла.ПолноеИмяФайла = "01.JPG";

    Сталкивались с таким? Может, я что-то не знаю?

  2. http://itrunet.ru/arenda-1c/podderzhka/-l1-mf.html

    Ответы: (2)
  3. (1) Спасибо. Это я уже видел. Работа с файлами есть. Речь о том, что диалог возвращает не полный путь типа "c:\folder\01.jpg", а "01.jpg" без указания папки

    Ответы: (6)
  4. на bugboard.v8.1c.ru я эту тему не нашел.

  5. покажь полный код сохранения файла

  6. Общий модуль "РаботаСФайламиСлужебныйКлиент" в УНФ. Процедура "СохранитьКак"

  7. (2) кстати, возможно это сервер возвращает, он пути типа c:\ не соображает, ему пути к шарам нужно скармливать \\Server\Shara\File
    И шара должна быть в правах USR1CV8 который серверный от 1С рулит.

    Ответы: (7)
  8. (6) Для Интернет эксплорера ведь сервер всё возвращает.

  9. Фрагмент:

            // выбираем путь к файлу на диске
            ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
            ВыборФайла.МножественныйВыбор = Ложь;
            ВыборФайла.ПолноеИмяФайла = ИмяСРасширением;
            Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru = 'Все файлы (*.%1)|*.%1'"), Расширение, Расширение);
            ВыборФайла.Фильтр = Фильтр;
            ВыборФайла.Каталог = ПутьВыбора;
            
            Если ВыборФайла.Выбрать() Тогда
                
                АдресФайла = ДанныеФайла.НавигационнаяСсылкаТекущейВерсии;
                
                Если ДанныеФайла.ТекущаяВерсия <> ДанныеФайла.Версия Тогда
                    АдресФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьНавигационнуюСсылкуДляОткрытия(
                        ДанныеФайла.Версия, УникальныйИдентификатор);
                КонецЕсли;	
                
                ИмяФайла = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(
                    ДанныеФайла.ПолноеНаименованиеВерсии, ДанныеФайла.Расширение);
                
                РазмерВМб = ДанныеФайла.Размер / (1024 * 1024);
                
                ТекстПояснения =
                СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                    НСтр("ru = 'Выполняется сохранение файла ""%1"" (%2 Мб)...
                               |Пожалуйста, подождите.'"),
                    ИмяФайла, 
                    ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьСтрокуСРазмеромФайла(РазмерВМб));
                    
                Состояние(ТекстПояснения);	
                
                Файл = Новый Файл(ВыборФайла.ПолноеИмяФайла);
                Если Файл.Существует() Тогда
                    Если ПутьКФайлуВКеше <> ВыборФайла.ПолноеИмяФайла Тогда
                        Файл.УстановитьТолькоЧтение(Ложь);
                        УдалитьФайлы(ВыборФайла.ПолноеИмяФайла);
                    КонецЕсли;
                КонецЕсли;
                
                Если ПутьКФайлуВКеше = "" Тогда
                    
                    ПередаваемыеФайлы = Новый Массив;
                    Описание = Новый ОписаниеПередаваемогоФайла(ВыборФайла.ПолноеИмяФайла, АдресФайла);
                    ПередаваемыеФайлы.Добавить(Описание);
                    
                    ПутьКФайлу = Файл.Путь;
                    ПутьКФайлу = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКФайлу, ОбщегоНазначенияКлиентПовтИсп.ТипПлатформыКлиента());
                    
                    // Сохраним Файл из БД на диск
                    Если ПолучитьФайлы(ПередаваемыеФайлы,, ПутьКФайлу, Ложь) Тогда
                        
                        // для варианта с хранением файлов на диске (на сервере) удаляем Файл из временного хранилища после получения
                        Если ЭтоАдресВременногоХранилища(АдресФайла) Тогда
                            УдалитьИзВременногоХранилища(АдресФайла);
                        КонецЕсли;
                        
                        Если СохранятьСРасшифровкой Тогда
                            ИмяФайлаСПутем = ВыборФайла.ПолноеИмяФайла;
                            
                            Попытка
                                МенеджерКриптографии = ЭлектроннаяЦифроваяПодписьКлиент.ПолучитьМенеджерКриптографии();
                                МенеджерКриптографии.ПарольДоступаКЗакрытомуКлючу = Пароль;
                                
                                ИмяФайлаСПутемРасшифрованное = ИмяФайлаСПутем + ".dec";
                                МенеджерКриптографии.Расшифровать(ИмяФайлаСПутем, ИмяФайлаСПутемРасшифрованное);
                                
                                УдалитьФайлы(ИмяФайлаСПутем);
                                ПереместитьФайл(ИмяФайлаСПутемРасшифрованное, ИмяФайлаСПутем);
                            Исключение
                                УдалитьФайлы(ИмяФайлаСПутем);
                                ВызватьИсключение;
                            КонецПопытки;
                        КонецЕсли;
                        
                        
                        НовыйФайл = Новый Файл(ВыборФайла.ПолноеИмяФайла);
                        
                        НовыйФайл.УстановитьУниверсальноеВремяИзменения(
                            ДанныеФайла.ДатаМодификацииУниверсальная);
                        
                        Состояние(НСтр("ru = 'Файл успешно сохранен'"), , ВыборФайла.ПолноеИмяФайла);
                    КонецЕсли;
                Иначе
                    Если ПутьКФайлуВКеше <> ВыборФайла.ПолноеИмяФайла Тогда
                        КопироватьФайл(ПутьКФайлуВКеше, ВыборФайла.ПолноеИмяФайла);
                    КонецЕсли;
                    Состояние(НСтр("ru = 'Файл успешно сохранен'"), , ВыборФайла.ПолноеИмяФайла);
                КонецЕсли;
    
    Ответы: (19)
  10. Не совсем это по снеговику, но может на что-то натолкнет...
    В клюшках работало все себе и работало... Тут - бац! Поставили седьмые окна, да еще и 64 бита...
    И понеслось...
    Все внешние обработки (которые прописаны в конфе) перестали на других компе запускаться (одноранговая сетка, 3 компа).
    Выкрутилась:
    ОткрытьФормуМодально("Отчет", СписокПараметров, КаталогИБ() + "\Dopolnitelno\ЖурналКассира-Операциониста.ert");
    КаталогИБ() - рабочий каталог БД (кстати, посмотри, что возвращает 1С ).
    \Dopolnitelno\ЖурналКассира-Операциониста.ert - остальной путь.
    Реально файл лежит - D:\1Cv7\DB\Dopolnitelno

    Ответы: (10)
  11. 30.09.2014 17:28:09 отредактировано Масянька

    +(9) Забыла: а до этого в ОткрытьФормуМодально("Отчет", СписокПараметров, КаталогИБ() + "\Dopolnitelno\ЖурналКассира-Операциониста.ert") вместо КаталогИБ() + "\Dopolnitelno\ЖурналКассира-Операциониста.ert" был прописан сетевой путь (имя компа и т. д.)

    Ответы: (11)
  12. Масянька был прописан сетевой путь

    это похоже на проблемы сетевого доступа. у себя я уже и гостевую уч.запись включил и доступ всем на всё дал. Фих там. Ошибка, и всё тут.

    Ответы: (12)
  13. (11) Согласна - похоже. В седьмых окнах чего там только не рыли... Там, блин, так накрутили с безопасностью - мама не горюй.
    Я уже точно не помню, но (по-моему) там была ошибка тоже нечто с доступом. А может и нет.
    Короче, ройся... ;)

  14. 30.09.2014 18:04:33 отредактировано Bekas

    Стоп. До прав доступа, имхо, еще рано копать.
    Открывается форма выбора файла, я выбираю путь и имя файла. Жму ОК, и тут же смотрю имена: Каталог = "", Имя файла = "01.JPG".
    Понимаете?
    Каталог - пустая строка.
    Куда он (кстати, кто? FireFox? или 1С?) ее "потерял"?

    Ответы: (15)
  15. Еще был прикол со снеговиком.
    Сервак и полтора десятка зверей.
    Поставила новую БД - с машины одного зверя на сервак. Подключила остальным зверям. Ни один из других зайти в новую БД не может - файловая ошибка... Долго плясала с бубном... Оказалось: админ (кАзел) настроил сервак таким макаром, что доступ имеет к созданному файлу имеет только тот зверь, который его создал. Хотя на весь диск (на серваке) - общий доступ. В общем, пришлось саму папку с БД делать общей.

    PS Не знаю понятно написала или нет... Зверь = юзерь = пользователь.

    Ответы: (16)
  16. (13) Говорю же - смотри, что возвращает Каталог. И с каким доступом.

  17. (14) С этим всё в порядке - база не файловая. На сервере.

  18. Поправьте меня, если я ошибаюсь. Не похоже на права доступа к папке. Любой веб-клиент запущен на моей машине от моего имени. В первом случае - Internet Explorer записывает файл в указанную мной папку, во втором случае - Mozilla FireFox не хочет это делать.

  19. ВыборФайла.ПолноеИмяФайла
    ВыборФайла.Каталог

    какие там значения до строки
    Если ВыборФайла.Выбрать() Тогда

    и какие - после?

  20. (8) а где у тебя учитывается ВыборФайла.Каталог после выбора файла?

  21. До выбора - пустые строки. Счас выбываю в офлайн. Завтра продолжу.

  22. В общем, скачал Mozilla FireFox 14.0.1 Portable. Подключился к базе, выбрал куда сохранять файл, оно послушно всё отработало.

    Ответы: (22)
  23. (21) попробуй на 27 релизе огнелиса. они в последних релизах там какие-то апи поменяли, возможно, в этом собака порылась.

    14-й слишком древний, а 27-й нормальный

    Ответы: (23)
  24. (22) У меня 32.0.3. Ничё так...

    Ответы: (24)
  25. (23) сабж работает?

    Ответы: (25)
  26. (24) Как проверять-то?

    Ответы: (26)
  27. (25) сохрани файл через веб-клиент

    Ответы: (27)
  28. (26) Сейчас у меня нет снеговика под рукой.

или зарегистрируйтесь чтобы ответить!