Имя: Пароль:
1C
1С v8
Поместить файл во временное хранилище на веб-клиенте
0 zzhiraf
 
22.02.12
09:17
Как поместить файл на веб-клиенте во временное хранилище (передать на сервер)?
1 el-gamberro
 
22.02.12
09:18
Глобальный контекст.ПоместитьВоВременноеХранилище (Global context.PutToTempStorage)
Глобальный контекст (Global context)
ПоместитьВоВременноеХранилище (PutToTempStorage)
Синтаксис:

ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
Параметры:

<Данные> (обязательный)

Тип: Произвольный.
Данные, которые необходимо поместить во временное хранилище.
<Адрес> (необязательный)

Тип: УникальныйИдентификатор; Строка.
Адрес во временном хранилище, по которому надо поместить данные. Или уникальный идентификатор формы, во временное хранилище которой, надо поместить данные и вернуть новый адрес.
В случае, если передается УникальныйИдентификатор формы, то значение будет автоматически удалено после закрытия этой формы.
Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Возвращаемое значение:

Тип: Строка.
Если в параметре <Адрес> указан уникальный идентификатор формы, то после помещения значения во временное хранилище формы, возвращает адрес.
Данные возвращаются только после того, как фоновое задание будет завершено.
Описание:

Сохраняет сериализуемое значение во временное хранилище.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Вызов метода выполняет обращение к серверу.

Примечание:

Также позволяет поместить данные из фонового задания в родительский сеанс. Для этого следует в родительском сеансе поместить во временное хранилище пустое значение, передав идентификатор формы. Затем полученный адрес передать в фоновое задание через параметры фонового задания. Далее, если этот адрес использовать в параметре <Адрес>, то результат будет скопирован в сеанс, из которого было запущено фоновое задание.
2 el-gamberro
 
22.02.12
09:19
ДвоичныеДанные (BinaryData)
На основании файла
Синтаксис:

Новый ДвоичныеДанные(<ИмяФайла>)
Параметры:

<ИмяФайла> (обязательный)

Тип: Строка.
Имя файла, из которого будет загружено значение в виде двоичных данных
Описание:

Создает объект и помещает в него двоичные данные, взятые из файла.
В режиме веб-клиента недоступен.
Пример:

ФайлКартинки = "C:\Мои документы\Картинка1.bmp";
ДвоичныеДанные = Новый ДвоичныеДанные(ФайлКартинки);
3 zzhiraf
 
22.02.12
09:19
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)  
<Данные> это что?
4 el-gamberro
 
22.02.12
09:20
(3) см (2)
5 zzhiraf
 
22.02.12
09:20
ДвДанные = Новый ДвоичныеДанные(ИмяФайла)
Конструктор на веб-клиенте не определен.
6 zzhiraf
 
22.02.12
09:21
(2) "В режиме веб-клиента недоступен. " :)
7 zzhiraf
 
22.02.12
09:22
ПоместитьФайл() - работает только интерактивно...
8 el-gamberro
 
22.02.12
09:28
(7) не только
9 zzhiraf
 
22.02.12
09:31
(8) в веб-клиенте только интерактивно
10 wald
 
22.02.12
09:33
&НаКлиенте
Процедура ЗагрузитьФайлСДиска(Команда)
       АдресВХранилище = "";
       ВыбранноеИмяФайла = "";
       Если ПоместитьФайл(АдресВХранилище, , ВыбранноеИмяФайла
           , , УникальныйИдентификатор) Тогда
           Файл = Новый Файл(ВыбранноеИмяФайла);
           ИмяФайла = Файл.Имя;
           СсылкаНаФайлВоВременномХранилище = АдресВХранилище;
           Модифицированность = Истина;
       КонецЕсли;
       Объект.ИмяФайла = ИмяФайла;
       
КонецПроцедуры
11 wald
 
22.02.12
09:35
А перед записью на сервере:

   //Получить файл
   Если ЭтоАдресВременногоХранилища(СсылкаНаФайлВоВременномХранилище) Тогда
       ДвичныеДанные = ПолучитьИзВременногоХранилища(СсылкаНаФайлВоВременномХранилище);
       ТекущийОбъект.Хранилище = Новый ХранилищеЗначения(ДвичныеДанные, Новый СжатиеДанных(9));
       ТекущийОбъект.ИмяФайла = ИмяФайла;
   КонецЕсли;
12 zzhiraf
 
22.02.12
09:37
(10) см (7),(9)
13 zzhiraf
 
22.02.12
09:43
В этой теме приводятся примеры того, что мне нужно v8: У кого нибудь есть готовый вариант кодирования/декодирования BASE64?
Проблема в том что на веб-клиенте это не работает...

Строка = КодироватьМассивБайтовВСтроку6Бит(objHTTP.responseBody.Выгрузить());
Двоичные = Base64Значение(Строка);

Здесь метод Выгрузить() не работает

set helper = CreateObject("MSXML2.DomDocument.3.0").createElement("a")
helper.DataType = "bin.base64"
helper.nodeTypedValue = safeArray
toBase64 = helper.text

Здесь затык на helper.DataType = "bin.base64"
14 zzhiraf
 
22.02.12
09:56
вот код который сохраняет файл на диск клиента:
   Соединение = Новый COMОбъект("Msxml2.XMLHTTP.6.0");
   MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
   MSScriptControl.Language = "javascript";
   Стрим = Новый COMОбъект("ADODB.Stream");
   MSScriptControl.AddObject("Стрим",Стрим);
   MSScriptControl.AddObject("Соединение",Соединение);
   
   
   fso = Новый COMОбъект("Scripting.FileSystemObject");
   tfolder = fso.GetSpecialFolder(2);
   
   Стрим.Mode = 3;
   Стрим.Type = 1;
   
   Соединение.Open("GET", "путьккартинке", 0, "","");
   //Сообщить(СтрокаЗапроса);
   //Соединение.SetRequestHeader("Content-Type", "image/jpeg");
   //Соединение.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=windows-1251");
   
   Соединение.Send();
   Если (Соединение.readyState = 4) И (Соединение.status = 200) тогда
       Попытка
           Стрим.Open();
           MSScriptControl.Eval("Стрим.Write(Соединение.responseBody)");
           tname = fso.GetTempName();    
           Стрим.SaveToFile(tfolder.Path + "\" +tname, 2);
           Стрим.Close();    
       Исключение
           Сообщить(ОписаниеОшибки());
           Возврат ;
       КонецПопытки;
   КонецЕсли;

Вопрос как из этого получить ДвоичныеДанные?
15 БибиГон
 
22.02.12
09:59
(14) этот код где находится? в обработке?
16 БибиГон
 
22.02.12
10:01
+ ты сохраняешь файл на диск клиента, что теперь хочешь получить?
17 zzhiraf
 
22.02.12
10:09
Код, да, в обработке.
ДвоичныеДанные хочу получить чтоб поместить их во временное хранилище на сервере.
Можно и без файла, он не обязателен... Просто пока максимум что удалось - сохранить картинку в файл на диск.
18 zzhiraf
 
22.02.12
10:11
Вообще же нужно сохранить картинку в базу.
19 el-gamberro
 
22.02.12
11:17
(18) посмотри как это реализовано в типовой УТ или упр. небольшой фирмой
20 zzhiraf
 
24.02.12
09:17
Получилось)