Имя: Пароль:
1C
1С v8
Отправка отчетов по e-mail
,
0 operKOT
 
02.10.13
06:03
Давно как-то делал по примерам из нета отправку отчета по email:
формируем отчет, нажимаем на кнопку на форме, сохраняем файл и он автоматом отправляется. Сейчас нужно сделать аналогичную задачу, на в 8.2 не работает та обработка почему то.
Выдает 2 ошибки:
{ВнешняяОбработка.ExternalDataProcessor1.МодульОбъекта(5,3)}: Переменная не определена (Controls)
        <<?>>Controls.ReportSpreadsheet.Write(vFilePath, vFileType); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.ExternalDataProcessor1.МодульОбъекта(4,5)}: Процедура или функция с указанным именем не определена (SelectFile)
    If <<?>>SelectFile(vFileType, vFilePath) Then (Проверка: Толстый клиент (обычное приложение))

vFilePath = "";
    vFileType = SpreadsheetDocumentFileType.XLS;
    If SelectFile(vFileType, vFilePath) Then
        Controls.ReportSpreadsheet.Write(vFilePath, vFileType);
    EndIf;
    
    // Вставить содержимое обработчика.
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.mail.ru";
    Профиль.АдресСервераPOP3 = "pop.mail.ru";
    Профиль.ПортPOP3 = 110;
    Профиль.ПортSMTP = 587;
    Профиль.Пользователь = "";
    Профиль.Пароль = "";
    Профиль.ПользовательSMTP = "";
    Профиль.ПарольSMTP = "";
    Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    Почта = Новый ИнтернетПочта;
    
    // Создадим почтовое сообщение

    Письмо = Новый ИнтернетПочтовоеСообщение;
    Текст = Письмо.Тексты.Добавить("Привет Саша");
    Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
    Письмо.Тема = "Доставка Заказ № ";
    Письмо.Отправитель = "";
    Письмо.Attachments.Add(vFilePath);
    Письмо.ИмяОтправителя = "Доставка Маки";
    Письмо.Получатели.Добавить("");
        
    Попытка
        Почта.Подключиться(Профиль);
        Сообщить("Подключенено");
        Почта.Послать(Письмо);
        Сообщить("Письма отправлены");
    Исключение
        Сообщить("Не удалось подключиться к серверу");
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    Почта.Отключиться();
    Сообщить("Соединение завершено");
1 Cyberhawk
 
02.10.13
06:42
Тебе понятно сообщение об ошибке, по крайней мере в той части, где в нем русские буквы?
2 operKOT
 
02.10.13
07:01
Конечно понятно - нет у меня такой функции как selectFile. но ведь раньше именно так и работало. Может в другой конфе была эта функция как экспортная чтоли???
3 Cyberhawk
 
02.10.13
07:02
Другая конфа под рукой?
4 Cyberhawk
 
02.10.13
07:03
Сдается мне, что другая конфа - клюшечная
5 operKOT
 
02.10.13
07:05
клюшечная - эт что значит?
6 Повелитель
 
02.10.13
07:06
(5) 1с 77 ))
7 operKOT
 
02.10.13
07:09
аа клюшки 77 =))
8 operKOT
 
02.10.13
07:17
Так, открыл старую конфу и нашел процедурку, но диалог для выбора файла не открывает

Function SelectFile(pFileType, rFilePath)
rFilePath = "";
vFileDlg = New FileDialog(FileDialogMode.Save);
vFileDlg.FullFileName = "";
vFileDlg.Multiselect = False;
vFileDlg.Preview = False;
vFileDlg.Title = NStr("ru = 'Сохранить в файл'; en = 'Save to file'");
If pFileType = SpreadsheetDocumentFileType.MXL Then
  vFileDlg.DefaultExt = "mxl";
  vFileDlg.Filter = NStr("ru = 'Формат таблицы 1C (*.mxl)|*.mxl'; en = '1C spreadsheet format (*.mxl)|*.mxl'");
ElsIf pFileType = SpreadsheetDocumentFileType.XLSX Then
  vFileDlg.DefaultExt = "xlsx";
  vFileDlg.Filter = NStr("ru = 'Формат Microsoft Excel (*.xlsx)|*.xlsx'; en = 'Microsoft Excel format (*.xlsx)|*.xlsx'");
ElsIf pFileType = SpreadsheetDocumentFileType.HTML Then
  vFileDlg.DefaultExt = "html";
  vFileDlg.Filter = NStr("ru = 'Формат HTML (*.html)|*.html'; en = 'HTML format (*.html)|*.html'");
ElsIf pFileType = SpreadsheetDocumentFileType.PDF Then
  vFileDlg.DefaultExt = "pdf";
  vFileDlg.Filter = NStr("ru = 'Формат Adobe Reader PDF (*.pdf)|*.pdf'; en = 'Adobe Reader PDF format (*.pdf)|*.pdf'");
Else
  Return False;
EndIf;
vIsSelected = vFileDlg.Choose();
If vIsSelected Then
  rFilePath = vFileDlg.FullFileName;
EndIf;
Return vIsSelected;
EndFunction //SelectFile
9 Лодырь
 
02.10.13
07:19
Можно побить автора за использование английского кода? Без бутылки не разберешь.
10 operKOT
 
02.10.13
07:27
Это не мой код. SelectFile - функция уже готовой конфы - там все на английском. Я с бутылкой и разбирался - 1с гостиница это. Уже разобрался что нет так - идет проверка на XLSX а 1С сохраняет в XLS, теперь все работает
11 80ksa
 
02.10.13
07:29
Наверное объект был какой-то, который екселем управляет. может екселя не компе нет?
12 80ksa
 
02.10.13
07:29
Controls - что это за переменная как создается?
13 operKOT
 
02.10.13
07:30
Controls - что это за переменная как создается?
Про нее вообще не понял - убрал, и без нее работает
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.