Имя: Пароль:
1C
 
8.2. Как передать файл DBF на сервер для обработки?
0 V_V_V
 
05.03.10
12:02
Есть обработка по втягиванию данных из DBF, модуль обработки файла выполняется &НаСервереБезКонтекста. В ней выбирается локальный файл - как его без особых проблем передать на сервер и дать ссылку на реальное местонахождение?
1 kiruha
 
05.03.10
12:10
параметры в 8.2 не отменяли
2 V_V_V
 
05.03.10
12:12
(1) Может быть. Никогда прежде не доводилось перебрасывать файлы между клиентом и сервером - поэтому и задал вопрос. Чем мне могут помочь параметры? Пример какой-никакой есть?
3 AlexNV
 
05.03.10
12:14
Попробуй хранилище значения, оно вроде передается
4 kiruha
 
05.03.10
12:22
ПоместитьФайлы (PutFiles)
Синтаксис:
ПоместитьФайлы(<ПомещаемыеФайлы>, <ПомещенныеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>)
Параметры:
<ПомещаемыеФайлы> (необязательный)
Тип: Массив. Массив объектов типа ОписаниеПередаваемогоФайла.
Каждый объект описывает получаемый файл:
Хранение - расположение данных во временном хранилище;
Имя - это локальный путь, по которому должен быть получен файл.
Массив может быть заполнен полностью, в этом случае известен набор помещаемых файлов и адреса, по которым они должны быть сохранены.
Массив может быть заполнен частично, у элементов массива заполнены только имена. В этом случае, набор помещаемых файлов определен, а места хранения не известны. Файлы будут размещены в новых временных хранилищах.
Массив может быть не заполнен. В этом случае набор помещаемых файлов определяется по значениям остальных параметров метода (поиском по маске, либо интерактивным выбором).
<ПомещенныеФайлы> (необязательный)
Тип: Массив. Массив объектов типа ОписаниеПереданногоФайла.
Каждый объект описывает помещенный файл:
Хранение - расположение данных во временном хранилище;
Имя - это локальный путь, по которому получен получен файл.
<НаборПомещаемыхФайлов> (необязательный)
Тип: ДиалогВыбораФайла; Строка. Определяет набор помещаемых файлов.
Может быть задан строкой поиска для метода НайтиФайлы, либо, заранее подготовленным, диалогом выбора файлов в режиме открытия файлов.
Если параметр определен, то параметр <ПомещаемыеФайлы> должен быть не определен либо быть пустым массивом.
<Интерактивно> (необязательный)
Тип: Булево. Указывает использование интерактивного режима, при котором пользователю показывается диалог, в котором он может выбрать набор помещаемых файлов.
<УникальныйИдентификаторФормы> (необязательный)
Тип: УникальныйИдентификатор. Уникальный идентификатор формы, который можно получить с помощью свойства УникальныйИдентификатор управляемой формы.
Файл помещается во временное хранилище и автоматически удаляется после удаление объекта формы.
Если параметр не указан, помещенное значение будет удалено, после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
Возвращаемое значение:
Тип: Булево.
Описание:
Помещает набор файлов из локальной файловой системы во временное хранилище.

Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
Примечание:
Для работы метода на веб-клиенте, необходимо предварительно подключить расширение работы с файлами.
5 kiruha
 
05.03.10
12:26
Вообще там целый раздел.

Можно просто
КопироватьФайл("C:\Temp\Order.htm", "C:\My Documents\Order.htm");

Описание:
Копирует файл-источник в файл-приемник. Допускается перезапись файла-приемника.

Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:
Файл-приемник при создании будет иметь права доступа, аналогичные назначаемым при создании новых файлов (т.е. права доступа к файлу-источнику не копируются).
Допускается использование схем http, https и ftp для адресации файлов. При использовании этих схем в адресах необходимо указывать прямые слеши '/', а не обратные '\'.
6 V_V_V
 
05.03.10
13:28
Спасибо за наводку на раздел - я в другом копался, по файлам.
7 V_V_V
 
05.03.10
13:30
Передаю данные так

Файл = Новый Файл("" + ПутьККаталогу + "\Produce.dbf");
ФайлИсточник = Файл.ПолноеИмя;
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ФайлИсточник));
8 V_V_V
 
05.03.10
13:31
Принимаю так

ФайлПриемник = ПолучитьИмяВременногоФайла("dbf");
ДанныеХранилища = ПолучитьИзВременногоХранилища(Адрес);
ДанныеХранилища.Записать(ФайлПриемник);
9 V_V_V
 
05.03.10
13:31
В файловом варианте работает, в серверном ругается что длина файла превысила 8 символов.
10 acsent
 
05.03.10
13:32
dbf не работает с именами > 8.3
11 V_V_V
 
05.03.10
13:37
Извиняюсь: Длина имени файла превысила 8 символов
12 kiruha
 
05.03.10
13:38
На мой взгляд работа с файлами предполагает что они
могут быть весьма большого размера, поэтому
ПоместитьВоВременноеХранилище - как то некузяво

Вообще конечно интересно сколько по времени преобразование файла в 100Мб
13 kiruha
 
05.03.10
13:42
Даже гонять файл сервер/клиент уже некузяво.
14 V_V_V
 
05.03.10
13:46
Согласен - но мне бы хоть как-то решить этот вопрос.
Тем более что размеры файлов максимум 15 МБ.

Кажется нашел в чем причина ругани по имени: оно таки больше 8-ми символов /tmp/v8_xbypRy_5f.dbf
Щас буду резать до 8-ми - думаю заработает.

Сервер линуксовый, эт чтоб слеши не смущали...  :)
15 V_V_V
 
05.03.10
13:47
Имя имелось ввиду полученное ПолучитьИмяВременногоФайла
16 kiruha
 
05.03.10
13:49
Предположим есть некий классификатор на клиенте.
15 Мб.
Надо найти запись.
На клиенте это будет меньше сек, если ДБФ проиндексирована.
Если web соединение - 1024/100 кбит - 12 Кбайт на отдачу - 15 мин
15 мин на поиск записи !!
17 kiruha
 
05.03.10
13:52
Имеется ввиду если передавать файл на сервер
18 V_V_V
 
05.03.10
13:53
(16) Да нет, все не так плохо - локалка.
И задача не найти запись в DBF, а как раз внести в базу 1С. Свериться, не существует ли, проверить другие зависимости - тут серверу и флаг в руки.
19 V_V_V
 
05.03.10
15:58
Пишу код на прием данных

   ФайлПриемник = "/tmp/temp_v82.dbf";
   ДанныеХранилища = ПолучитьИзВременногоХранилища(Адрес);
   ДанныеХранилища.Записать(ФайлПриемник);
   ДБФ = Новый XBase(ФайлПриемник);


Ругается: Формат файла отличен от .DBF
20 V_V_V
 
05.03.10
16:07
Изначальный DBF-файл нормальный - я с него в файловую базу втягиваю данные как обычно. А после передачи в хранилище и выдирания его оттуда на сервере - формат теряется.
21 shuhard
 
05.03.10
16:08
(20) сравни файлы - скорее всего будет удлинение байт на 30-70
22 V_V_V
 
05.03.10
16:11
(21) Размер один к одному - это я проверял. Тестирую на коротеньком файлике в 4554 байт - оригинал и временный сходятся.
23 shuhard
 
05.03.10
16:13
(22) fc/b что говорит ?
24 V_V_V
 
05.03.10
16:20
(23) А это что такое?
25 shuhard
 
05.03.10
16:23
(24) пипец
Сравнение двух файлов или двух наборов файлов
и вывод различий между ними.


FC [/A] [/C] [/L] [/LBn] [/N] [/OFF[LINE]] [/T] [/U] [/W]
  [/nnnn][диск1:][путь1]имя_файла1 [диск2:][путь2]имя_файла2
FC /B [диск1:][путь1]имя_файла1 [диск2:][путь2]имя_файла2

 /A         Вывод только первой и последней строк для каждой группы различий.
 /B         Сравнение двоичных файлов.
 /C         Сравнение без учета регистра символов.
 /L         Сравнение файлов в формате ASCII.
 /LBn       Максимальное число несоответствий
            для заданного числа строк.
 /N         Вывод номеров строк при сравнении текстовых файлов ASCII.
 /OFF[LINE] Не пропускать файлы с установленным атрибутом "Автономный".
 /T         Символы табуляции не заменяются эквивалентным числом пробелов.
 /U         Сравнение файлов в формате UNICODE.
 /W         Пропуск пробелов и символов табуляции при сравнении.
 /nnnn      Число последовательных совпадающих строк, которое
            должно встретиться после группы несовпадающих.
 [диск1:][путь1]имя_файла1  
            Указывает первый файл или набор файлов для сравнения.
 [диск2:][путь2]имя_файла2  
            Указывает второй файл или набор файлов для сравнения.
26 V_V_V
 
05.03.10
16:29
(25) Круто...  :)
Сервер - Linux, локальная машина - ХР.
Щас выдеру файлик - сравню...
27 shuhard
 
05.03.10
16:31
(26) [Сервер - Linux]
а работает ли на nix функционал dbf в 1С спросим мы ?
28 V_V_V
 
05.03.10
16:38
А не должен?
29 shuhard
 
05.03.10
16:42
(28) ты файлы сравнивай - не отвлекайся
30 V_V_V
 
05.03.10
16:49
Честно говоря и сам ожидал, что там будет что-то криминальное. Но не поверишь, пишет: FC: различия не найдены (это дословно).
Кстати, в винде этот же файлик мой winDBFview открывает на ура.
Хотя все больше склоняюсь к той же мысли, что 1С-ке не нравится что-то в операционке сервера...
31 shuhard
 
05.03.10
16:57
(30) сделай от противного, создай на сервере dbf, заполни его данными и прочитай обратно в 1С
32 V_V_V
 
05.03.10
16:59
Хорошо, попробую.
33 V_V_V
 
06.03.10
15:06
При создании файла на сервере та же ошибка: Формат файла отличен от .DBF. Даже внести данные не дает.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс