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