|
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. Даже внести данные не дает.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |