Имя: Пароль:
1C
 
Для чего временное хранилище?
0 AdApter
 
30.06.10
14:28
Для чего в 8.2. следует использовать ВРЕМЕННОЕХранилище? Из него на запустишь файл. Пытаюсь понять что полезного можно сделать с этим адресом временного хранилища. Можно ведь сразу помещать файлы в постоянное хранилище (реквизит)
1 YF
 
30.06.10
14:29
(0) Я вот туда перемещаю вайлы с клиента, чтобы их распарсить на сервере
2 AdApter
 
30.06.10
14:34
а можно на понятных примерах?
3 AdApter
 
30.06.10
14:37
а ну кажется понял. А если дополнительная обработка\проверка файлов до записи объекта не нужна, то и врем. хран тоже не нужно?
4 YF
 
30.06.10
14:39
Модуль формы обработки:
&НаКлиенте
//------- © Яшенев Ф. В. aka YF --------------------
// По кнопке "Загрузить данные" на форме
Процедура команда_ЗагрузитьДанные(_команда)
   // Инициализируем переменную, содержащую результат проверки
   результатПроверки_    = Истина;
   // Возьмем путь к файлу в переменную
   путь_                = СокрЛП(ИмяФайла);
   // Начнем проверку    
   // Проверим чтобы путь был не пустой
   Если путь_ = "" Тогда
       результатПроверки_ = Ложь;    
   КонецЕсли;//путь_ = ""
   // проверим файл на существование
   файл_    = Новый Файл(путь_);
   Если файл_.Существует() Тогда
       Если файл_.ЭтоФайл() Тогда
       иначе
           результатПроверки_ = Ложь;
       КонецЕсли;//Файл_.ЭтоФайл
   Иначе
       результатПроверки_ = Ложь;
   КонецЕсли;//файл_.Существует
   // Посмотрим на компьютер
   Если Объект.Компьютер.Пустая() Тогда
       результатПроверки_ = Ложь;
   КонецЕсли;//Объект.Компьютер.Пустая()
   // Итак, если результат плох, то на этом все
   Если результатПроверки_ Тогда
   Иначе
       Сообщить("Проверка на клиенте: Некорректно заполнены реквизиты!");
       Возврат;
   КонецЕсли;//результатПроверки_
   // Имеем положительный результат проверки, продолжаем работать
   // Нужно вызвать процедуру по загрузке данных
   файлТекстовый_            = Новый ДвоичныеДанные(путь_);
   Объект.АдресХранилища    = ПоместитьВоВременноеХранилище(файлТекстовый_, Новый УникальныйИдентификатор);
   // Вызовем серверную процедуру загрузки
   ВыполнитьЗагрузкуИзМодуля();
   // Отчитаемся о выполнении
   Предупреждение("Загрузка выполнена!", 60);
КонецПроцедуры//команда_ЗагрузитьДанные
       
&НаСервере
//------- © Яшенев Ф. В. aka YF --------------------
// Запускаем экспортную процедуру загрузки данных из модуля объекта
Процедура ВыполнитьЗагрузкуИзМодуля()
   обработка_ = РеквизитФормыВЗначение("Объект");
   обработка_.ЗагрузитьДанные();
КонецПроцедуры//ВыполнитьЗагрузкуИзМодуля
5 YF
 
30.06.10
14:39
Модуль объекта обработки

&НаСервере
//------- © Яшенев Ф. В. aka YF --------------------
// Загружаем данные из текстового файла
Процедура ЗагрузитьДанные() Экспорт
   // Инициализируем результат проверки
   результатПроверки_    = Истина;
   // Фозьмем файл из внешнего хранилища и, если его размер 0, тогда
   //будем считать, что файл не выбран
   файл_                =  ПолучитьИзВременногоХранилища(СокрЛП(АдресХранилища));
   Если файл_.Размер() = 0 Тогда
       результатПроверки_ = Ложь;
   КонецЕсли;//файл_.Размер()= 0
   // Если плохой результат проверки - то закончим    
   Если результатПроверки_ Тогда
   Иначе
       Сообщить("Проверка на сервере: Некорректно заполнены реквизиты!");
       Возврат;
   КонецЕсли;//результатПроверки_
   // Имеем положительный результат проверки, продолжаем работать
   // Положим двоичные данные во временный файл
   временныйФайл_    = КаталогВременныхФайлов() + "\" + СтрЗаменить(СокрЛП(АдресХранилища),"/", "-") + ".log";
   файл_.Записать(временныйФайл_);
   // Прочитаем текст из файла
   текст_            = Новый ТекстовыйДокумент;
   текст_.Прочитать(временныйФайл_);
   текст_            = текст_.ПолучитьТекст();
   // Удалим временный файл
   УдалитьФайлы(временныйФайл_);
   // Вызовем процедуру по переносу текста в документ записи логов    
   РаботасТекстами.ПеренестиТекствДокумент(текст_, Компьютер, ТекущаяДатаСеанса());    
КонецПроцедуры//ЗагрузитьДанные
6 YF
 
30.06.10
14:40
Мне это было нужно, чтобы файл обрабатывать на сервере, а не на клиенте
7 YF
 
30.06.10
14:42
8 AdApter
 
30.06.10
14:43
т.е. клиент загружает какой-то файл. Текстовый например, а ты смотришь правильно ли в файле заполнены значения. И если нет, то не загружаешь?
9 YF
 
30.06.10
14:45
(8) Не это у меня конфига для обработки файлов-логов межсетевого экрана, она записи событий из файла сохраняет себе в базу, чтобы отчеты строить.
Берем файл, далее по нему нужно пробежаться и раскидать по базе.
Решил делать это на сервере, чтобы не грузить клиента, вот и понадобилось сначала файл на сервер перебросить
10 AdApter
 
30.06.10
14:51
Думаю для этого не нужно временное хранилище. Можно поместить в обычное хранилище (реквизит дока или справочника с типом "Хранилище"), на сервере из него достать, сохранить в любой каталог на сервере и обрабатывать.

в той темке писали что двоичныеДанные нельзя получить в веб-клиенте, хотя по синтаксис помощнику этого не скажешь. щас проверю
11 Defender aka LINN
 
30.06.10
14:51
v8: v8: 8.2 как работать с COMObject
Вот для этого, например.
12 YF
 
30.06.10
14:52
(10) "Можно поместить в обычное хранилище (реквизит дока или справочника"
так нуно сначала создать такой справочник в конфигураторе, а нафига лишний объект в базе?
13 AdApter
 
30.06.10
15:01
проверил, в веб-клиенте не отрабатывает :(
14 AdApter
 
30.06.10
15:03
ну тогда вопросов нет, спасибо