Имя: Пароль:
1C
1С v8
Получить адрес картинки на клиенте
0 KKrKKdd
 
20.02.14
09:02
Народ, подскажите, весь форум облазила... Как получить двоичные данные картинки? Я знаю что для вебклиента это невозможно. Но допустим у нас уже есть адрес картинки, и мне теперь нужно эту картинку передать на сервер. Метод поместить файл отпадает, потому что он не работает без интерактивности на веб, метод Новые Двоичныеданные ругается на то что не найден конструктор. А как зная путь к файлу его преобразовать для дальнейшей работы с ним еще и в общем модуле, не имя доступа к форме...
1 Wobland
 
20.02.14
09:04
Метод поместить файл не отпадает
2 KKrKKdd
 
20.02.14
09:04
а как у него отключить интерактивность?
3 KKrKKdd
 
20.02.14
09:05
на веб
4 Wobland
 
20.02.14
09:06
четвёртым параметром. а вот как вебу дать доступ к локальной ФС - тот ещё вопрос. в ИЕ вроде как решается
5 KKrKKdd
 
20.02.14
09:08
в IE у меня интерфейс не грузится (((((
6 Wobland
 
20.02.14
09:08
а картинка - незачёт ;)
http://eirianchapman.tumblr.com/page/3
7 KKrKKdd
 
20.02.14
09:09
о я популярна!!!
8 KKrKKdd
 
20.02.14
09:26
в IE отработало первый раз, поместился файл куда надо... Потом после установки расширения работы с файлами и в IE перестало работать...
9 KKrKKdd
 
20.02.14
09:56
Преобразовала код, чтобы выбирать файл один раз с помощью ПоместитьФайл... теперь столкнулась вот с чем. ПоместитьФайл имеет параметр номер 3 ВыбранноеИмяФайла в который возращает: IE -  полное имя с путем, а Mozilla - только название файла с расширением....
10 Wobland
 
20.02.14
10:18
а зачем вообще нужно _выбранное_ имя без интерактивности?
11 KKrKKdd
 
20.02.14
10:18
Беру уже свои полученные двоичные данные и пытаюсь их записать во временные каталог на диске, щаз... Метод Записать не работает на веб... а мне нужно получить размер файла, дату изменения..... Метод Размер тоже не работает на Веб.
12 Wobland
 
20.02.14
10:21
можно я ничего не понял?
13 Wobland
 
20.02.14
10:22
кроме того, что подход к задаче можно и поменять
14 KKrKKdd
 
20.02.14
10:25
Мне нужно поработать с файлом... получить о нем информацию. как бы я сделала методом Файл = Новый Файл(ПолныйПуть)
Как мне получить информацию о файле на вебклиенте?
Я смогла лишь преобразовать его в двоичные данные. Но мне нужно теперь получить объект с типом Файл чтобы извлечь информацию о нем
15 KKrKKdd
 
20.02.14
10:26
на IE я это могу сделать, так как путь возвращается полный и я получаю Файл = Новый Файл(ПолныйПуть)
16 Wobland
 
20.02.14
10:27
Для работы метода на веб-клиенте, необходимо предварительно подключить расширение работы с файлами.
17 KKrKKdd
 
20.02.14
10:28
в момент выполнения этого кода РасширениеПодключено = Истина, я его уже подключила...
18 KKrKKdd
 
20.02.14
10:29
и тем не менее Mozilla мне не возвращает полный путь. а только лишь название файла (без пути)
19 Wobland
 
20.02.14
10:29
(18) чем смущает?
20 KKrKKdd
 
20.02.14
10:30
как мне теперь по полученным данным (двоичные данные и имя файла без пути) получить полную информацию о файле? размер, дата изменения...
21 Wobland
 
20.02.14
10:31
Файл = Новый Файл(ПолныйПуть)
22 KKrKKdd
 
20.02.14
10:32
ВОТ! а полного пути у меня то и  нет
23 KKrKKdd
 
20.02.14
10:32
потому что Mozilla возвращает только имя файла Картинка.jpg
24 Wobland
 
20.02.14
10:32
(22) а на кой ляд ты интерактивность выключала? чтоб усилием мысли файл указывать?
25 KKrKKdd
 
20.02.14
10:33
я включила ее)))))
26 KKrKKdd
 
20.02.14
10:33
блин неужели я не полнятно изъясняюсь... в таком случае прости))) попробую еще раз...
27 Wobland
 
20.02.14
10:34
диалог выбора файла тебя спасёт
28 Wobland
 
20.02.14
10:34
(25) при этом забыла отменить действие поста (2)
29 KKrKKdd
 
20.02.14
10:35
Ты прав, извини
30 KKrKKdd
 
20.02.14
10:36
интерактивность включена.  выходит диалог, я там выбираю свой файл... который лежит допустим C:\Work\Картинка.jpg
31 Wobland
 
20.02.14
10:37
(30) медленно и под музыку, надеюсь?
32 KKrKKdd
 
20.02.14
10:38
теперь процедура ПоместитьФайл(Адрес, НачальноеИмяФайла,ВыбранноеИмяФайла,Истина,УникИд)
Мне возвращает Адрес  - адрес хранилища двоичных данных, и ВыбранноеИмяФайла - Картинка.jpg
33 KKrKKdd
 
20.02.14
10:39
(31) да конечно я подругому не умею)
34 Wobland
 
20.02.14
10:39
теперь примени на себя действие поста (27)
35 KKrKKdd
 
20.02.14
10:40
и теперь смотри, как из этих скудных данных мне получить размер и дату изменения файла?
36 Wobland
 
20.02.14
10:40
передаю по буквам

Пример:

Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Текст = "ru = ""Текст""; en = ""Text""";
Фильтр = НСтр(Текст)+"(*.txt)|*.txt";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Истина;
ДиалогОткрытияФайла.Заголовок = "Выберите файлы";
Если ДиалогОткрытияФайла.Выбрать() Тогда
    МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
    Для Каждого ИмяФайла Из МассивФайлов Цикл
        ВыбФайл = Новый Файл(ИмяФайла);
        Текст = "ru = ""; Размер = ""; en = ""; Size = """;
        Сообщить(ИмяФайла+НСтр(Текст)+ВыбФайл.Размер());
    КонецЦикла;
Иначе
    Текст = "ru = ""Файл(ы) не выбран!""; en = ""File(s) not selected!""";
    Предупреждение(НСтр(Текст));
КонецЕсли;
37 KKrKKdd
 
20.02.14
10:48
Я с этого начинала. Почему перешла на ПоместитьФайл, потому что мне нужны двоичные данные файла, а не только сама ссылка на него...
38 KKrKKdd
 
20.02.14
10:48
а метод Новый ДвоичныеДанные(Путь) не работает на вебе...
39 Wobland
 
20.02.14
10:49
ты чего хочешь-то? в конце пути
40 Wobland
 
20.02.14
10:51
я пока вижу две разные задачи, которые внезапно хочется решить методом СделайМнеДорогойПожалуйста()
41 sikuda
 
20.02.14
10:59
(40) Ладно уж скопирую своего кусочек...
#Если ВебКлиент Тогда
//Для 8.2
Если НЕ ПодключитьРасширениеРаботыСФайлами() Тогда
  УстановитьРасширениеРаботыСФайлами();
Иначе    
  Если НЕ ПоместитьФайл(ТекущаяКартинка, , , Истина, ЭтаФорма.УникальныйИдентификатор) Тогда
    Возврат;
  КонецЕсли;    
КонецЕсли;    
#Иначе    
  ДиалогФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ...
Отсюда http://infostart.ru/public/242659/
42 KKrKKdd
 
20.02.14
11:02
в конце пути я иду на сервер, там я этот файл извлекаю и записываю. Мне нужно идти на сервер с готовым двоичным файлом. А так же предворительно мне нужны данные о файле. Для совсем-совсем наглядности иди в общий модуль РаботаСФайламиКлиент там процедура СоздатьФайл.
Я в справочник ЛицензииПРисоединенныеФайлы, созданный по аналогу прочих справочников ЛюбоеИмяПРисоединенныеФайлы, пытаюсь записать файл. Я не хочу их хранить в базе, их много. Поэтому я выбрала тип хранения файлов не в базе, а на диске. Теперь мне к моменту когда вебклиент выбрал файл, записал информацию о нем куда надо и хочет потправить его на сервер, я должна иметь двоичные данные этого файла. Чтобы на вервере его положить куда нужно.
43 KKrKKdd
 
20.02.14
11:05
(41) у тебя же 2 раза открывается диалог? Первый раз когда ты говоришь ПоместитьФайл, а второй это потом уже с помощью ДиалогаВыбораФайла?
44 Wobland
 
20.02.14
11:05
можно я опять ничего не понял? нужно идти, нужны данные.. сходи, получи. в чём затык?
45 sikuda
 
20.02.14
11:05
Нет ПоместитьФайл для веб клиента...
46 KKrKKdd
 
20.02.14
11:07
(45) так у меня Вебклиент... он запустит эту процедуру, откроется диалог, он потом откроет другой диалог.
47 KKrKKdd
 
20.02.14
11:09
(44) 2 раза открывать диалог выбора? так то да, я получу и двоичные данные и сам файл... понимаешь, эти процедуры друг друга дополняют и не имеют пересечений. потому что ДиалогВыбораФайла возвращает информацию о Пути к файлу... а ПоместитьФайл возвращает двоичные данные.
48 Wobland
 
20.02.14
11:09
(46) второй диалог не скомпилируется на веб-клиенте
49 sikuda
 
20.02.14
11:10
(46) Выберешь файл и ТекущаяКартинка тот адрес буфера с которым работаешь...
50 Wobland
 
20.02.14
11:12
(47) ПоместитьФайл помещает файл (необязательно с диалогом) и возвращает булево, чтоб ты знала
51 KKrKKdd
 
20.02.14
11:13
(50)  в веб клиенте без диалога не работает!
52 Wobland
 
20.02.14
11:13
(51) СП против
53 KKrKKdd
 
20.02.14
11:25
54 KKrKKdd
 
20.02.14
11:28
и у меня соответственно то же самое...
55 KKrKKdd
 
20.02.14
11:28
56 sikuda
 
20.02.14
11:29
Да ладно расслабтесь для 8.3 будем писать по другому(общий код), так что с текущим  не стоит заморачиваться...
&НаКлиенте
Процедура ВыбратьФайл(Команда)

Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", Объект);
    НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
    
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьВыборФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    
Если Не Результат Тогда
    Возврат;
КонецЕсли;
ТекущаяКартинка = Адрес;
ОтобразитьКартинкуНаКлиенте(ТекущаяКартинка);
КонецПроцедуры
57 KKrKKdd
 
20.02.14
11:34
(56) о! это уже интересно.... пробую...
58 KKrKKdd
 
20.02.14
11:51
(56) Ничего подобного. Это отработало аналогично процедуре ПоместитьФайл.
в переменные Результат, Адрес, ВыбранноеИмяФайла вернулось Истина,АдресВременногоХранилищаСДвоичнымиДанными,Картинка.jpg
59 KKrKKdd
 
20.02.14
11:54
вот если бы можно было как начать это помещение так и закончить его, закрыв интерактивное окно... эххх...
60 KKrKKdd
 
20.02.14
11:55
вывод напрашивается, этого сделать нельзя. придется работать с файлами через IE
61 KKrKKdd
 
20.02.14
11:56
Спасибо всем неравнодушным и откликнувшимся!
62 Wobland
 
20.02.14
11:56
спасибо на рабочий стол не намажешь
63 sikuda
 
20.02.14
11:57
(59) То есть ты хочешь программно передать локальный файл на сервер? Без запроса действий пользователя? Да?
64 KKrKKdd
 
20.02.14
12:02
я хочу его выбрать конечно один раз. тем самыи получить путь к нему, обратить его в двоичные данные и их на сервер отправить.
65 Wobland
 
20.02.14
12:03
отправить файл, конечно, не предлагать. это я уже понял
66 KKrKKdd
 
20.02.14
12:06
но как было сказано выше, Новый ДвоичныеДанные() не работает на вебе. Получается мне эти двоичные данные можно получить только методом ПоместитьФайл или НачатьПомещениеФайла не важно.... но эти методы возвращают неполное имя файла, без пути. в Мозиле, а в IE с путем...
67 Wobland
 
20.02.14
12:08
доставать свои ДД из ХЗ на сервере тоже не предлагать?
68 Wobland
 
20.02.14
12:09
(67) из временного хранилища
69 KKrKKdd
 
20.02.14
12:09
Идеально было бы если бы ПоместитьФайл работал на вебе неинтерактивно. тогда бы я выбрала файл диалогом, имела бы его полный путь, а потом еще и неинтерактивно поместила бы его двоичные данные в хранилище.
70 KKrKKdd
 
20.02.14
12:10
(67) ПОнимаешь, когда во временное хранилище я кладу картинку, то она потом пустая. мне нужно положить ее двоичные данные. а они не извлекаются из файла на веб...
71 Wobland
 
20.02.14
12:11
(70) то есть, проблема в том, что ты не можешь нормально поместить файл, получить файл?
72 KKrKKdd
 
20.02.14
12:12
могу. но мне нужен еще и полный путь к файлу. а его я могу получить только открыв диалогВыборФайла
73 KKrKKdd
 
20.02.14
12:13
Короче 2 метода. два диалога. оба достают по половине нужной информации...
74 Wobland
 
20.02.14
12:13
зачем тебе путь?
75 KKrKKdd
 
20.02.14
12:13
Чтобы получить Файл как объект и получить о нем информацию
76 Wobland
 
20.02.14
12:13
(73) верни с сервера свои размеры файла
77 KKrKKdd
 
20.02.14
12:14
а дату изменения
78 Wobland
 
20.02.14
12:14
(77) а пробовала?
79 KKrKKdd
 
20.02.14
12:15
нет... попробую сейчас
80 Wobland
 
20.02.14
12:15
у меня тут вообще прекрасное есть ;)

&НаКлиенте
Процедура Показать(Команда)
    #Если ВебКлиент Тогда
        Предупреждение("Не доделано, не додумано");
    #Иначе
        Если НЕ ЭтоАдресВременногоХранилища(АдресФайла) Тогда
            Возврат;
        КонецЕсли;
        ВременноеИмя=ПолучитьИмяВременногоФайла(РасширениеФайла);
        ПолучитьФайл(АдресФайла, ВременноеИмя, Ложь);
        ЗапуститьПриложение(ВременноеИмя);
    #КонецЕсли
КонецПроцедуры
81 KKrKKdd
 
20.02.14
12:17
:) да, жаль только что от веба никуда не деться в этом жестоком современном мире...
82 sikuda
 
20.02.14
14:43
(81) Жаль, что 1С не понимает первичности Web технологий.
http://www.html5rocks.com/ru/tutorials/file/dndfiles/
Закон Брукера: Даже маленькая практика стоит большой теории.