Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Отправка по почте: "Ошибка доступа к файлу 5(0x00000005): Отказано в доступе."

Отправка по почте: "Ошибка доступа к файлу 5(0x00000005): Отказано в доступе."
Я
   dft2014
 
04.09.18 - 11:20
ЗУП3
Пишу обработку по рассылке отчетов на электронную почту сотрудников, в виде вложения. На строчке:
Если ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ) Тогда
Выдает ошибку: 
Ошибка при вызове метода контекста (ПоместитьФайлы)
Если ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ) Тогда
по причине:
Ошибка доступа к файлу 'C:\temp'. 5(0x00000005): Отказано в доступе.


Если закомментировать строчки с прикреплением вложения, то письмо отправляется, правда без вложения. Ниже код:


&НаКлиенте
Процедура ОтправитьПочту(Команда)
    
    Если объект.ТабличнаяЧасть.Количество()>0 Тогда
        Для каждого СтрокаТЧ из Объект.ТабличнаяЧасть Цикл
            
            мФайлы = Новый Массив;
            мФайлы.Добавить(СтрокаТЧ.ПутьКФайлу);
            Вложения = ДобавлениеФайлаКВложениям(мФайлы);
            
            ТемаПисьма = ЭтотОбъект.Объект.ТемаПисьма; 
            ТелоПисьма = "ТелоПисьма";
            ПочтовыйАдресКому = СтрокаТЧ.ЭлектронныйАдрес;
            ПараметрыПисьма = СформироватьПараметрыПисьма(Пароль,ТелоПисьма, ТемаПисьма, ПочтовыйАдресКому,ПочтовыйАдресКопии ,Вложения);
            ИдентификаторОтправки = ""; 
            ИдентификаторОтправки = ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма);   
            
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Функция ДобавлениеФайлаКВложениям(мФайл = Неопределено)
    Перем ПомещенныеФайлы;
    
    ПомещаемыеФайлы = Новый Массив;
    
    Для каждого Файл из мФайл Цикл
        Если Файл <> Неопределено Тогда
            Файлы = Новый ОписаниеПередаваемогоФайла;
            Файлы.Имя = Файл;
            ПомещаемыеФайлы.Добавить(Файлы);
        КонецЕсли;
    КонецЦикла;
    
    Если ПодключитьРасширениеРаботыСФайлами() Тогда
        ПомещенныеФайлы = Новый Массив;
        Если ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ) Тогда  //вот здесь ошибка доступа к файлу

            Возврат ДобавитьФайлыВСписок(ПомещенныеФайлы);
        КонецЕсли;
    Иначе
        ПоказатьПредупреждение(,НСтр("ru = 'В Веб-клиенте без установленного расширения работы с файлами добавление файлов не поддерживается.'"));
        Возврат Неопределено;
    КонецЕсли;
    
КонецФункции
 
 
   vova1122
 
1 - 04.09.18 - 11:23
А такая папка существует (C:\temp)? и есть ли у пользователя доступ на запись в нее?
   dft2014
 
2 - 04.09.18 - 11:29
(1) Да, папка есть, вложение в виде в файла в нем есть. Доступ на эту папку есть.
   Флориан
 
3 - 04.09.18 - 11:34
ИдентификаторОтправки = ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма); - на сервере скорей всего выполняется и (C:\temp) долже быть на сервере
   dft2014
 
4 - 04.09.18 - 11:35
(3) На сервере тоже сеть эта папка.
   vova1122
 
5 - 04.09.18 - 11:35
+ еще насколько я помню Функция "ЕСЛИ" -это условие. И там обезательно должно быть "<, >, или =" какому то значению, или я ошибаюсь?
   dft2014
 
6 - 04.09.18 - 11:35
(3) Дело в том, что даже не доходит до строчки:
ИдентификаторОтправки = ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма);
   Флориан
 
7 - 04.09.18 - 11:36
ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ) - где выполняется на сервере?  (C:\temp) - пользователю которому под которым запускается агент сервера 1С даны права на папку?
   dft2014
 
8 - 04.09.18 - 11:37
(5) &НаСервере
Функция ДобавитьФайлыВСписок(ПомещенныеФайлы)
    
    Результат = Новый Массив;
    Для Сч=0 по ПомещенныеФайлы.Количество()-1 Цикл                                        
        
        Файл = Новый Файл(ПомещенныеФайлы[Сч].Имя);
        
        ОписаниеВложения = Новый Структура;
        ОписаниеВложения.Вставить("Представление", Файл.Имя);
        ОписаниеВложения.Вставить("АдресВоВременномХранилище",ПоместитьВоВременноеХранилище(ПолучитьИзВременногоХранилища(ПомещенныеФайлы[Сч].Хранение),УникальныйИдентификатор));
        ОписаниеВложения.Вставить("Кодировка", "");
        Результат.Добавить(ОписаниеВложения);
    КонецЦикла;
    
    Возврат Результат;
    
КонецФункции
   dft2014
 
9 - 04.09.18 - 11:40
Но в отладчике, в (8) Функция ДобавитьФайлыВСписок(ПомещенныеФайлы) не доходит, прерывается с ошибкой в (0).
   Greeen
 
10 - 04.09.18 - 11:53
(9) Права на папку попробуй выдать всем пользователям и проверить (сейчас скорее всего выборочным пользователям даты)
+ если уже всем - возможно, антивирус блочит
 
 Рекламное место пустует
   dft2014
 
11 - 04.09.18 - 11:55
(10) А можно программно проверить права на папку?
   Greeen
 
12 - 04.09.18 - 12:01
(11) попробуй файл создать (если там не только для чтения предполагается), типа
ЗТ = новый ТекстовыйДокумент;
Зт.Записать("c:\temp\t.txt");
   Greeen
 
13 - 04.09.18 - 12:06
+ "C:\temp" - не это значение в виде имени файла передается?
   dft2014
 
14 - 04.09.18 - 12:10
Другой процедурой я же сохраняю отчеты там:

&НаКлиенте
Процедура Сформировать(Команда)
    
    ТабДок = СформироватьНаСервере();
    
    Если ТабДок.Области.количество() > 0 Тогда 
        ПутьСохранения = Объект.ПутьВыгрузки;
        
        ТабДок.Записать(ПутьСохранения + "\Табл.XLSX", ТипФайлаТабличногоДокумента.XLSX);
    КонецЕсли;
    
КонецПроцедуры
   бомболюк
 
15 - 04.09.18 - 12:11
Первое что надо сделать - это перезапустить сервер приложения. Если не полетит - то имхо винда обновилась, и надо пакет обновления какой то откатывать. Вот не далее как сегодня утром ставил студию - такая же история началась, вылечил с помощью http://comp-profi.com/view_post.php?id=589
   dft2014
 
16 - 04.09.18 - 12:13
Т.е. на обработке есть две кнопки:
Первая кнопка: создает и сохраняет отчеты - Процедура Сформировать(Команда), см.(14).
Вторая кнопка: отправляет сохраненные отчеты на почту в виде вложений, см.(0).
   dft2014
 
17 - 04.09.18 - 12:14
(15) Не думаю, что это наш случай. Почти аналогичной обработкой делаем рассылку табелей - все работает!
   progaoff
 
18 - 04.09.18 - 12:22
(6) Доступа нет. Дай права на чтение и запись пользователю под которым служба Агента запущена. Или открой от администратора локального 1с.
   dft2014
 
19 - 04.09.18 - 12:27
(18) База лежит на сервере (клиент-серверная). Процедуры выполняются на Клиенте, поэтому вопрос: при чем тут пользователь, под которым запущен Агент?
   dft2014
 
20 - 04.09.18 - 12:38
Ап!
   dft2014
 
21 - 04.09.18 - 12:38
Напишите какой-нибудь работающий пример прикрепления вложений к письму!!!
   Fram
 
22 - 04.09.18 - 12:45
Может уже покажешь ПоместитьФайлы ?
   Флориан
 
23 - 04.09.18 - 12:51
(22) зачем? человек не хочет думать, не хочет дружить с админами - ему нужно работающий пример и всё
   dft2014
 
24 - 04.09.18 - 12:55
(23) Админы уже подтвердили полный доступ.
   dft2014
 
25 - 04.09.18 - 12:58
(22) Из синтаксиса-помощника:

Синтаксис:
ПоместитьФайлы(<ПомещаемыеФайлы>, <ПомещенныеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) 

Возвращаемое значение:
Тип: Булево.

Описание: Помещает набор файлов из локальной файловой системы во временное хранилище.

Доступность: Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
   МихаилМ
 
26 - 04.09.18 - 13:11
(0) Вы Мисти ?
   Флориан
 
27 - 04.09.18 - 13:27
(25) что внутри ПомещаемыеФайлы - смотрел отладчиком?
   dft2014
 
28 - 04.09.18 - 14:11
Разобралась: я передавала в ПомещаемыеФайлы значение C:\temp, а надо было C:\temp\Отчет.xlsx
Теперь все заработало!!! Всем спасибо!
   vova1122
 
29 - 04.09.18 - 14:18
(28) Иногда и такое бывает.... Думаешь что что-то сверхестественное случилось, а тут элементарная ошибка по невнимательности. Я еще
   vova1122
 
30 - 04.09.18 - 14:19
я Еще думал почему 1С ругается на каталог, сообщая что это файл. Ну думаю "так и должно быть..."


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует