|
Выгрузка файла | ☑ | ||
---|---|---|---|---|
0
ALEX7519
29.10.18
✎
16:25
|
1с зуп 8.3
Не подскажите, как исправить : была обработка по выгрузке данных в дбф, работала в файловом режиме на клиенте процедура выбора файла &НаКлиенте Процедура ИмяФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ВыборФайла=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ВыборФайла.Фильтр= "*.dbf)|*.dbf"; ВыборФайла.МножественныйВыбор=Ложь; ВыборФайла.Каталог=ИмяФайла; ВыборФайла.ПроверятьСуществованиеФайла=Ложь; Если ВыборФайла.Выбрать() тогда ИмяФайла = ВыборФайла.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Выгрузить() ВыгрузитьНаСервере(); // Предупреждение("Все"); КонецПроцедуры &НаСервере Процедура ВыгрузитьНаСервере() XBase = Новый XBase; XBase.ОткрытьФайл(ИмяФайла); ... XBase=Новый XBase; XBase.Поля.Добавить("p8","N",15,2); xbase.Кодировка=КодировкаXBase.ANSI; XBase.СоздатьФайл(ИмяФайла); .... XBase.Записать(); после перевода базы на sql перестало работать. я так понимаю, не видит путь, который мы выбираем на клиенте ? как это обойти ? как то через временное хранилище ??? |
|||
1
Дмитрий
29.10.18
✎
16:29
|
на сервере складывай данные в массив, передавай на клиента, на клиенте записывай в файл
|
|||
2
DmitriyDI
29.10.18
✎
16:30
|
(0) если не переписывать код, можно использовать сетевой путь, обязательно чтобы у пользователя под которым работает 1С был доступ к папке.
|
|||
3
ALEX7519
29.10.18
✎
16:34
|
(1) а сразу на сервере можно формирорвать какой-ниб временный файл и потом передавать его на клиент можно как-нибудь ?
а как передать потом на клиент обратно массив ? |
|||
4
Lexey_
29.10.18
✎
16:40
|
(3) можно конечно
|
|||
5
Маленький Вопросик
29.10.18
✎
16:40
|
(0) это потому, что в файловом режиме у тебя работало на локальной машине. а тут все на том сервере, где установлено
|
|||
6
ALEX7519
29.10.18
✎
16:41
|
(4) а как ?
|
|||
7
Lexey_
29.10.18
✎
16:45
|
(6) ПоместитьВоВременноеХранилище()
|
|||
8
ZDenis
29.10.18
✎
16:46
|
(6) &На клиенте
АдресВременногоХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла ),ЭтаФорма.УникальныйИдентификатор); ЧтоТоТамНаСервере(АдресВременногоХранилища) &НаСервере ДанныеХранилища = ПолучитьИзВременногоХранилища(АдресВременногоХранилища) |
|||
9
ZDenis
29.10.18
✎
16:51
|
+8
Дальше можно типа так (там же на сервере) ФайлПриемник = "/tmp/temp_v83.dbf"; ДанныеХранилища.Записать(ФайлПриемник); XBase = Новый XBase; XBase.ОткрытьФайл(ФайлПриемник); |
|||
10
ALEX7519
29.10.18
✎
16:55
|
(9) потом заполняю XBase и потом даю команду
XBase.Записать(); и он сформирует файл на клиентской машине ? |
|||
11
ZDenis
29.10.18
✎
16:57
|
(10) не не не, он его сформирует на сервере, а потом через временное хранилище обратно
|
|||
12
ALEX7519
29.10.18
✎
16:59
|
(11) простите конечно нуба, но как его обратно на клиенте из временного хранилища ? :)
&На клиенте АдресВременногоХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла ),ЭтаФорма.УникальныйИдентификатор); ЧтоТоТамНаСервере(АдресВременногоХранилища) ДанныеХранилища = ПолучитьИзВременногоХранилища(АдресВременногоХранилища); ???? |
|||
13
ZDenis
29.10.18
✎
17:00
|
(12) по аналогии, т.е. на сервере ПоместитьВоВременноеХранилище, а потом на клиенте ПолучитьИзВременногоХранилища
|
|||
14
ALEX7519
29.10.18
✎
17:06
|
(13) на сервере ?ПоместитьВоВременноеХранилище(ФайлПриемник,ЭтаФорма.УникальныйИдентификатор);
ЭтаФорма.УникальныйИдентификатор - на сервере видно ее ? и еще "/tmp/temp_v83.dbf"; каталог /tmp/ всегда есть ? |
|||
15
ZDenis
29.10.18
✎
17:18
|
УникальныйИдентификатор передается исключительно для того чтобы при закрытии форму временное хранилище очищалось.
Для передачи на клиент оно и не надо. Т.е. на клиенте запускаешь процедуру, в ней помещаешь во временное, потом в ней вызываешь серверную. В серверной заполняешь и возвращаешься в эту же клиентскую процедуру и в ней получаешь из временного хранилища. "каталог /tmp/ всегда есть ?" Должен быть, проверь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |