|
Отправка по почте: "Ошибка доступа к файлу 5(0x00000005): Отказано в доступе." | ☑ | ||
---|---|---|---|---|
0
dft2014
04.09.18
✎
11:20
|
ЗУП3
Пишу обработку по рассылке отчетов на электронную почту сотрудников, в виде вложения. На строчке: Если ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ) Тогда Выдает ошибку: Ошибка при вызове метода контекста (ПоместитьФайлы) Если ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ) Тогда по причине: Ошибка доступа к файлу 'C:\temp'. 5(0x00000005): Отказано в доступе. Если закомментировать строчки с прикреплением вложения, то письмо отправляется, правда без вложения. Ниже код: &НаКлиенте Процедура ОтправитьПочту(Команда) Если объект.ТабличнаяЧасть.Количество()>0 Тогда Для каждого СтрокаТЧ из Объект.ТабличнаяЧасть Цикл мФайлы = Новый Массив; мФайлы.Добавить(СтрокаТЧ.ПутьКФайлу); Вложения = ДобавлениеФайлаКВложениям(мФайлы); ТемаПисьма = ЭтотОбъект.Объект.ТемаПисьма; ТелоПисьма = "ТелоПисьма"; ПочтовыйАдресКому = СтрокаТЧ.ЭлектронныйАдрес; ПараметрыПисьма = СформироватьПараметрыПисьма(Пароль,ТелоПисьма, ТемаПисьма, ПочтовыйАдресКому,ПочтовыйАдресКопии ,Вложения); ИдентификаторОтправки = ""; ИдентификаторОтправки = ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма); КонецЦикла; КонецЕсли; КонецПроцедуры &НаКлиенте Функция ДобавлениеФайлаКВложениям(мФайл = Неопределено) Перем ПомещенныеФайлы; ПомещаемыеФайлы = Новый Массив; Для каждого Файл из мФайл Цикл Если Файл <> Неопределено Тогда Файлы = Новый ОписаниеПередаваемогоФайла; Файлы.Имя = Файл; ПомещаемыеФайлы.Добавить(Файлы); КонецЕсли; КонецЦикла; Если ПодключитьРасширениеРаботыСФайлами() Тогда ПомещенныеФайлы = Новый Массив; Если ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ) Тогда //вот здесь ошибка доступа к файлу Возврат ДобавитьФайлыВСписок(ПомещенныеФайлы); КонецЕсли; Иначе ПоказатьПредупреждение(,НСтр("ru = 'В Веб-клиенте без установленного расширения работы с файлами добавление файлов не поддерживается.'")); Возврат Неопределено; КонецЕсли; КонецФункции |
|||
1
vova1122
04.09.18
✎
11:23
|
А такая папка существует (C:\temp)? и есть ли у пользователя доступ на запись в нее?
|
|||
2
dft2014
04.09.18
✎
11:29
|
(1) Да, папка есть, вложение в виде в файла в нем есть. Доступ на эту папку есть.
|
|||
3
Флориан
04.09.18
✎
11:34
|
ИдентификаторОтправки = ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма); - на сервере скорей всего выполняется и (C:\temp) долже быть на сервере
|
|||
4
dft2014
04.09.18
✎
11:35
|
(3) На сервере тоже сеть эта папка.
|
|||
5
vova1122
04.09.18
✎
11:35
|
+ еще насколько я помню Функция "ЕСЛИ" -это условие. И там обезательно должно быть "<, >, или =" какому то значению, или я ошибаюсь?
|
|||
6
dft2014
04.09.18
✎
11:35
|
(3) Дело в том, что даже не доходит до строчки:
ИдентификаторОтправки = ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма); |
|||
7
Флориан
04.09.18
✎
11:36
|
ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, ) - где выполняется на сервере? (C:\temp) - пользователю которому под которым запускается агент сервера 1С даны права на папку?
|
|||
8
dft2014
04.09.18
✎
11:37
|
(5) &НаСервере
Функция ДобавитьФайлыВСписок(ПомещенныеФайлы) Результат = Новый Массив; Для Сч=0 по ПомещенныеФайлы.Количество()-1 Цикл Файл = Новый Файл(ПомещенныеФайлы[Сч].Имя); ОписаниеВложения = Новый Структура; ОписаниеВложения.Вставить("Представление", Файл.Имя); ОписаниеВложения.Вставить("АдресВоВременномХранилище",ПоместитьВоВременноеХранилище(ПолучитьИзВременногоХранилища(ПомещенныеФайлы[Сч].Хранение),УникальныйИдентификатор)); ОписаниеВложения.Вставить("Кодировка", ""); Результат.Добавить(ОписаниеВложения); КонецЦикла; Возврат Результат; КонецФункции |
|||
9
dft2014
04.09.18
✎
11:40
|
Но в отладчике, в (8) Функция ДобавитьФайлыВСписок(ПомещенныеФайлы) не доходит, прерывается с ошибкой в (0).
|
|||
10
Greeen
04.09.18
✎
11:53
|
(9) Права на папку попробуй выдать всем пользователям и проверить (сейчас скорее всего выборочным пользователям даты)
+ если уже всем - возможно, антивирус блочит |
|||
11
dft2014
04.09.18
✎
11:55
|
(10) А можно программно проверить права на папку?
|
|||
12
Greeen
04.09.18
✎
12:01
|
(11) попробуй файл создать (если там не только для чтения предполагается), типа
ЗТ = новый ТекстовыйДокумент; Зт.Записать("c:\temp\t.txt"); |
|||
13
Greeen
04.09.18
✎
12:06
|
+ "C:\temp" - не это значение в виде имени файла передается?
|
|||
14
dft2014
04.09.18
✎
12:10
|
Другой процедурой я же сохраняю отчеты там:
&НаКлиенте Процедура Сформировать(Команда) ТабДок = СформироватьНаСервере(); Если ТабДок.Области.количество() > 0 Тогда ПутьСохранения = Объект.ПутьВыгрузки; ТабДок.Записать(ПутьСохранения + "\Табл.XLSX", ТипФайлаТабличногоДокумента.XLSX); КонецЕсли; КонецПроцедуры |
|||
15
бомболюк
04.09.18
✎
12:11
|
Первое что надо сделать - это перезапустить сервер приложения. Если не полетит - то имхо винда обновилась, и надо пакет обновления какой то откатывать. Вот не далее как сегодня утром ставил студию - такая же история началась, вылечил с помощью http://comp-profi.com/view_post.php?id=589
|
|||
16
dft2014
04.09.18
✎
12:13
|
Т.е. на обработке есть две кнопки:
Первая кнопка: создает и сохраняет отчеты - Процедура Сформировать(Команда), см.(14). Вторая кнопка: отправляет сохраненные отчеты на почту в виде вложений, см.(0). |
|||
17
dft2014
04.09.18
✎
12:14
|
(15) Не думаю, что это наш случай. Почти аналогичной обработкой делаем рассылку табелей - все работает!
|
|||
18
progaoff
04.09.18
✎
12:22
|
(6) Доступа нет. Дай права на чтение и запись пользователю под которым служба Агента запущена. Или открой от администратора локального 1с.
|
|||
19
dft2014
04.09.18
✎
12:27
|
(18) База лежит на сервере (клиент-серверная). Процедуры выполняются на Клиенте, поэтому вопрос: при чем тут пользователь, под которым запущен Агент?
|
|||
20
dft2014
04.09.18
✎
12:38
|
Ап!
|
|||
21
dft2014
04.09.18
✎
12:38
|
Напишите какой-нибудь работающий пример прикрепления вложений к письму!!!
|
|||
22
Fram
04.09.18
✎
12:45
|
Может уже покажешь ПоместитьФайлы ?
|
|||
23
Флориан
04.09.18
✎
12:51
|
(22) зачем? человек не хочет думать, не хочет дружить с админами - ему нужно работающий пример и всё
|
|||
24
dft2014
04.09.18
✎
12:55
|
(23) Админы уже подтвердили полный доступ.
|
|||
25
dft2014
04.09.18
✎
12:58
|
(22) Из синтаксиса-помощника:
Синтаксис: ПоместитьФайлы(<ПомещаемыеФайлы>, <ПомещенныеФайлы>, <НаборПомещаемыхФайлов>, <Интерактивно>, <УникальныйИдентификаторФормы>) Возвращаемое значение: Тип: Булево. Описание: Помещает набор файлов из локальной файловой системы во временное хранилище. Доступность: Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент). |
|||
26
МихаилМ
04.09.18
✎
13:11
|
(0) Вы Мисти ?
|
|||
27
Флориан
04.09.18
✎
13:27
|
(25) что внутри ПомещаемыеФайлы - смотрел отладчиком?
|
|||
28
dft2014
04.09.18
✎
14:11
|
Разобралась: я передавала в ПомещаемыеФайлы значение C:\temp, а надо было C:\temp\Отчет.xlsx
Теперь все заработало!!! Всем спасибо! |
|||
29
vova1122
04.09.18
✎
14:18
|
(28) Иногда и такое бывает.... Думаешь что что-то сверхестественное случилось, а тут элементарная ошибка по невнимательности. Я еще
|
|||
30
vova1122
04.09.18
✎
14:19
|
я Еще думал почему 1С ругается на каталог, сообщая что это файл. Ну думаю "так и должно быть..."
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |