Имя: Пароль:
1C
1С v8
Не удается отправить электронное письмо программно
0 vava22082009
 
09.12.13
12:43
Конфигурация КА 1.1.39.1.
Программно создается текст сообщения и затем вызывется процедура на отправку письма. но письмо не отправляется. Документ сохраняется. Но когда в него захожу то поле кому заполнено но в тоже время и не заполнено, как будто ссылку не передал на него.
Вот текст отправки письма.
    
Документ = Документы.ЭлектронноеПисьмо.СоздатьДокумент();
    Документ.ОтправительАдресЭлектроннойПочты = адресотправителя;
    Документ.ОтправительИмя = имяотправителя;
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КонтактнаяИнформация.Объект,
        |    КонтактнаяИнформация.Тип,
        |    КонтактнаяИнформация.Вид,
        |    КонтактнаяИнформация.Представление
        |ИЗ
        |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |ГДЕ
        |    КонтактнаяИнформация.Объект.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Контрагент);
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
            Документ.Кому = ВыборкаДетальныеЗаписи.Представление;
            документ.КомуПредставление = ВыборкаДетальныеЗаписи.Представление;
        КонецЕсли;
    КонецЦикла;
    Документ.Тема = "Тема";
    
    Документ.ТекстПисьма = ТекстПисьма;
    Документ.Дата = ТекущаяДата();
    Документ.Записать();
    документ.ОтправитьПисьмо();
1 Wobland
 
09.12.13
12:47
это хорошо или плохо?
2 vava22082009
 
09.12.13
12:49
(1) это плохо)))
письмо не отправляется)))
3 vava22082009
 
09.12.13
12:50
точно, вопрос то я не задал)))
вопрос такой - как сделать правильно???
4 zippygrill
 
09.12.13
12:51
а кто будет проверять учетная запись под который отправляется письмо? как минимум.
5 Wobland
 
09.12.13
12:51
(3) а вдруг так и есть правильно? дождись того, кто знает, что происходит в ОтправитьПисьмо()
6 vava22082009
 
09.12.13
12:53
(4) чего то ничего не понял. то есть как это проверять учетную запись.
7 zippygrill
 
09.12.13
12:55
справочник УчетныеЗаписиЭлПочты
8 zippygrill
 
09.12.13
12:56
если есть в вашей КА
9 vava22082009
 
09.12.13
12:58
(7) справочник есть. а каким образом проверить учетную запись?
10 Wobland
 
09.12.13
13:01
(9) бывает кнопка такая у элемента
11 zippygrill
 
09.12.13
13:08
12 vava22082009
 
09.12.13
13:19
(11) это то сразу проверил)))я даже когда дкоумент создаю в режиме 1с предприятие письмо отправляется.
а вот с конфигуратора не хочет
13 JeyRico
 
09.12.13
13:19
(6) Видимо не то не понял :)
Код функции ОтправитьПисьмо() нужно. И платформа чтоб не 18-цатая была. У меня глючила, 17 и 19 нормально с почтой работала.
14 vava22082009
 
09.12.13
13:22
(13) у меня как раз 18-ая((
15 vava22082009
 
09.12.13
13:23
(13) а код функции ОтправитьПисьмо()там стандартный
16 Wobland
 
09.12.13
13:32
(15) отладчик, наверное, тоже штатный?
17 CrazyArheolog
 
09.12.13
13:37
(0) В  Документы.ЭлектронноеПисьмо случаем нету  табличной части КомуТЧ?
ее тож надо заполнить ;)
18 Kupogun
 
09.12.13
13:42
(17)
+ проверь авторизацию в почте (smtp pop3 ну ты понел
19 vava22082009
 
09.12.13
13:46
(17) Поменял текст на
СписокАдресов = Новый СписокЗначений;
            СписокАдресов.Добавить(ВыборкаДетальныеЗаписи.Представление, ВыборкаДетальныеЗаписи.Представление);
            Документ.Кому = СписокАдресов;
            Документ.КомуТЧ = СписокАдресов;
            документ.КомуПредставление = ВыборкаДетальныеЗаписи.Представление;

выдает что поле КомуТЧ недоступно для записи
20 vava22082009
 
09.12.13
13:47
(18) авторизация проходит
21 CrazyArheolog
 
09.12.13
13:51
(19) в ут тож делаю электронку.
Сделал  пока так.

ДокПисьмо = Документы.ЭлектронноеПисьмо.СоздатьДокумент();
    
    ДокПисьмоТЧ = ДокПисьмо.КомуТЧ;
    ДокПисьмоТЧ.Очистить();
    Тч = ДокПисьмоТЧ.Добавить();
    Тч.Представление = Кому;
    Тч.АдресЭлектроннойПочты = Кому;
        
    ДокПисьмо.Дата = ТекущаяДата();
    ДокПисьмо.УчетнаяЗапись = ЕмаилОтправителя;
    ДокПисьмо.Тема = Шапка;
    ДокПисьмо.ТекстПисьма = Тело;
    ДокПисьмо.Кому = Кому;
    ДокПисьмо.Записать();
    ДокПисьмо.ОтправитьПисьмо();
22 CrazyArheolog
 
09.12.13
13:52
Работало и отправляло )
23 vava22082009
 
09.12.13
13:55
(22) через пару часов попробую)))а то с офиса выпинывают, надо домой ехать))) обязательно отпишусь - думаю должно получится
24 vava22082009
 
10.12.13
05:38
(22) спасибо получилось))))))
25 CrazyArheolog
 
10.12.13
06:41
(24) Пжалусть )
26 vde69
 
модератор
10.12.13
07:44
работает уже 7 лет......


Функция ОтправитьПисьмо (Письмо, МассивАдресов, СсылкаНаОбъект, Регистратор, Комментарий = "", УчетнаяЗапись = Неопределено, РегистрироватьОшибки = Истина, Отправка = Истина) Экспорт
    
    _УчетнаяЗапись = УчетнаяЗапись;
    Если УчетнаяЗапись = Неопределено Тогда
        _УчетнаяЗапись = ПолучитьСистемнуюУчетнуюЗапись();
    КонецЕсли;
    
    Если не _УчетнаяЗапись.ИспользоватьДляОтправки Тогда
        Возврат Ложь;
    КонецЕсли;
    
    Если Не Письмо.ОправлятьПочтовыеУведомления Тогда
        Возврат Ложь;
    КонецЕсли;
    
    Если МассивАдресов = Неопределено Тогда
        Возврат Ложь;                            
    КонецЕсли;
    
    Если МассивАдресов.Количество() = 0 Тогда
        Возврат Ложь;
    КонецЕсли;                                                  
    
    Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.Сделка") Тогда
        Если СсылкаНаОбъект.ОтправленыеУведомления.Найти(Регистратор,"Источник") <> Неопределено Тогда
            Возврат Ложь;
        КонецЕсли;
    КонецЕсли;
    
    
    _Отправка = Отправка;
    Если не Отправка Тогда
        Если не _УчетнаяЗапись.ОтложенаяОтправкаПочты Тогда
            _Отправка = Истина;
        КонецЕсли;
    КонецЕсли;
    
    Если не _Отправка Тогда
        // запись в регистр отложеной отправки
        Запись = РегистрыСведений.ДоставкаПочты.СоздатьМенеджерЗаписи();
        Запись.МассивОтправки     = Новый ХранилищеЗначения(МассивАдресов);
        Запись.Объект             = СсылкаНаОбъект;
        Запись.ШаблонПисьма        = Письмо;
        Запись.Оправлен            = Ложь;
        Запись.Комментарий        = Комментарий;
        Запись.ДокументРегистратор    = Регистратор;
        Запись.Записать(Истина);
    Иначе
        // собствено отправка
        ТемаПисьма         = СобратьЭлементПочтовогоСообщения(Письмо.Тема, СсылкаНаОбъект);
        СообщениеПисьма = СобратьЭлементПочтовогоСообщения(Письмо.Сообщение, СсылкаНаОбъект, Комментарий);
        СистемнаяПочта  = СокрЛП(_УчетнаяЗапись.АдресЭлектроннойПочты);
        ТипСообщения = Неопределено;
        Профиль = СформироватьИнтернетПрофиль(_УчетнаяЗапись);
        
        Попытка
            Сообщение = Новый ИнтернетПочтовоеСообщение;
            Сообщение.Тема             = ТемаПисьма;
            Сообщение.Отправитель     = СистемнаяПочта;
            
            Для Каждого ПочтовыйАдрес из МассивАдресов Цикл
                Если Найти(ПочтовыйАдрес, "@") > 0 Тогда
                    Сообщение.Получатели.Добавить(ПочтовыйАдрес);
                КонецЕсли;
            КонецЦикла;
            
            Если      Письмо.ТипТекстаПисьма = Перечисления.ТипыТекстовЭлектронныхПисем.HTML
                  ИЛИ Письмо.ТипТекстаПисьма = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками Тогда
                  
                Сообщение.Тексты.Добавить(СообщениеПисьма, ТипТекстаПочтовогоСообщения.HTML);
                
            ИначеЕсли Письмо.ТипТекстаПисьма = Перечисления.ТипыТекстовЭлектронныхПисем.РазмеченныйТекст Тогда
                
                Сообщение.Тексты.Добавить(СообщениеПисьма, ТипТекстаПочтовогоСообщения.РазмеченныйТекст);
                
            Иначе
                Сообщение.Тексты.Добавить(СообщениеПисьма, ТипТекстаПочтовогоСообщения.ПростойТекст);
            КонецЕсли;
            
            Почта = Новый ИнтернетПочта;
            Почта.Подключиться(Профиль);
            Почта.Послать(Сообщение);
            Почта.Отключиться();
            
            
            Если ТипЗнч(СсылкаНаОбъект) = Тип("ДокументСсылка.Сделка") Тогда
                оСделка = СсылкаНаОбъект.ПолучитьОбъект();
                НоваяСтрока = оСделка.ОтправленыеУведомления.Добавить();
                НоваяСтрока.Источник = Регистратор;
                оСделка.ОбменДанными.Загрузка = Истина;
                оСделка.Записать();
            КонецЕсли;
            
            
        Исключение
            Если РегистрироватьОшибки Тогда
                ЗарегистрироватьОшибкуОтправкиПочты(СсылкаНаОбъект, Письмо, МассивАдресов, ОписаниеОшибки(), Регистратор, Комментарий);
            КонецЕсли;
            Возврат Ложь;
        КонецПопытки;
    КонецЕсли;
    
    Возврат Истина;
КонецФункции
AdBlock убивает бесплатный контент. 1Сергей