Каталог не обнаружен

1. sergqwert15 3 06.09.20 21:48 Сейчас в теме
При отправке электронной почты возникает ошибка "каталог %AppData%\Local\1C не обнаружен". Как устранить проблему?


Если Объект.УчетнаяЗапись.Пустая() Тогда
		Сообщение = Новый СообщениеПользователю();
		Сообщение.Текст = "Не выбрана учетная запись электронной почты!";
		Сообщение.Сообщить();
		Возврат;
	КонецЕсли;	
	
	Каталог	= "%AppData%\Local\1C";      
	
	Почта 	= Новый ИнтернетПочта;
	Профиль = РаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(Объект.УчетнаяЗапись);
	
	Попытка
		Почта.Подключиться(Профиль);
	Исключение
		Сообщить(ОписаниеОшибки()); 
		Возврат;
	КонецПопытки;
	
	Для каждого Счет Из Объект.ТЧСчета Цикл
		
		Если НЕ Счет.Отправлять Тогда
			Продолжить;
		КонецЕсли; 
		
		Сообщение = Новый ИнтернетПочтовоеСообщение;
		
		
		Если ЗначениеЗаполнено(Счет.ДокументСчет) Тогда
			ТабДок   	 = ПечатьДокументаНаСервере(Счет.ДокументСчет,"ПФ_MXL_СчетЗаказПечать","СчетЗаказСПечатью","Счет на оплату покупателю с печатью");
			
			ИмяФайлаСчет = Каталог+"\Счет"+Счет.ДокументСчет.Номер+".pdf";
			Если ТабДок <> Неопределено Тогда
			ТабДок.Записать(ИмяФайлаСчет,ТипФайлаТабличногоДокумента.PDF);
			КонецЕсли;
			Сообщение.Вложения.Добавить(Новый ДвоичныеДанные(ИмяФайлаСчет),"Счет"+Счет.ДокументСчет.Номер+".pdf");			
		КонецЕсли;	
		
		ТемаПисьмаКонтрагент 	   = СтрЗаменить(Объект.ТемаПисьма,"%СЧЕТ%"," Счет № "+Счет.Документ.Номер+" от "+Формат(Счет.Документ.Дата,"ДФ=dd.MM.yyyy"));
		СодержаниеПисьмаКонтрагент = СтрЗаменить(Объект.Содержание,"%КЛИЕНТ%",""+Счет.Контрагент.НаименованиеПолное);
		
		Сообщение.Отправитель 	   = Объект.УчетнаяЗапись.АдресЭлектроннойПочты;
		Сообщение.ИмяОтправителя   = ""+Объект.Организация.Наименование;
		ПочтовыеАдреса 			   = Сообщение.Получатели;
		ПочтовыйАдрес 			   = ПочтовыеАдреса.Добавить();
		ПочтовыйАдрес.Адрес 	   = Счет.Адрес;
		Сообщение.Тема 			   = Объект.ТемаПисьма; 
		
		ИнтернетТекстПочтовогоСообщения 		  = Сообщение.Тексты.Добавить();
		ИнтернетТекстПочтовогоСообщения.Текст	  = СодержаниеПисьмаКонтрагент;
		ИнтернетТекстПочтовогоСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
		
		Попытка
			Почта.Послать(Сообщение);
		Исключение
			Сообщить(ОписаниеОшибки()); 
			Продолжить;
		КонецПопытки;
		
		Сообщение = Новый СообщениеПользователю();
		Сообщение.Текст = "Сообщение отправлено для контрагента "+Счет.Контрагент+" на адрес "+Счет.Адрес;
		Сообщение.Сообщить();
		
		Если ЗначениеЗаполнено(Счет.ДокументСчет) Тогда		
			УдалитьФайлы(ИмяФайлаСчет);
		КонецЕсли;
				
	КонецЦикла; 

	Почта.Отключиться();	
	
	Сообщение = Новый СообщениеПользователю();
	Сообщение.Текст = "Рассылка успешно выполнена";
	Сообщение.Сообщить();
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user958326 06.09.20 22:24 Сейчас в теме
(1)
Временный файл не может записать в каталог
Либо пользователь не имеет на него прав либо каталога нет
9. EVKash 8 07.09.20 13:32 Сейчас в теме
(1) https://infostart.ru/public/163115/
Shell = Новый COMОбъект("WScript.Shell");
LOCALAPPDATA = Shell.ExpandEnvironmentStrings("%LOCALAPPDATA%");
Каталог = LOCALAPPDATA + "\1C";
11. RocKeR_13 1357 16.10.20 14:02 Сейчас в теме
(1) Используйте встроенные функции КаталогВременныхФайлов() и ПолучитьИмяВременногоФайла()
3. user958326 06.09.20 22:24 Сейчас в теме
а заодно можете и кеш почистить
4. Fox-trot 163 06.09.20 22:37 Сейчас в теме
это все на сервере или на клиенте?
5. sergqwert15 3 06.09.20 22:39 Сейчас в теме
6. ivanov_alex 64 07.09.20 07:37 Сейчас в теме
Сталкивался с таким, решал так
Шелл = Новый COMОбъект("WScript.Shell");
ПутьИмя = Шелл.ExpandEnvironmentStrings("%APPDATA%")+"\Local\1C\1.txt";
Файл = Новый Файл(ПутьИмя);
Если Файл.Существует() Тогда 
    Сообщить("Работает");
Иначе
    Сообщить("Не работает");
КонецЕсли;

По сути, если sql, то такую папку надо завести в каталоге пользователя usr1cv8 или того пользователя, из под которого запускается сервер, с добавлением права на запись в этот каталог пользователю usr1cv8
если файловая, то через шелл
7. Pixar0000 07.09.20 12:19 Сейчас в теме
а кто тебе сказал, что 1С знает что такое %% ????
Каталог = "%AppData%\Local\1C";
lefthander; +1 Ответить
8. lefthander 07.09.20 12:26 Сейчас в теме
(7)Знает, но в контексте запроса при использовании ПОДОБНО.... ;)
10. Pixar0000 17.09.20 10:04 Сейчас в теме
(8) 1С не знает
если исользуется
Шелл = Новый COMОбъект("WScript.Shell");

то об этом знает только ОС, как и должна
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот