Имя: Пароль:
1C
1С v8
Как из ут 11 отправить электронное письмо программно?
0 cyx7
 
02.04.15
12:36
я во внешней обработке создала вызываю процедуру печать(счета на оплату), как мне отправить сразу это письмо? на форме обработке есть электронный адрес получателя. я нашла такой параметр, как параметрыОтправки, это структура, но как пользоваться этим?
1 cyx7
 
02.04.15
12:39
отправить письмо и прикрепить этот счет на оплату. что самое плохое, вызываю печать с помощью процедуры(УправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Обработка.ПечатьСчетовНаОплату","СчетНаОплату",МассивОбъектов,неопределено,ПараметрыПечати);), тоесть таб док мне не возвращается
2 Бубка Гоп
 
02.04.15
12:51
(0) версия платформы?
3 cyx7
 
02.04.15
13:58
(2) (8.3.5.1486)
4 Бубка Гоп
 
02.04.15
14:03
Функция СформироватьПечатнуюФорму(Тип, МассивОбъектов, ОбъектыПечати) возвращает таб.док. его сохраняйте во временный файлик и прикрепляйте к письму
5 Бубка Гоп
 
02.04.15
14:03
(4) + она находится в модуле менеджера, если что.
6 Бубка Гоп
 
02.04.15
14:05
(4) + ну и естественно надо бы включить в администрировании почтовый клиент и настроить учетнуб запись
7 cyx7
 
02.04.15
14:10
(4) как я поняла из внешней обработки можно только как в (1) вызывать печать, а так в модуле менеджера есть процедура печать, у которой последняя строка такая (ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);) это наверное и отправить сообщение. еще нашла общий модуль управление электронной почтой, возможно и в к нему нужно обращаться. А как мне проверить ваш способ( с модулем менеджера), как к нему обратиться?
8 Бубка Гоп
 
02.04.15
14:13
(7) можете не обращаться, просто скопируйте себе в обработку эту функцию, ибо она не экспортная :)
как отправлять, можете посмотреть в документе ЭлектронноеПисьмоИсходящее, например. Там есть кнопочка "отправить"
9 Бубка Гоп
 
02.04.15
14:14
(8) + ну или можно воспользоваться внешними компонентами, например, cdo
10 DrShad
 
02.04.15
14:17
(9) а можно использовать методы платформы Новый ИнтернетПочтовоеСообщение;
11 Бубка Гоп
 
02.04.15
14:28
если уж делать по типовому, то как в (8).
Там ключевая строка это:
Взаимодействия.ВыполнитьОтправкуПисьма(ПисьмоОбъект);
12 ЧеловекДуши
 
02.04.15
14:39
(10) Это слишком просто...
(11) Т.е. Воспользоваться кодом от 1С, это типовой вариант? :)
13 Бубка Гоп
 
02.04.15
14:53
(12) А что по вашему типовой вариант, если не использование кода типовой конфигурации?
14 ЧеловекДуши
 
02.04.15
15:08
(13) К примеру в моей конфе нет такой функции :(
15 DrShad
 
02.04.15
15:15
(14) +1
а в моей хоть и есть но не поддерживает SSL
16 cyx7
 
02.04.15
16:35
пытаюсь создать документ электронное письмо исходящее, он создается, но не отправляется письмо, и в списке его не видно, но записывается он.делаю так

ЭлПисьмо = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
    ЭлПисьмо.Автор = ПараметрыСеанса.АвторизованныйПользователь;
    ЭлПисьмо.Важность = Перечисления.ВариантыВажностиВзаимодействия.Обычная;
    ЭлПисьмо.Дата = ТекущаяДата();
    ЭлПисьмо.Ответственный = ПараметрыСеанса.АвторизованныйПользователь;
    ЭлПисьмо.СписокПолучателейПисьма = "[email protected]";
    ЭлПисьмо.ДатаАктуальностиОтправки = ТекущаяДата();
    ЭлПисьмо.ДатаКогдаОтправить = ТекущаяДата();
    ЭлПисьмо.ДатаОтправления = ТекущаяДата();
    Запрос = Новый Запрос;
    Запрос.Текст =    
     "ВЫБРАТЬ
     |    CRM_УчетныеЗаписиЭлектроннойПочты.УчетнаяЗапись
     |ИЗ
     |    РегистрСведений.CRM_УчетныеЗаписиЭлектроннойПочты КАК CRM_УчетныеЗаписиЭлектроннойПочты
     |ГДЕ
     |    CRM_УчетныеЗаписиЭлектроннойПочты.Пользователь = &Пользователь";
     Запрос.УстановитьПараметр("Пользователь", ЭлПисьмо.Ответственный);
     реззапроса = запрос.Выполнить();
     Выборка = РезЗапроса.Выбрать();
     Выборка.Следующий();
    ЭлПисьмо.CRM_Папка = Перечисления.CRM_ВидыПапокЭлектроннойПочты.Исходящие;     
    ЭлПисьмо.ОтправительПредставление = Выборка.УчетнаяЗапись;
    ЭлПисьмо.УчетнаяЗапись = Выборка.УчетнаяЗапись;
    ЭлПисьмо.Записать();
17 Бубка Гоп
 
02.04.15
16:49
(16) статус установите. не видно потому что нет статуса (исходящие/отправленные)
18 Бубка Гоп
 
02.04.15
16:50
(15) ssl не поддерживает не конфигурация а платформа. платформа тс ssl поддердивает.
19 Бубка Гоп
 
02.04.15
16:51
(18) *поддерживает
20 cyx7
 
02.04.15
16:54
(17) все равно ничего не появилось и не отправилось
21 Бубка Гоп
 
02.04.15
16:57
(16) я создаю так, правда у меня 8.2, поэтому отправлять приходится через CDO. Плюс версия УТ я думаю у вас поновее

ЭД = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
    ЭД.Автор = ПараметрыСеанса.ТекущийПользователь;
    ЭД.Дата = ТекущаяДата();
    ЭД.ДатаОтправления = ТекущаяДата();
    ЭД.Ответственный = ПараметрыСеанса.ТекущийПользователь;
    ЭД.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено;
    ЭД.СписокПолучателейПисьма = loCdoMessage.To;
    Получатель = ЭД.ПолучателиПисьма.Добавить();
    Получатель.Контакт = ЗаказСсылка.Партнер;
    ЭД.ОтправительПредставление = loCdoMessage.From;
    ЭД.Текст = ТекстСообщения;
    ЭД.Тема = loCdoMessage.Subject;
    ЭД.УчетнаяЗапись = РеквизитыОтправителя.Ссылка;
    ЭД.Записать(РежимЗаписиДокумента.Запись);
22 Бубка Гоп
 
02.04.15
17:00
(20) как минимум надо указать адресата. по коду не вижу, кому собственно отправляете
23 Бубка Гоп
 
02.04.15
17:01
(20) чтобы понять как заполнить документ, сначала отправьте себе какое нибудь тестовое письмо. Потом в консоли запросов посмотрите как заполнены реквизиты, и в коде заполняйте по аналогии
24 Бубка Гоп
 
02.04.15
17:02
(23) + я имею ввиду отправьте вручную письмо из предприятия, из встроенного почтового клиента
25 cyx7
 
02.04.15
17:05
(22) СписокПолучателейПисьма
26 cyx7
 
02.04.15
17:06
(22) а что такое ЦДО?
27 Бубка Гоп
 
02.04.15
17:07
28 Бубка Гоп
 
02.04.15
17:07
(25) попробуйте (23), поймете что не заполнено
29 cyx7
 
02.04.15
17:08
(27) тут мне неполнятно ничего)
30 cyx7
 
02.04.15
17:09
(28) сейчас попробую, мне больше всего не понятно почему в папке оно не появляется
31 Бубка Гоп
 
02.04.15
17:10
(29) ну вобщем это микрософтовская библиотека для отправки писем по SMTP
32 Бубка Гоп
 
02.04.15
17:10
(30) странно, у меня с кодом из (21) появляется
33 Бубка Гоп
 
02.04.15
17:12
(25) там исчо есть ТЧ СписокПолучателейПисьма, может этого ему не хватает для счастья
34 Бубка Гоп
 
02.04.15
17:12
(33) тьфу, т.е. ТЧ ПолучателиПисьма.
35 StillEnough
 
02.04.15
17:19
&НаКлиенте
Процедура ОтправитьПоПочте(Команда)
    
    СтруктураПисьма = ПолучитьЗначенияОтбора();
    ОткрытьФорму("Документ.ЭлектронноеПисьмоИсходящее.ФормаОбъекта", СтруктураПисьма);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьЗначенияОтбора()
    
    УИ = Новый  УникальныйИдентификатор();
    //СоздатьКаталог(КаталогПрограммы() + УИ);
    //ВыбранныйФайл = КаталогПрограммы() + УИ + "\РасчетСтоимости.txt";
    
    СоздатьКаталог("C:\" + УИ);
    ВыбранныйФайл = "C:\" + УИ + "\РасчетСтоимости.txt";
    
    ФайлРегистрации = Новый ЗаписьТекста(ВыбранныйФайл, КодировкаТекста.ANSI, , Истина);
    ФайлРегистрации.Записать(Объект.РасчетСтоимости);
    ФайлРегистрации.Закрыть();
    
    ТемаПисьма = "Расчет стоимости пакетов от " + Объект.Дата;
    
    Адрес = "";
    
    Если ЗначениеЗаполнено(Объект.Партнер) Тогда
        для каждого строка из Объект.Партнер.КонтактнаяИнформация Цикл
            Если Строка.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
                Адрес = строка.Представление;    
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
    
    ЭлементыОтбора = Новый Структура("ВыбранныйФайл, Получатель, УИ, ТемаПисьма", ВыбранныйФайл, Адрес, УИ, ТемаПисьма);
    //ЭлментыОтбора = Новый Структура("Получатель, ТекстПисьма", Адрес, ТекстПисьма);
    ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);    
    
    Возврат ПараметрыФормы;
    
КонецФункции

В модуле письма обработка

//пробуем заполнить знч получателя из формы
    Попытка
        СтруктураЗагружаемогоПисьма = СтруктураЗаполнения;
        
        Объект.СписокПолучателейПисьма = СтруктураЗаполнения.Получатель;
        
        стр = Объект.ПолучателиПисьма.Добавить();
        стр.адрес = СтруктураЗаполнения.Получатель;
        
        //-
        
        Объект.Тема                = СтруктураЗаполнения.ТемаПисьма;
                
        ВыбранныйФайл = СтруктураЗаполнения.ВыбранныйФайл; // путь к файлу
        
        НоваяСтрока = Вложения.Добавить();
        НоваяСтрока.Расположение = 2;
        НоваяСтрока.ИмяФайлаНаКомпьютере = ВыбранныйФайл;
        
        ИмяФайла   = "";
        Расширение = "";
        ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(ВыбранныйФайл, "", ИмяФайла);
        НоваяСтрока.ИмяФайла = ИмяФайла;

        Расширение                      = ВзаимодействияКлиентСервер.ПолучитьРасширениеФайла(ИмяФайла);
        НоваяСтрока.ИндексКартинки      = ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение);
        Файл                            = Новый Файл(ВыбранныйФайл);
        НоваяСтрока.Размер              = Файл.Размер();
        НоваяСтрока.РазмерПредставление = ВзаимодействияКлиентСервер.ПолучитьСтроковоеПредставлениеРазмераФайла(НоваяСтрока.Размер);
        
    Исключение
    
    КонецПопытки;

ОтправитьПереслатьВыполнить(""); // Если сразу отправить
    //-
36 cyx7
 
02.04.15
17:26
блин у меня даже из пользовательского интерфейса не отправляется((( только тестовое письмо отправилось и всё
37 Бубка Гоп
 
02.04.15
17:27
(36) в учетной записи все верно указали? сервер smtp, сервер pop3, порты к ним, учетку/пароль? какую ошибку пишет?
38 Бубка Гоп
 
02.04.15
17:28
(36) не очень понятно, пишете не отправляется, но тестовое письмо отправилось... как же оно тогда отправилось?)
39 cyx7
 
02.04.15
17:32
(38) ошибок вообще нету, я не знаю почему. настройки следующие: сервер - smtp.mail.ru, порт - 465, галка стоит использовать безопасное подключение,
40 cyx7
 
02.04.15
17:44
(39) а вот только что пришло одно письмо, которое пол часа назад отправила
41 cyx7
 
02.04.15
17:44
(40) но это из пользовательского режима
42 Бубка Гоп
 
02.04.15
17:59
(41) ну и вот, теперь смотрите как заполнены реквизиты в документе, котороый отправился
43 cyx7
 
03.04.15
09:09
(42) всё аналогично, и письма те которые программно отправлялись видно, но только надо открыть документ эл письмо исходящее, но они не пришли на почту
44 Бубка Гоп
 
03.04.15
09:34
(43) посмотрите отладчиком, скорее всего отправка идет из попытки, поэтому не видите ошибку. если учетка настроена правильно должно все отправляться
45 cyx7
 
03.04.15
11:32
и так, письмо просто записывается, а не отправляется, необходимо зайти в документы , нажать отправить - и тогда оно отправляется. тоесть я по сути только создаю его. как мне выполнить процедуру отправки письма?
46 zippygrill
 
03.04.15
11:44
парамПисьма.Вставить("Тело", "" + получитьТекстОстатков(датаДляОценкиОстатков) + txtHTML + ПолучитьТекстПодписи());
        
        массПараметров = новый Массив;
        массПараметров.Добавить(Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты);
        массПараметров.Добавить(парамПисьма);
        
        ФоновыеЗадания.Выполнить("РаботаСПочтовымиСообщениями.ОтправитьСообщение", массПараметров);
47 Бубка Гоп
 
03.04.15
11:44
(45) естественно его надо отправить :D
сначала создали, затем отправили...
посмотрите (11)
48 cyx7
 
03.04.15
11:44
у меня получилось)))) добавила две строчки вот может пригодится кому нибудь

ПараметрыПисьма = Документы.ЭлектронноеПисьмоИсходящее.ПолучитьПараметрыПисьмаДляОтправки(ЭлПисьмо);
    ИдентификаторПисьма = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(ЭлПисьмо.УчетнаяЗапись, ПараметрыПисьма);

(элПисьмо-документОбъект созданный)
49 Бубка Гоп
 
03.04.15
11:45
(48) ну слава Нуралиеву, поздравляю вас )
50 cyx7
 
03.04.15
11:45
(49) спасибо) и за помощь спасибо)
51 cyx7
 
03.04.15
16:39
а как к письму прикрепить табличный документ? (49)
52 cyx7
 
06.04.15
10:09
вверх
как к письму прикрепить табличный документ
53 Wobland
 
06.04.15
10:14
у ОтправитьСообщение() есть мощное описание
54 cyx7
 
06.04.15
10:28
(53) у меня есть обработка, она сама создает документ рту, по кнопке отправить(на форме обработке). она формирует счетНаОплату, и в модуле форме я получаю табдок, пыталась отправить сообщение через документ электронное письмо, не вышло. а вы мне предлагаете через общий модуль обмен сообщениями? в нем же не передаваемых параметров типа вложение
55 Wobland
 
06.04.15
10:30
// ПараметрыПисьма - структура - содержит всю необходимую информацию о письме:
//                   содержит следующие ключи:
//    Кому*      - Массив структур, строка - Интернет адрес получателя письма
//                 Адрес         - строка - почтовый адрес
//                 Представление - строка - имя адресата
//
//    Тема*      - строка - тема почтового сообщения
//    Тело*      - тело почтового сообщения (простой текст в кодировке win-1251)
//    Вложения   - соответствие
//                 ключ     - наименованиеВложения - строка - наименование вложения
//                 значение - ДвоичныеДанные - данные вложения
56 marvak
 
06.04.15
10:31
Я так отправляю (УчетнаяЗапись, EMail, sSubject, sBody, ПапкаВложений - реквизиты на форме)

sFrom = "[email protected]>";

Профиль = Новый ИнтернетПочтовыйПрофиль;
    
Профиль.АдресСервераSMTP   = УчетнаяЗапись.SMTPСервер;
Профиль.ПортSMTP           = УчетнаяЗапись.ПортSMTP;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Профиль.Пароль             = УчетнаяЗапись.Пароль;
Профиль.Пользователь       = УчетнаяЗапись.Логин;
    
Если УчетнаяЗапись.ТребуетсяSMTPАутентификация Тогда
    Профиль.ПарольSMTP       = УчетнаяЗапись.ПарольSMTP;
    Профиль.ПользовательSMTP = УчетнаяЗапись.ЛогинSMTP;
Иначе
    Профиль.ПарольSMTP       = УчетнаяЗапись.Пароль;
    Профиль.ПользовательSMTP = УчетнаяЗапись.Логин;
КонецЕсли;
    
ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
    
ПочтовоеСообщение.Отправитель = sFrom;
ПочтовоеСообщение.ИмяОтправителя = sFrom;
ПочтовоеСообщение.Тема = sSubject + " от " + sFrom;;
ПочтовоеСообщение.Получатели.Добавить(EMail);
    
КодировкаПисьма = "iso-8859-5"; //либо "koi8-r", либо "utf-8"
    
ТекстСообщения = ПочтовоеСообщение.Тексты.Добавить(sBody);
ТекстСообщения.Кодировка = КодировкаПисьма;
    
    
Если Не ПустаяСтрока(ПапкаВложений) Тогда
    
    МассивФайлов = НайтиФайлы(ПапкаВложений, "*.*");
        
    Для каждого ТекФайл Из МассивФайлов Цикл
            
        ПолноеИмя = ТекФайл.ПолноеИмя;
            
        Попытка
                ПочтовоеСообщение.Вложения.Добавить(ПолноеИмя);
        Исключение
                ОбщегоНазначения.СообщитьОбОшибке("Ошибка при обработке файла " + ПолноеИмя);
            Продолжить;
        КонецПопытки;
            
            
    КонецЦикла;
    
КонецЕсли;

ИнтернетПочта = Новый ИнтернетПочта;
    
Попытка
    ИнтернетПочта.Подключиться(Профиль);
Исключение
    Сообщить("Ошибка при подключении к серверу / профилю электронной почты!");
    Возврат;
КонецПопытки;
            
ОтправкаУспешна = Истина;
    
Попытка
    ИнтернетПочта.Послать(ПочтовоеСообщение);
    Сообщить("Сообщение отправлено.");
Исключение
    ОтправкаУспешна = Ложь;
    ("Ошибка при отправке сообщения!");
КонецПопытки;
    
ИнтернетПочта.Отключиться();
    
Если Не ОтправкаУспешна Тогда
    Возврат;
КонецЕсли;
57 marvak
 
06.04.15
10:36
(56)+
ОбщегоНазначения.СообщитьОбОшибке() - это связано с тем, что отправка из 8.1 (УТ 10.3), но из 8.2 я думаю ненамного отличается.
58 cyx7
 
06.04.15
11:13
(55) да, нашла, пытаюсь Вашим методом делать, там во вложениях тип двоичные данные передаются, а у меня табличный документ, не подскажите как быть?
59 Wobland
 
06.04.15
11:16
(58) записать ТабДокумент в файл для начала
60 cyx7
 
06.04.15
11:33
(59) спасибо Вам большое)) записала его во врем файл, и все отправилось)) спасибо большущеее)))