Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
30 сен 2024, 05:52

Создание книги эксель с 4 листами и отправка по почте

Автор Natain14, 13 окт 2017, 12:49

0 Пользователей и 1 гость просматривают эту тему.

Natain14

Здравствуйте,
платформа 8.3.10.2561, обычное приложение
есть 4  табличных документа, которые надо загрузить на разные листы эксель и полученную книгу отправить по почте. И как бы это работает, но есть два косяка, с которыми не могу справиться.
1) При скачивании файла получателем, он не может его посмотреть, пишет "Формат файла не соответствует разрешению файла, возможно файл поврежден или небезопасен. Открывайте его только в том случае, если доверяете источнику.Вы действительно хотите открыть файл?" И он открывается пустым, хотя просто сохраненный файл (не через почту) открывается с данными
2) Если запускать по кнопке, то файлы хорошо сохраняются, если делать это через рег задание, то выходит ошибка. Права у пользователя, под которым запускается рег задание и запущена служба 1с админские, папка Desktop на месте.
"{ОбщийМодуль.Телефония.Модуль(519)}: Ошибка при вызове метода контекста (Open)
по причине:
Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу "C:\Temp\iptel4.xls". Это может быть вызвано одной из следующих причин.

• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент."


ТабДокСДетализациейДень.Записать (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel1"+".xls", ТипФайлаТабличногоДокумента.XLS);
ТабДокСДетализациейНочь.Записать (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel2"+".xls", ТипФайлаТабличногоДокумента.XLS);
ТабДокСИтогамиПоДням.Записать (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel3"+".xls", ТипФайлаТабличногоДокумента.XLS);
ТабДокСИтогами.Записать (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel4"+".xls", ТипФайлаТабличногоДокумента.XLS);

AppExcel1    = новый COMОбъект ("Excel.Application");   
 
Book2        = AppExcel1.WorkBooks().Add();   

Book1        = AppExcel1.Workbooks.Open (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel4"+".xls");
Book1.ActiveSheet.Cells.Select ();
AppExcel1.Selection.Copy ();
Book2.Sheets.Add ();
Book2.ActiveSheet.name = "Итоговая";
Book2.ActiveSheet.Paste ();
AppExcel1.CutCopyMode = False;
Book1.Close (false);

Book1        = AppExcel1.Workbooks.Open (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel3"+".xls");
Book1.ActiveSheet.Cells.Select ();
AppExcel1.Selection.Copy ();
Book2.Sheets.Add ();
Book2.ActiveSheet.name = "Итоговая по дням";
Book2.ActiveSheet.Paste ();
AppExcel1.CutCopyMode = False;
Book1.Close (false);

Book1        = AppExcel1.Workbooks.Open (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel2"+".xls");
Book1.ActiveSheet.Cells.Select ();
AppExcel1.Selection.Copy ();
Book2.Sheets.Add ();
Book2.ActiveSheet.name = "Детализация ночных звонков";
Book2.ActiveSheet.Paste ();
AppExcel1.CutCopyMode = False;
Book1.Close (false); 

Book1        = AppExcel1.Workbooks.Open (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel1"+".xls");
Book1.ActiveSheet.Cells.Select ();
AppExcel1.Selection.Copy ();
Book2.Sheets.Add ();
Book2.ActiveSheet.name = "Детализация дневных звонков";
Book2.ActiveSheet.Paste ();
AppExcel1.CutCopyMode = False;
Book1.Close (false);   

Book2.Application.DisplayAlerts = False;
Путь=Константы.ТелефонияКаталогДляОтчетов.Получить()+"\Отчет по телефонии "+?(ЗначениеЗаполнено(ЛичныйКабинет), Строка(ЛичныйКабинет)+" ","")+Формат(КонецПредыдущейСмены,"ДФ=yyyy-MM-dd")+ " - " +Формат(КонецПоследнейСменыПериода,"ДФ=yyyy-MM-dd") +".xls";
Book2.SaveAs (Путь);

AppExcel1.Quit ();

УдалитьФайлы(Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel1"+".xls");
УдалитьФайлы(Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel2"+".xls");
УдалитьФайлы(Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel3"+".xls");   
УдалитьФайлы(Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel4"+".xls");   

УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.НайтиПоКоду("ФК0000001");
Профиль = УправлениеЭлектроннойПочтой.ПолучитьИнтернетПочтовыйПрофиль(УчетнаяЗапись);

ИнтернетПочта = Новый ИнтернетПочта;
ИнтернетПочта.Подключиться(Профиль); 

ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
КодировкаСообщения = "utf-8";

ПочтовоеСообщение.Кодировка = КодировкаСообщения;
// Общие свойства письма
ПочтовоеСообщение.ИмяОтправителя  = "Отчет ";
ПочтовоеСообщение.Отправитель     = УчетнаяЗапись.АдресЭлектроннойПочты;
ПочтовоеСообщение.Тема            = "Отчет "+ВыборкаЛК.ЛК;     

ВыборкаПочты = ВыборкаЛК.Выбрать();

Пока ВыборкаПочты.Следующий() Цикл 

Получатель = ПочтовоеСообщение.Получатели.Добавить();
Получатель.Адрес           = ВыборкаПочты.Почта;
Получатель.ОтображаемоеИмя = ВыборкаПочты.Почта;
Получатель.Кодировка       = КодировкаСообщения;

КонецЦикла;   

ТекстСообщения = ПочтовоеСообщение.Вложения.Добавить(Путь);
ИнтернетПочта.Послать(ПочтовоеСообщение);

Natain14


Golickoff

+"\iptel1"+".xls" это то же самое, что +"\iptel1.xls".
1) Попробуйте перед отправкой засунуть файл в zip-архив и отправить архив.
2) Поставьте точку остановки на строке Book1        = AppExcel1.Workbooks.Open (Константы.ТелефонияКаталогДляОтчетов.Получить()+"\iptel4"+".xls"); Во время остановки проверьте, существует ли файл.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Natain14


Toshik1986

1. С таким сталкивался, когда у файла *.xlsX руками меняли расширение на .xls

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск