Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Выгрузка файла

Выгрузка файла
Я
   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
на сервере складывай данные в массив, передавай на клиента, на клиенте записывай в файл
   DmitriyDI
 
2 - 29.10.18 - 16:30
(0) если не переписывать код, можно использовать сетевой путь, обязательно чтобы у пользователя под которым работает 1С был доступ к папке.
   ALEX7519
 
3 - 29.10.18 - 16:34
(1) а сразу на сервере можно формирорвать какой-ниб временный файл и потом передавать его на клиент можно как-нибудь ?
а как передать потом на клиент обратно массив ?
   Lexey_
 
4 - 29.10.18 - 16:40
(3) можно конечно
   МаленькийВопросик
 
5 - 29.10.18 - 16:40
(0) это потому, что в файловом режиме у тебя работало на локальной машине. а тут все на том сервере, где установлено
   ALEX7519
 
6 - 29.10.18 - 16:41
(4) а как ?
   Lexey_
 
7 - 29.10.18 - 16:45
(6) ПоместитьВоВременноеХранилище()
   ZDenis
 
8 - 29.10.18 - 16:46
(6) &На клиенте
АдресВременногоХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла ),ЭтаФорма.УникальныйИдентификатор);
ЧтоТоТамНаСервере(АдресВременногоХранилища)


&НаСервере
ДанныеХранилища = ПолучитьИзВременногоХранилища(АдресВременногоХранилища)
   ZDenis
 
9 - 29.10.18 - 16:51
+8

Дальше можно типа так (там же на сервере)

    ФайлПриемник = "/tmp/temp_v83.dbf";
    ДанныеХранилища.Записать(ФайлПриемник);
    XBase = Новый XBase;
    XBase.ОткрытьФайл(ФайлПриемник);
   ALEX7519
 
10 - 29.10.18 - 16:55
(9) потом заполняю XBase и потом даю команду
XBase.Записать();

и он сформирует файл на клиентской машине ?
 
 Рекламное место пустует
   ZDenis
 
11 - 29.10.18 - 16:57
(10) не не не, он его сформирует на сервере, а потом через временное хранилище обратно
   ALEX7519
 
12 - 29.10.18 - 16:59
(11) простите конечно нуба, но как его обратно на клиенте из временного хранилища ?  :)

&На клиенте
АдресВременногоХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяФайла ),ЭтаФорма.УникальныйИдентификатор);
ЧтоТоТамНаСервере(АдресВременногоХранилища)

ДанныеХранилища = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
????
   ZDenis
 
13 - 29.10.18 - 17:00
(12) по аналогии, т.е. на сервере ПоместитьВоВременноеХранилище, а потом на клиенте ПолучитьИзВременногоХранилища
   ALEX7519
 
14 - 29.10.18 - 17:06
(13) на сервере ?ПоместитьВоВременноеХранилище(ФайлПриемник,ЭтаФорма.УникальныйИдентификатор);

ЭтаФорма.УникальныйИдентификатор -  на сервере видно ее ?

и еще
"/tmp/temp_v83.dbf";

каталог /tmp/ всегда есть ?
   ZDenis
 
15 - 29.10.18 - 17:18
УникальныйИдентификатор передается исключительно для того чтобы при закрытии форму временное хранилище очищалось.
Для передачи на клиент оно и не надо.

Т.е. на клиенте запускаешь процедуру, в ней помещаешь во временное, потом в ней вызываешь серверную. В серверной заполняешь и возвращаешься в эту же клиентскую процедуру и в ней получаешь из временного хранилища.

"каталог /tmp/ всегда есть ?" Должен быть, проверь.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует