Здравствуйте, давно написал небольшой код для копирования выбранного файла в специальный каталог, в файловом варианте все отрабатывает чудесно но встал вопрос как это сделать на сервере?
Сам код:
Подскажите пожалуйста как нужно поправить, сейчас выходит ошибка (Во вложении).
Сам код:
Процедура ТЧЭскизДобавленияНаСервере(ПрисоединенныеФайлы,ИмяФайла)
ТЧНоваяСтрока=Объект.ТЧЭскиз.Добавить();
ТЧНоваяСтрока.Дата=ТекущаяДата();
ТЧНоваяСтрока.Время=Формат(ТекущаяДата(),"ДЛФ=T");
ТЧНоваяСтрока.Пользователь=Пользователи.ТекущийПользователь();
ТЧНоваяСтрока.ПутьКФайлу=ПрисоединенныеФайлы;
ТЧНоваяСтрока.ПрисоединенныеФайлы = ИмяФайла;
СоздатьКаталог("\\1CSERVER\эскизы"+Объект.Покупатель.Наименование+"Заявка №"+Объект.Ссылка.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
КопироватьФайл(ПрисоединенныеФайлы,"\\1CSERVER\эскизы\Заявка №"+Объект.Ссылка.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);
КонецПроцедуры
ПоказатьПодскажите пожалуйста как нужно поправить, сейчас выходит ошибка (Во вложении).
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
(23)
(15)
Как итог смог решить проблему переделав код следующим образом. Понимаю что не совсем правильно, но задача горит и как временное решение сгодиться:
(15)
Как итог смог решить проблему переделав код следующим образом. Понимаю что не совсем правильно, но задача горит и как временное решение сгодиться:
&НаКлиенте
Процедура ТЧЭскизПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
СтандартнаяОбработка=Ложь;
Отказ=Истина;
СтандартнаяОбработка=ложь;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.ПолноеИмяФайла = "";
Диалог.МножественныйВыбор = Ложь;
Диалог.Каталог = "F:\";
Если Диалог.Выбрать() Тогда
ПрисоединенныеФайлы = Диалог.ПолноеИмяФайла;
ВычисляемИмяФайла = СтрРазделить(ПрисоединенныеФайлы, "\", Ложь);
ИмяФайла = ВычисляемИмяФайла.Количество();
ИмяФайла = ВычисляемИмяФайла[Имяфайла-1];
КонецЕсли;
//Диалог.
ТЧНоваяСтрока=Объект.ТЧЭскиз.Добавить();
ТЧНоваяСтрока.Дата=ТекущаяДата();
ТЧНоваяСтрока.Время=Формат(ТекущаяДата(),"ДЛФ=T");
ТЧНоваяСтрока.Пользователь=ПользовательНаСервере ();
ТЧНоваяСтрока.ПутьКФайлу=ПрисоединенныеФайлы;
НаименованиеПокупателя=НаименованиеПокупателяНаСервере();
НомерДокумента=НомерНаСервере ();
ТЧНоваяСтрока.ПрисоединенныеФайлы = ИмяФайла;
СоздатьКаталог("\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
КопироватьФайл(ПрисоединенныеФайлы,"\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);
СтатусЭскизаПриИзмененииНаСервере()
КонецПроцедуры
Функция НаименованиеПокупателяНаСервере()
Возврат Объект.Покупатель.Наименование;
КонецФункции
Функция НомерНаСервере()
Возврат Объект.Ссылка.Номер;
КонецФункции
Функция ПользовательНаСервере ()
Пользователь=Пользователи.ТекущийПользователь();
Возврат Пользователь
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Учитывая, что процедура называется "ТЧЭскизДобавленияНаСервере", предполагаем что действие происходит на сервере. Доступ к шаре должно быть у пользователя, от чего имени запущен сам сервер1С.
Но в 1С есть возможность передавать файлы с клиента на сервер через ВременноеХранилище. На клиенте помещаете файл в хранилище, передаете адрес хранилища на сервер, на сервере получаете файл их хранилища и записываете куда хотите на самом сервере.
Но в 1С есть возможность передавать файлы с клиента на сервер через ВременноеХранилище. На клиенте помещаете файл в хранилище, передаете адрес хранилища на сервер, на сервере получаете файл их хранилища и записываете куда хотите на самом сервере.
(8)Этот документ (в котором они как раз выбирают файл и могут его посмотреть) могут открывать разные пользователи на разных компьютерах, все они имеют доступ к этой общей папке расположенной на сервере и должны по итогу сохранять туда (просто пояснил)
И кроме того вам принципиально файл создавать на сервере , или может на клиенте конкретного пользователя делать?
Если файл на сервере, то просто путь на сервере вида "C:\Путь\имяфайла.txt", если нужно сохранить на клиентской машине, то нужно дать пользователю указать куда сохранять.
(17)
(15)
Все выглядит так:
(15)
Все выглядит так:
&НаКлиенте
Процедура ТЧЭскизПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
СтандартнаяОбработка=Ложь;
Отказ=Истина;
СтандартнаяОбработка=ложь;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.ПолноеИмяФайла = "";
Диалог.МножественныйВыбор = Ложь;
Диалог.Каталог = "F:\";
Если Диалог.Выбрать() Тогда
ПрисоединенныеФайлы = Диалог.ПолноеИмяФайла;
ВычисляемИмяФайла = СтрРазделить(ПрисоединенныеФайлы, "\", Ложь);
ИмяФайла = ВычисляемИмяФайла.Количество();
ИмяФайла = ВычисляемИмяФайла[Имяфайла-1];
КонецЕсли;
//Диалог.
ТЧЭскизДобавленияНаСервере(ПрисоединенныеФайлы,ИмяФайла);
СтатусЭскизаПриИзмененииНаСервере()
КонецПроцедуры
Процедура ТЧЭскизДобавленияНаСервере(ПрисоединенныеФайлы,ИмяФайла)
ТЧНоваяСтрока=Объект.ТЧЭскиз.Добавить();
ТЧНоваяСтрока.Дата=ТекущаяДата();
ТЧНоваяСтрока.Время=Формат(ТекущаяДата(),"ДЛФ=T");
ТЧНоваяСтрока.Пользователь=Пользователи.ТекущийПользователь();
ТЧНоваяСтрока.ПутьКФайлу=ПрисоединенныеФайлы;
ТЧНоваяСтрока.ПрисоединенныеФайлы = ИмяФайла;
СоздатьКаталог("\\1CSERVER\эскизы"+Объект.Покупатель.Наименование+"Заявка №"+Объект.Ссылка.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
КопироватьФайл(ПрисоединенныеФайлы,"\\1CSERVER\эскизы\Заявка №"+Объект.Ссылка.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);
КонецПроцедуры
&НаКлиенте
Процедура ТЧЭскизПриАктивизацииСтроки(Элемент)
Если Не Элемент.ТекущийЭлемент=Неопределено Тогда
Если ТекущийЭлемент.ТекущийЭлемент.Имя="ТЧЭскизПрисоединенныеФайлы" Тогда
ТекущиеДанные=Элементы.ТЧЭскиз.ТекущиеДанные;
НомерСтроки=ТекущиеДанные.НомерСтроки;
ЗапуститьПриложение(Объект.ТЧЭскиз[НомерСтроки-1].ПутьКФайлу);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
(20) Ну, может с правами затык, а в (12) вы говорите, что у всех пользователей есть права на доступ к каталогу, а этих прав может не быть у пользователя, под которым 1с ходит на сервер.
Кстати, а нет ли в имени формируемого файла каких-нибудь запрещенных символов?
Кстати, а нет ли в имени формируемого файла каких-нибудь запрещенных символов?
(21)Нет, с этим проблем быть не может, все проверялось в том числе на пользователе владеющим админскими правами на сервере/компьютере и 1С...
В имени тоже проблем нет, до этого тестировал все на файловой, игрался с именами и форматами.
В имени тоже проблем нет, до этого тестировал все на файловой, игрался с именами и форматами.
(22) Ну там присутствует Покупатель.Наименование, вы на всех покупателях тестировали? Кто угодно запросто мог вкорячить в наименование какую-нибудь звездочку.
UPD А, вижу, вы просто решили перенести выполнение на сервер. Но зачем, если на клиенте работало?
UPD А, вижу, вы просто решили перенести выполнение на сервер. Но зачем, если на клиенте работало?
(23)
(15)
Как итог смог решить проблему переделав код следующим образом. Понимаю что не совсем правильно, но задача горит и как временное решение сгодиться:
(15)
Как итог смог решить проблему переделав код следующим образом. Понимаю что не совсем правильно, но задача горит и как временное решение сгодиться:
&НаКлиенте
Процедура ТЧЭскизПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
СтандартнаяОбработка=Ложь;
Отказ=Истина;
СтандартнаяОбработка=ложь;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите файл";
Диалог.ПолноеИмяФайла = "";
Диалог.МножественныйВыбор = Ложь;
Диалог.Каталог = "F:\";
Если Диалог.Выбрать() Тогда
ПрисоединенныеФайлы = Диалог.ПолноеИмяФайла;
ВычисляемИмяФайла = СтрРазделить(ПрисоединенныеФайлы, "\", Ложь);
ИмяФайла = ВычисляемИмяФайла.Количество();
ИмяФайла = ВычисляемИмяФайла[Имяфайла-1];
КонецЕсли;
//Диалог.
ТЧНоваяСтрока=Объект.ТЧЭскиз.Добавить();
ТЧНоваяСтрока.Дата=ТекущаяДата();
ТЧНоваяСтрока.Время=Формат(ТекущаяДата(),"ДЛФ=T");
ТЧНоваяСтрока.Пользователь=ПользовательНаСервере ();
ТЧНоваяСтрока.ПутьКФайлу=ПрисоединенныеФайлы;
НаименованиеПокупателя=НаименованиеПокупателяНаСервере();
НомерДокумента=НомерНаСервере ();
ТЧНоваяСтрока.ПрисоединенныеФайлы = ИмяФайла;
СоздатьКаталог("\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
КопироватьФайл(ПрисоединенныеФайлы,"\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);
СтатусЭскизаПриИзмененииНаСервере()
КонецПроцедуры
Функция НаименованиеПокупателяНаСервере()
Возврат Объект.Покупатель.Наименование;
КонецФункции
Функция НомерНаСервере()
Возврат Объект.Ссылка.Номер;
КонецФункции
Функция ПользовательНаСервере ()
Пользователь=Пользователи.ТекущийПользователь();
Возврат Пользователь
КонецФункции
Показать
(25) зачем два раза на сервер-то бегать?
Данные = ДанныеДляПечати();
СоздатьКаталог("\\192.168.0.249\эскизы\"+Данные.Покупатель+"Заявка №"+Данные.Номер+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy"));
КопироватьФайл(ПрисоединенныеФайлы,"\\192.168.0.249\эскизы\"+НаименованиеПокупателя+"Заявка №"+НомерДокумента+" от "+Формат(Объект.Дата,"ДФ=dd.MM.yyyy")+"\"+ИмяФайла);
.....
Функция ДанныеДляПечати()
Возврат Новый Структура("Покупатель, Номер", Объект.Покупатель.Наименование, Объект.Ссылка.Номер)
КонецФункции
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот