Здравствуйте,
есть необходимость сохранять выгрузку (в частности файл dbf) из 1С 8.3 в Тонком клиенте по выбранному пути, выгрузка локально на сервере проходит норм, на клиенте "Отказано в доступе", подозрения на стандартного серверного юзера USR1CV82, ему нужны доменные права что ли? сечас он локальный юзер с правами на сервере (просто как то не логично, вдруг кто то против чтобы этот пользователь имел доступ к его файловой системе, ведь инициатором является клиент почему на него не передается выполнение процедуры сохранения), вот код

```1c
    &НаКлиенте
    Процедура Выгрузка(Команда)

    ПутьНаСерв ="C:\TEMP";

    Если ЗначениеЗаполнено(Путь) Тогда

    ВыгрузкаНаСервере(ПутьНаСерв);

    Адрес = ПолучитьФайл(ПутьНаСерв);
    Описание = Новый ОписаниеПередаваемогоФайла(Путь, Адрес);
    МассивОписаний = Новый Массив;
    МассивОписаний.Добавить(Описание);
    ПолучитьФайлы(МассивОписаний,,,Ложь);

    Иначе
    Сообщить("Не указан путь");
    КонецЕсли;

    КонецПроцедуры
```

.
---
на всякий случай, я бы использовал прямые заполнения свойств ОписаниеПередаваемогоФайла:

```1c
    Описание = Новый ОписаниеПередаваемогоФайла;
    Описание.Имя = Путь;
    Описание.Хранение = Адрес;
```

Но тут вот еще. В Описание.Имя нужно передавать не путь (каталог), а имя файла. Можно полное имя (вместе с путем), или только имя, но тогда нужно в ПолучитьФайлы указать и каталог.
---
используйте временное хранилище, при передачи файла с клиента на сервер.
---
использую в процедуре ПолучитьФайл, просто не стал это уточнять
---
ПутьНаСерв ="C:\TEMP";
на сервере вы 1с клиента с админскими запускаете видимо если у вас к этой папке доступ есть.
почему не используете ПолучитьИмяВременногоФайла ?
---
не совсем, у серверного пользователя 1С есть доступ к папке на сервере, и нет на клиенте. Получается он не может получить доступ к клиентской папке и переместить туда файл из хранилища.
---
Если база серверная, то файл сохранился физически по пути C:\TEMP на сервере, а когда вы пытаетесь сделать

```1c
    &НаКлиенте
    ...
    Адрес = ПолучитьФайл(ПутьНаСерв);
```

То программа ищет локально на компьютере клиента!

Варианты:
1. Класть в общую папку.
2. Передавать в двоичных данных

```1c
    &НаСервере
    Функция ПечатьЧерезActiveDocumentНаСервере()

    ....
    МойДокументВДвоичныхДанных = Новый ДвоичныеДанные(ИмяВрем);
    Возврат МойДокументВДвоичныхДанных;
    КонецФункции
```

```1c
    &НаКлиенте
    Процедура ПечатьЧерезActiveDocument(Команда)
    ВордВДвоичныхДанных = ПечатьЧерезActiveDocumentНаСервере();
    ИмяВрем = ПолучитьИмяВременногоФайла(".docx");
    ВордВДвоичныхДанных.Записать(ИмяВрем);
    ЗапуститьПриложение(ИмяВрем,,,);
    КонецПроцедуры
```

3. Через временное хранилище

```1c
    &НаСервере
    ...
    Возврат ПоместитьВоВременноеХранилище(СтруктураВсехДокументов);
```

```1c
    &НаКлиенте
    ПолучитьИзВременногоХранилища
```
---
я использую временное хранилище, это просто я не стал уточнять при вызове функции

```1c
    Функция ПолучитьФайл(Путь)

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

    Возврат Адрес;

    КонецФункции
```

и уже на этапе сохранения файла с сервера на клиенте возникает ошибка доступа что логично, так как у серверного пользователя под которым работает 1С нет прав на файловую систему на компе клиента, я так понимаю, или это не так? а если так, то почему? я же процедуру выполняю на клиенте и по идее все необходимые операции на сервере уже исполнены, зачем он их пытается снова сделать "неклиентским" акаунтом
---
что-то тут совсем не правильно.
Первое, "Функция ПолучитьФайл(Путь) ". Так лучше не называть свою функцию. Есть одноименная функция глобального контекста ПолучитьФайл.
Второе,
ПутьНаСерв ="C:\TEMP";
Двоичное = Новый ДвоичныеДанные(Путь);
Это какие двоичные данные собираетесь получить из каталога? Каталог не может быть преобразован в двоичные данные.
---
честно, не заметил что функция назавана как служебная функция, но проблема не в этом, как раз я передаю в нее расположение файла( УТОЧНЕНИЕ ПутьНаСерв уже содержит файл, в процедуре выгрузки был дописан файлом) и помещаю его во временное хранилище "Адрес" и есть ничто иное как его расположение там, проблема на следующем этапе
---
если во временное хранилище точно помещается файл, то смотрим следующий код:

```1c
    Описание = Новый ОписаниеПередаваемогоФайла(Путь, Адрес);
    МассивОписаний = Новый Массив;
    МассивОписаний.Добавить(Описание);
    ПолучитьФайлы(МассивОписаний,,,Ложь);
```

Новый ОписаниеПередаваемогоФайла(Путь, Адрес); - тут нужно поменять местами. Сначала адрес в хранилище, потом путь до каталога на клиенте.
Хотя не уверен. В СП противоречивая информация.
---
я тоже на это обратил внимание, но потом увидел что ОписаниеПередаваемогоФайла сначала передается Имя а потом Хранилище, то есть наоборот, что тоже странно
---
на всякий случай, я бы использовал прямые заполнения свойств ОписаниеПередаваемогоФайла:

```1c
    Описание = Новый ОписаниеПередаваемогоФайла;
    Описание.Имя = Путь;
    Описание.Хранение = Адрес;
```

Но тут вот еще. В Описание.Имя нужно передавать не путь (каталог), а имя файла. Можно полное имя (вместе с путем), или только имя, но тогда нужно в ПолучитьФайлы указать и каталог.
---
спасибо!
В Описание.Имя нужно передавать не путь (каталог), а имя файла

чего то я это упустил, все отлично сохранилось.