Имя: Пароль:
1C
1С v8
Работа с файлами
0 ammorf
 
10.04.18
08:44
Приветствую! Подскажите как получить/записать файл расположенный на сервере 1С на клиенте? При попытке получить файл клиент использует файловую систему клиенского ПК. Обычное приложение. Платформа последняя. Клиент-сервер.
1 Сияющий в темноте
 
10.04.18
08:59
Написать получение файла в процедуре,выполняющейся на сервере,только имя файла должно быть известно
2 Cool_Profi
 
10.04.18
08:59
На сервере пихнуть в хранилище значений, отдать клиенту, там получить из хранилища, записать
3 ammorf
 
10.04.18
09:02
(1) Обычное приложение. Процедура с директивой &НаСервере не прокатит..
4 shuhard
 
10.04.18
09:03
(3) у общего модуля есть галка где выполняться, она от толщины клиента не зависит
5 Strogg
 
10.04.18
09:03
(3) можешь через сетевую папку. Только доступ с парольной защитой отключить надо
6 ammorf
 
10.04.18
09:04
В общем задача такая. Обработка выполняет выгрузку:
    Обработина.РежимОбмена = "Выгрузка";    
    Обработина.ИмяФайлаОбмена  = "D:\1CShare\Upload_inueco.xml";
    Обработина.ИмяФайлаПравилОбмена  = "D:\1CShare\ExchangeRules.xml";
    
    Обработина.ЗагрузитьПравилаОбмена();
    Для Каждого ТПВ Из Обработина.ТаблицаПравилВыгрузки.Строки Цикл
        Для Каждого ТПВСтрока Из ТПВ.Строки Цикл
            ТПВСтрока.СсылкаНаУзелОбмена = ПланыОбмена.Полный.НайтиПоКоду("001");
        КонецЦикла;
    КонецЦикла;
    Обработина.ИспользоватьТранзакцииПриВыгрузкеДляПлановОбмена = Истина;
    Обработина.ВыполнитьВыгрузку();    
    Сообщить("Выгрузка завершена!");

На сервер обработка отрабатывает отлично. Но на клиентской машине не работает так как путь не существует.
7 ammorf
 
10.04.18
09:04
Использует обработку УниверсальныйОбменДаннымиXML
8 shuhard
 
10.04.18
09:06
(6) запускай на сервере
копируй файлы на клиент - внутри 1С , либо вне 1С
9 ammorf
 
10.04.18
09:10
(8) Клиент на сервере не вариант. Вообще это регламентное задание и оно выполняется по расписанию. Просто бухи хотят сами когда захотят инициализировать обмен. А работают они на клиентах на своих ПК. Я думал запускать рег. задание принудительно, но что то не разобрался как это сделать.
10 ammorf
 
10.04.18
09:11
а предоставлять им работу с консолью заданий я как то побаиваюсь))
11 Alexperumov
 
10.04.18
09:17
6) "Но на клиентской машине не работает так как путь не существует"   Положи в сетевую папку  типа
\\server\1CShare\Upload_inueco.xml
12 ammorf
 
10.04.18
09:18
(11) попробую уговорить нашего админа) он очень не любит всякие открытые сетевые папки (помешан на безопасности)))
13 shuhard
 
10.04.18
09:21
(9) т.е. делать ты ни чего не будешь - смысл создания топика ?
14 Сияющий в темноте
 
10.04.18
09:22
В чем проблема написать управлялку конкретным регламентным заданием?
15 ammorf
 
10.04.18
09:26
(14) все таки проще действительно пойти путем принудительного запуска регламентного задания.
16 _Дайвер_
 
10.04.18
09:40
&НаСервере //вызывается с клиента
Путь = ПолучитьИмяВременногоФайла();
        ЗаписьXML = Новый ЗаписьXML;
        ЗаписьXML.ОткрытьФайл(Путь);

Тут заполняешь файл например, получаешь или что хочешь делаешь

// Получаем двоичные данные файла и помещаем их во временное хранилище
ДвоичныеДанные = Новый ДвоичныеДанные(Путь);
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
        Возврат Адрес;

&НаКлиенте //После отработки серверной функции пишешь
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоФайла);
        ДвоичныеДанные.Записать(Объект.КаталогВыгрузки+"\"+ИмяФайлаXML);
        Сообщить("Файл сохранен в " + Объект.КаталогВыгрузки, СтатусСообщения.Внимание);


Примерно так, нюансы сам разберешь
17 ammorf
 
10.04.18
09:46
(16) конфигурация в режиме совместимости 8.1. Директивы не работают. Процедура помещаемая в эту директиву с клиента становится не видна.
Ошибка? Это не ошибка, это системная функция.