Имя: Пароль:
1C
1С v8
подскажите почему не могу подключиться и отправить письмо?
,
0 YamEgor
 
25.06.20
07:45
добрый день! Не получается отправить письмо подскажите что не так делаю... самописная конфигурация, при проведении документа в процедуре ОбработкаПроведения(Отказ, РежимПроведения) делаю определенную проверку и если проверку проходим то надо отправить письмо  с вложением и при проведении получаем ошибки:
1) Ошибка авторизации, введите правильный логин и пароль{Документ.Тестирование.МодульОбъекта(72)}: Значение не является значением объектного типа (Подключиться)
2) Во время отправки письма возникла ошибка{Документ.Тестирование.МодульОбъекта(81)}: Значение не является значением объектного типа (Послать)
3) {Документ.Тестирование.МодульОбъекта(88)}: Значение не является значением объектного типа (Отключиться)
      Email.Отключиться();

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Тестирование.Билет1 КАК Билет1,
    |    Тестирование.Билет2 КАК Билет2,
    |    Тестирование.Билет3 КАК Билет3
    |ИЗ
    |    Документ.Тестирование КАК Тестирование
    |ГДЕ
    |    Тестирование.Ссылка = &Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    РезОтветов = 0;
    Ответ1 = 3;
    Ответ2 = 4;      
    Ответ3 = 1;      
    
    Пока Выборка.Следующий() Цикл
        Если  Выборка.Билет1 = Ответ1 Тогда
            РезОтветов = РезОтветов+1;
        КонецЕсли;
        
        Если Выборка.Билет2 = Ответ2  Тогда
            РезОтветов = РезОтветов+1;
        КонецЕсли;
        Если Выборка.Билет3 = Ответ3  Тогда
            РезОтветов = РезОтветов+1 ;
        КонецЕсли;
    КонецЦикла;
    ВсеБилеты = 3;
    НабранныйПроцент = Цел(РезОтветов*100/ВсеБилеты);
    НабраноБалов = РезОтветов;
    Если РезОтветов >= 2 Тогда
        Документы.Тестирование.Печать(Ссылка);
        
        УчетнаяЗапись = Новый ИнтернетПочтовыйПрофиль;
        УчетнаяЗапись.ВремяОжидания = 120; ;            
        УчетнаяЗапись.АдресСервераSMTP = "smtp.rambler.ru";      
        УчетнаяЗапись.АдресСервераPOP3 = "pop.rambler.ru";
        УчетнаяЗапись.Пользователь = "*****@rambler.ru";      
        УчетнаяЗапись.ПользовательSMTP = "*****@rambler.ru";
        УчетнаяЗапись.Пароль = "123";      
        УчетнаяЗапись.ПарольSMTP = "123";      
        УчетнаяЗапись.ПортSMTP = 465;
        УчетнаяЗапись.ИспользоватьSSLSMTP = Истина;
        УчетнаяЗапись.ПортPOP3 = 995;
        УчетнаяЗапись.ИспользоватьSSLPOP3 = Истина;
        УчетнаяЗапись.АутентификацияSMTP = СпособSMTPАутентификации.Login;
        Почта = Новый ИнтернетПочта;            

        
        Письмо = Новый ИнтернетПочтовоеСообщение;
        Письмо.Отправитель.Адрес = "*****@rambler.ru";
        Письмо.Отправитель.ОтображаемоеИмя = "Вася";      
        Письмо.Вложения.Добавить("C:\Users\777\Desktop\sert\Sertifikat.PDF", "Сертификат");
        Письмо.Тема = "Ваш сертификат";                    
        Получатель = Письмо.Получатели.Добавить("*****@yandex.ru");
        
        Попытка            
            Почта.Подключиться(УчетнаяЗапись);      
        Исключение            
            Сообщить("Ошибка авторизации, введите правильный логин и пароль" + ОписаниеОшибки(), СтатусСообщения.Важное);      
        КонецПопытки;            
        Текст = Письмо.Тексты.Добавить();      
        Текст.ТипТекста  = ТипТекстаПочтовогоСообщения.ПростойТекст;
        Текст.Текст = "Текст письма, тест";
        
        Попытка            
        Почта.Послать(Письмо);            
                
        Сообщить("Успех");      
        Исключение            
            Сообщить("Во время отправки письма возникла ошибка" + ОписаниеОшибки(), СтатусСообщения.Важное)      
        КонецПопытки;
        
        Почта.Отключиться();
        
    КонецЕсли;
КонецПроцедуры
1 Фрэнки
 
25.06.20
07:53
вот даже не гляда в простыню - обработка проведения - это самое хреновое место, куда просто никто и никогда в здравом уме не ставит вызовы асинхронных подпроцессов.

Ну а дальше думай, что нужно сделать по другому.

Хотя на вопрос о причине ошибки это не ответ
2 Галахад
 
гуру
25.06.20
08:37
А где
Почта = Новый ИнтернетПочта;?
3 YamEgor
 
25.06.20
08:48
(2) сразу после УчетнаяЗапись стоит Почта = Новый ИнтернетПочта;
4 Галахад
 
гуру
25.06.20
08:52
(3) Да, точно. Не заметил.

А с сервера вообще интернет окрыт?
5 ДенисЧ
 
25.06.20
08:53
Отладчиком встать на нужную строку и посмотреть значения переменных - не предлагать?
6 Ёпрст
 
25.06.20
08:54
При проведении рассылать письма? Огонь!
7 YamEgor
 
25.06.20
09:13
(4) подскажите как отрывать..
8 dka80
 
25.06.20
09:14
Замени переменную Почта на Почта1
9 JeHer
 
25.06.20
09:14
(7) ---> бородатый дяденька
10 YamEgor
 
25.06.20
09:16
(5) отладчиком посмотрел Почта тип строка почему то
11 dka80
 
25.06.20
09:18
(10) см (8) Может у тебя есть реквизит на форме Почта
12 YamEgor
 
25.06.20
09:23
(11) да точно заменил Почта на Почта1 и все заработало Спасибо брат!!
13 MyNick
 
25.06.20
09:30
(12) но с обработкипроведения нужно ЭТО убрать
14 YamEgor
 
25.06.20
09:49
(13) а куда это можно убрать? где тогда это можно все сделать? надо чтобы когда документ проведется, т.е. условия будут выполнены тогда это все и отработать должно
15 Fedor-1971
 
25.06.20
11:15
(14) например, при проведении пиши в регистр сведений, типа ДокументыДляОтправки и регламентом отправляй, что отправилось, очищай или ставь признак отправки.

В ДО даже есть количество попыток отправки, т.е. пытаемся отправить 3 (или больше) раза, если не получилось, в дальнейшем запись не обрабатываем

Вот выполнятся твои условия, а почта/интернет глюканёт и получишь непроведённый корректный документ.
Кроме того, откроют на посмотреть и нажмут "Провести и закрыть" - и снова полетит сообщение

Чуть больше глобального взгляда на всю систему
16 Галахад
 
гуру
25.06.20
11:29
Хм. А чем именно плохо посылать письма при проведении?
17 ДенисЧ
 
25.06.20
11:31
(16) Неопределённостью времени этой отправки. И блокировкой транзакции в это время
18 acht
 
25.06.20
11:32
(16) Тем же, что и вести диалоги с пользователем.
Ну и на закуску - что ты будешь делать с уже отправленым письмом, если транзакция откатится?
19 Галахад
 
гуру
25.06.20
11:56
(17) Это можно обойти отправив в фоне.

(18) Диалог предполагает интерактив, а тут не нужно ждать ответа.

Тут да. Прикольно может получиться. "Вам почти выписали заказ. Почти..."
20 ДенисЧ
 
25.06.20
11:56
(19) Можно. Но ТС же этого не делает...
21 ДенисЧ
 
25.06.20
11:57
И да, с откатом транзакции вопрос остаётся.
Независимо от того, куда вы едете — это в гору и против ветра!