Здравствуйте, давно написал небольшой код для копирования выбранного файла в специальный каталог, в файловом варианте все отрабатывает чудесно но встал вопрос как это сделать на сервере?

Сам код:

```1c
    Процедура ТЧЭскизДобавленияНаСервере(ПрисоединенныеФайлы,ИмяФайла)
    ТЧНоваяСтрока=Объект.ТЧЭскиз.Добавить();
    ТЧНоваяСтрока.Дата=ТекущаяДата();
    ТЧНоваяСтрока.Время=Формат(ТекущаяДата(),"ДЛФ=T");
    ТЧНоваяСтрока.Пользователь=Пользователи.ТекущийПользователь();
    ТЧНоваяСтрока.ПутьКФайлу=ПрисоединенныеФайлы;
    ТЧНоваяСтрока.ПрисоединенныеФайлы = ИмяФайла;
    СоздатьКаталог("\\1CSERVER\эскизы"+Объект.Покупатель.Наименование+"Заявка №"+Объект.Ссылка.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
    КопироватьФайл(ПрисоединенныеФайлы,"\\1CSERVER\эскизы\Заявка №"+Объект.Ссылка.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);

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

Подскажите пожалуйста как нужно поправить, сейчас выходит ошибка (Во вложении).
---
(15)

Как итог смог решить проблему переделав код следующим образом. Понимаю что не совсем правильно, но задача горит и как временное решение сгодиться:

```1c
    &НаКлиенте
    Процедура ТЧЭскизПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
    СтандартнаяОбработка=Ложь;
    Отказ=Истина;

    СтандартнаяОбработка=ложь;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите файл";
    Диалог.ПолноеИмяФайла = ";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Каталог = "F:\";
    Если Диалог.Выбрать() Тогда

    ПрисоединенныеФайлы = Диалог.ПолноеИмяФайла;
    ВычисляемИмяФайла = СтрРазделить(ПрисоединенныеФайлы, "\", Ложь);
    ИмяФайла = ВычисляемИмяФайла.Количество();
    ИмяФайла = ВычисляемИмяФайла[Имяфайла-1];

    КонецЕсли;
    //Диалог.

    ТЧНоваяСтрока=Объект.ТЧЭскиз.Добавить();
    ТЧНоваяСтрока.Дата=ТекущаяДата();
    ТЧНоваяСтрока.Время=Формат(ТекущаяДата(),"ДЛФ=T");
    ТЧНоваяСтрока.Пользователь=ПользовательНаСервере ();
    ТЧНоваяСтрока.ПутьКФайлу=ПрисоединенныеФайлы;
    НаименованиеПокупателя=НаименованиеПокупателяНаСервере();
    НомерДокумента=НомерНаСервере ();
    ТЧНоваяСтрока.ПрисоединенныеФайлы = ИмяФайла;
    СоздатьКаталог("\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
    КопироватьФайл(ПрисоединенныеФайлы,"\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);

    СтатусЭскизаПриИзмененииНаСервере()

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

    Функция НаименованиеПокупателяНаСервере()
    Возврат Объект.Покупатель.Наименование;
    КонецФункции

    Функция НомерНаСервере()
    Возврат Объект.Ссылка.Номер;
    КонецФункции

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

```1c
    &НаКлиенте
    Процедура ТЧЭскизПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
    СтандартнаяОбработка=Ложь;
    Отказ=Истина;

    СтандартнаяОбработка=ложь;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите файл";
    Диалог.ПолноеИмяФайла = ";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Каталог = "F:\";
    Если Диалог.Выбрать() Тогда

    ПрисоединенныеФайлы = Диалог.ПолноеИмяФайла;
    ВычисляемИмяФайла = СтрРазделить(ПрисоединенныеФайлы, "\", Ложь);
    ИмяФайла = ВычисляемИмяФайла.Количество();
    ИмяФайла = ВычисляемИмяФайла[Имяфайла-1];

    КонецЕсли;
    //Диалог.

    ТЧЭскизДобавленияНаСервере(ПрисоединенныеФайлы,ИмяФайла);

    СтатусЭскизаПриИзмененииНаСервере()

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

    Процедура ТЧЭскизДобавленияНаСервере(ПрисоединенныеФайлы,ИмяФайла)
    ТЧНоваяСтрока=Объект.ТЧЭскиз.Добавить();
    ТЧНоваяСтрока.Дата=ТекущаяДата();
    ТЧНоваяСтрока.Время=Формат(ТекущаяДата(),"ДЛФ=T");
    ТЧНоваяСтрока.Пользователь=Пользователи.ТекущийПользователь();
    ТЧНоваяСтрока.ПутьКФайлу=ПрисоединенныеФайлы;
    ТЧНоваяСтрока.ПрисоединенныеФайлы = ИмяФайла;
    СоздатьКаталог("\\1CSERVER\эскизы"+Объект.Покупатель.Наименование+"Заявка №"+Объект.Ссылка.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
    КопироватьФайл(ПрисоединенныеФайлы,"\\1CSERVER\эскизы\Заявка №"+Объект.Ссылка.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);

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

    &НаКлиенте
    Процедура ТЧЭскизПриАктивизацииСтроки(Элемент)
    Если Не Элемент.ТекущийЭлемент=Неопределено Тогда
    Если ТекущийЭлемент.ТекущийЭлемент.Имя="ТЧЭскизПрисоединенныеФайлы" Тогда
    ТекущиеДанные=Элементы.ТЧЭскиз.ТекущиеДанные;
    НомерСтроки=ТекущиеДанные.НомерСтроки;
    ЗапуститьПриложение(Объект.ТЧЭскиз[НомерСтроки-1].ПутьКФайлу);
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
```
---
Прекрасно, теперь мы знаем, как все выглядит) Так зачем копирование файла выполнять на сервере?
---
Буду честен, встал вопрос, начитался в интернете, смог сделать и забыл на долгое время)
Так что сам не уверен, наверное можно и через клиент попробовать, только как это относится к моему вопросу?
---
Ну, может с правами затык, а в (12) вы говорите, что у всех пользователей есть права на доступ к каталогу, а этих прав может не быть у пользователя, под которым 1с ходит на сервер.
Кстати, а нет ли в имени формируемого файла каких-нибудь запрещенных символов?
---
Нет, с этим проблем быть не может, все проверялось в том числе на пользователе владеющим админскими правами на сервере/компьютере и 1С...
В имени тоже проблем нет, до этого тестировал все на файловой, игрался с именами и форматами.
---
Ну там присутствует Покупатель.Наименование, вы на всех покупателях тестировали? Кто угодно запросто мог вкорячить в наименование какую-нибудь звездочку.

UPD А, вижу, вы просто решили перенести выполнение на сервер. Но зачем, если на клиенте работало?
---
Да, проверял в том числе и на тех же покупателях что работали на файловой...
---
(15)

Как итог смог решить проблему переделав код следующим образом. Понимаю что не совсем правильно, но задача горит и как временное решение сгодиться:

```1c
    &НаКлиенте
    Процедура ТЧЭскизПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
    СтандартнаяОбработка=Ложь;
    Отказ=Истина;

    СтандартнаяОбработка=ложь;
    Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Заголовок = "Выберите файл";
    Диалог.ПолноеИмяФайла = ";
    Диалог.МножественныйВыбор = Ложь;
    Диалог.Каталог = "F:\";
    Если Диалог.Выбрать() Тогда

    ПрисоединенныеФайлы = Диалог.ПолноеИмяФайла;
    ВычисляемИмяФайла = СтрРазделить(ПрисоединенныеФайлы, "\", Ложь);
    ИмяФайла = ВычисляемИмяФайла.Количество();
    ИмяФайла = ВычисляемИмяФайла[Имяфайла-1];

    КонецЕсли;
    //Диалог.

    ТЧНоваяСтрока=Объект.ТЧЭскиз.Добавить();
    ТЧНоваяСтрока.Дата=ТекущаяДата();
    ТЧНоваяСтрока.Время=Формат(ТекущаяДата(),"ДЛФ=T");
    ТЧНоваяСтрока.Пользователь=ПользовательНаСервере ();
    ТЧНоваяСтрока.ПутьКФайлу=ПрисоединенныеФайлы;
    НаименованиеПокупателя=НаименованиеПокупателяНаСервере();
    НомерДокумента=НомерНаСервере ();
    ТЧНоваяСтрока.ПрисоединенныеФайлы = ИмяФайла;
    СоздатьКаталог("\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
    КопироватьФайл(ПрисоединенныеФайлы,"\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);

    СтатусЭскизаПриИзмененииНаСервере()

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

    Функция НаименованиеПокупателяНаСервере()
    Возврат Объект.Покупатель.Наименование;
    КонецФункции

    Функция НомерНаСервере()
    Возврат Объект.Ссылка.Номер;
    КонецФункции

    Функция ПользовательНаСервере ()
    Пользователь=Пользователи.ТекущийПользователь();
    Возврат Пользователь
    КонецФункции
```
---
зачем два раза на сервер-то бегать?

```1c
    Данные = ДанныеДляПечати();

    СоздатьКаталог("\\192.168.0.249\эскизы\"+Данные.Покупатель+"Заявка №"+Данные.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
    КопироватьФайл(ПрисоединенныеФайлы,"\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);

    .....

    Функция ДанныеДляПечати()
    Возврат Новый Структура("Покупатель, Номер", Объект.Покупатель.Наименование, Объект.Ссылка.Номер)
    КонецФункции
```
---
Кстати да, можно и так, не подумал, спасибо).
---
На серверной тоже не должно быть проблем.
Просто процедуры, которые выбирают пути и сохраняют файл должны исполнятся на клиенте.