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


Если Объект.УчетнаяЗапись.Пустая() Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Не выбрана учетная запись электронной почты!";
Сообщение.Сообщить();
Возврат;
КонецЕсли;

Каталог = "%AppData%\Local\1C";

Почта = Новый ИнтернетПочта;
Профиль = РаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(Объект.УчетнаяЗапись);

Попытка
Почта.Подключиться(Профиль);
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;

Для каждого Счет Из Объект.ТЧСчета Цикл

Если НЕ Счет.Отправлять Тогда
Продолжить;
КонецЕсли;

Сообщение = Новый ИнтернетПочтовоеСообщение;


Если ЗначениеЗаполнено(Счет.ДокументСчет) Тогда
ТабДок = ПечатьДокументаНаСервере(Счет.ДокументСчет,"ПФ_MXL_СчетЗаказПечать","СчетЗаказСПечатью","Счет на оплату покупателю с печатью");

ИмяФайлаСчет = Каталог+"\Счет"+Счет.ДокументСчет.Номер+".pdf";
Если ТабДок <> Неопределено Тогда
ТабДок.Записать(ИмяФайлаСчет,ТипФайлаТабличногоДокумента.PDF);
КонецЕсли;
Сообщение.Вложения.Добавить(Новый ДвоичныеДанные(ИмяФайлаСчет),"Счет"+Счет.ДокументСчет.Номер+".pdf");
КонецЕсли;

ТемаПисьмаКонтрагент = СтрЗаменить(Объект.ТемаПисьма,"%СЧЕТ%"," Счет № "+Счет.Документ.Номер+" от "+Формат(Счет.Документ.Дата,"ДФ=dd.MM.yyyy"));
СодержаниеПисьмаКонтрагент = СтрЗаменить(Объект.Содержание,"%КЛИЕНТ%",""+Счет.Контрагент.НаименованиеПолное);

Сообщение.Отправитель = Объект.УчетнаяЗапись.АдресЭлектроннойПочты;
Сообщение.ИмяОтправителя = ""+Объект.Организация.Наименование;
ПочтовыеАдреса = Сообщение.Получатели;
ПочтовыйАдрес = ПочтовыеАдреса.Добавить();
ПочтовыйАдрес.Адрес = Счет.Адрес;
Сообщение.Тема = Объект.ТемаПисьма;

ИнтернетТекстПочтовогоСообщения = Сообщение.Тексты.Добавить();
ИнтернетТекстПочтовогоСообщения.Текст = СодержаниеПисьмаКонтрагент;
ИнтернетТекстПочтовогоСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;

Попытка
Почта.Послать(Сообщение);
Исключение
Сообщить(ОписаниеОшибки());
Продолжить;
КонецПопытки;

Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Сообщение отправлено для контрагента "+Счет.Контрагент+" на адрес "+Счет.Адрес;
Сообщение.Сообщить();

Если ЗначениеЗаполнено(Счет.ДокументСчет) Тогда
УдалитьФайлы(ИмяФайлаСчет);
КонецЕсли;

КонецЦикла;

Почта.Отключиться();

Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Рассылка успешно выполнена";
Сообщение.Сообщить();
1 МихаилМ
 
06.09.20
22:03
откуда 1с узнает  что такое  %AppData% ?
2 sergqwert
 
06.09.20
22:09
Временные файлы сохраняются в переменную %USERPROFILE%.   Если полный путь, тогда %userprofile%AppData\Local\1C
3 Fram
 
06.09.20
22:10
(0) есть спец функция для получения каталога временных файлов.
4 sergqwert
 
06.09.20
22:11
Какая именно?
5 Fram
 
06.09.20
22:12
(4) не помню точно, погугли
6 Fram
 
06.09.20
22:19
(2) если уж говорить о переменных среды в Винде, то лучше использовать %TEMP% или %TMP%
7 RomanYS
 
06.09.20
22:30
(0) попробуй открыть %AppData% в винде и удивись... у меня открыло ...\AppData\Roaming
8 Cthulhu
 
06.09.20
23:32
надеюсь это все делается не на сервере?..
9 ДенисЧ
 
07.09.20
05:22
(4) КаталогВременныхФайлов()
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс