|   |   | 
| 
 | Отправка по почте: "Ошибка доступа к файлу 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С ругается на каталог, сообщая что это файл. Ну думаю "так и должно быть..."     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |