Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Ошибка в условии при работе с почтой через Rom-Mail.dll          
Mikst Подменю пользователя
сообщение 04.12.12, 16:33
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 36
Из: Черкассы
Спасибо сказали: 4 раз
Рейтинг: 0

Объясните пожалуйста как может такое произойти:

Если Почта.Подключиться("SMTP") = 0 тогда
        сообщить("Не получилось");
        Возврат;
    иначеЕсли Почта.Подключиться("Отправка") = 1 тогда
        сообщить("Получилось ");
    Иначе
        Сообщить("Просто капец");
    КонецЕсли;


Если я запускаю обработку в 1с то мне выдает сообщение "Просто капец", а если я прохожу этот же код в отладчике, то выдает сообщение "Не получилось". С чем это может быть связано?

Vofka Подменю пользователя
сообщение 04.12.12, 16:44
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

А что, если перед этим всем сделать
а = 0;
Пока а <= 10000 Цикл
   а = а+1;
КонецЦикла;

?

Спасибо сказали: Mikst,

Mikst Подменю пользователя
сообщение 04.12.12, 16:48
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 36
Из: Черкассы
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(Vofka @ 04.12.12, 16:44) *
А что, если перед этим всем сделать
а = 0;
Пока а <= 10000 Цикл
   а = а+1;
КонецЦикла;

?


Теперь и в отладчике пишет "Просто капец", хотя Почта.Подключиться("SMTP") = 0.

Vofka Подменю пользователя
сообщение 04.12.12, 16:53
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13956
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Цитата(Mikst @ 04.12.12, 16:48) *
Теперь и в отладчике пишет "Просто капец"

Ну все, поздравляю agree.gif .

Вообще-то непонятно что за объект почта и где/куда вы смотрите. Что делать, звать гадалок?

Спасибо сказали: Mikst,

Mikst Подменю пользователя
сообщение 04.12.12, 17:04
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 36
Из: Черкассы
Спасибо сказали: 4 раз
Рейтинг: 0

Полный код обработки выглядит так:

Процедура Сформировать()

    Если LoadAddIn(КаталогИБ()+"Rom-Mail.dll")=0 Тогда
        Сообщить("Не удалось загрузить внешнюю компоненту ROM-Mail.dll");
        Возврат;
    Конецесли;
    
    Почта = СоздатьОбъект("AddIn.AddInMail");  
    
    Почта.СерверОтправки=СерверОтправки;
    Почта.ПортОтправки="25";
    Почта.Логин = Логин;//bitrix
    Почта.Пароль = Пароль;  
    Почта.АутентификацияПриОтправке = 1;



    Если Почта.Подключиться("SMTP") = 0 тогда
        сообщить("Не получилось");
        Возврат;
    иначеЕсли Почта.Подключиться("Отправка") = 1 тогда
        сообщить("Получилось ");
    Иначе
        Сообщить("Просто капец");
    КонецЕсли;                

    
    
КонецПроцедуры


Тут вопрос не в том почему у меня не работает обработка, а в том почему условие Если тогда себя непонятно ведет.

Cthulhu Подменю пользователя
сообщение 04.12.12, 18:04
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

есть мнение, чтоооо... "не думай... о секундах.... свысока... (пам-пам-пам-пам)" (с)
Функция ПопробуемПочту(Почта,тПараметр="",тОшибка="")
    Перем тВопрос,тРезультат,СчПопыток;
    СчПопыток=1; тРезультат=""; тВопрос="";
    Если ПустоеЗначение(тПараметр)+ПустоеЗначение(тОшибка)<>0 Тогда тПараметр="SMTP"; тОшибка="Не получилось"; КонецЕсли;
    Сообщить("<"+ТекущееВремя()+"> с параметром """+тПараметр+""" - попытка номер "+СчПопыток,"");
    Пока Почта.Подключиться("SMTP")<>1 Цикл
        Если ПустоеЗначение(тВопрос)<>1 Тогда Если Найти("Нет,Отмена",Вопрос(тВопрос,"Да+Нет+Отмена",1))<>0
        Тогда тРезультат="Не получилось"; Прервать; КонецЕсли; КонецЕсли;
        тВопрос="Попробовать с параметром ""SMTP"" ешшо разок ("+СчПопыток+"-ый), ммм?..";
        СчПопыток=СчПопыток+1; Сообщить("<"+ТекущееВремя()+"> с параметром ""SMTP"" - попытка номер "+СчПопыток,"");
    КонецЦикла;
    Если ПустоеЗначение(тРезультат)<>1 Тогда
        Сообщить(тРезультат+", попыток = "+СчПопыток+" (потом - надоело).","!!!");
        Если Найти("Нет,Отмена",Вопрос("Попробовать с параметром ""Отправка""?..","Да+Нет+Отмена",12))<>0
        Тогда Возврат(тРезультат) Иначе Возврат(ПопробуемПочту(Почта,"Отправка","Просто капец")) КонецЕсли;
    КонецЕсли;
КонецФункции //ПопробуемПочту
// ПРИМЕР использования:
//    Если ПустоеЗначение(ПопробуемПочту(Почта))<>0
//    Тогда тРезультат="Уря!!! Получилось!!!!!!!"; Сообщить(тРезультат,"i"); Предупреждение(тРезультат,12); КонецЕсли;
//    // ну и рассказать нам - что там в окне сообщений...

Ну типа того.

Спасибо сказали: Mikst,

Mikst Подменю пользователя
сообщение 05.12.12, 10:11
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 36
Из: Черкассы
Спасибо сказали: 4 раз
Рейтинг: 0

Вообщем результаты такие.

Если я запускаю обработку не в отладчике то:
<10:08:48> с параметром "SMTP" - попытка номер 1
Уря!!! Получилось!!!!!!!

А если через отладчик то:

<10:07:34> с параметром "SMTP" - попытка номер 1
<10:07:47> с параметром "SMTP" - попытка номер 2
<10:07:54> с параметром "SMTP" - попытка номер 3
<10:07:58> с параметром "SMTP" - попытка номер 4
<10:08:02> с параметром "SMTP" - попытка номер 5
<10:08:06> с параметром "SMTP" - попытка номер 6
<10:08:09> с параметром "SMTP" - попытка номер 7
<10:08:12> с параметром "SMTP" - попытка номер 8
<10:08:15> с параметром "SMTP" - попытка номер 9
<10:08:18> с параметром "SMTP" - попытка номер 10
<10:08:22> с параметром "SMTP" - попытка номер 11
<10:08:25> с параметром "SMTP" - попытка номер 12
<10:08:28> с параметром "SMTP" - попытка номер 13
<10:08:31> с параметром "SMTP" - попытка номер 14
<10:08:34> с параметром "SMTP" - попытка номер 15

И я прервал отладчик, не понимая почему по разному отрабатывает код.

XBrut Подменю пользователя
сообщение 05.12.12, 23:48
Сообщение #8

Статус
**********
Группа: Пользователи
Сообщений: 1543
Спасибо сказали: 254 раз
Рейтинг: 0

Ловите фарш. Реально работает. Начинаем, когда длл уже загружена.
Почта.СерверОтправки ="mail.ХХХ.ua";
Почта.ПортОтправки ="26";
Почта.Логин ="base@ХХХ.ua";
Почта.Пароль ="пароль";
Почта.АутентификацияПриОтправке =1;
Если Почта.Соединение=0 Тогда
    Если Почта.Подключиться("Отправка")=0 Тогда
        Результат="Неудачная попытка подключиться к почтовому серверу.";
        Возврат 0;
    КонецЕсли;
КонецЕсли;

//смонтировать сообщение
Почта.XMailer ="Microsoft Outlook Express 6.00.2600.0000";
Почта.Важность =0;
Почта.Кодировка ="windows-1251";
Почта.ТипПисьма =2;
Почта.АдресОтправителя ="info@ХХХ.ua";
Почта.ИмяОтправителя ="Сидор";
Почта.ДобавитьАдрес("АдресПолучателя",adres@klient.ua,adres@klient.ua);
Почта.АдресДляОтвета ="info@ХХХ.ua";
Почта.Тема=СокрЛП(Тема);
Почта.Тело=СокрЛП(ТекстПисьма);

//отправка
Если Почта.Соединение=0 Тогда
    Сообщить("Потеряно соединение с почтовым сервером");
ИначеЕсли Почта.Отправить()=1 Тогда
    Сообщить("Отправлено");
Иначе
    Сообщить("НЕ отправлено...");
КонецЕсли;


Сообщение отредактировал Vofka - 06.12.12, 9:14

Спасибо сказали: Mikst,

Стрелок Подменю пользователя
сообщение 06.12.12, 11:14
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 96
Спасибо сказали: 8 раз
Рейтинг: 0

Вот ещё из реально работающей конфигурации вариант :

глобальник :

Перем глПочта Экспорт; 
Перем Почта Экспорт;

Если ЗагрузитьВнешнююКомпоненту("ROM-Mail.dll")=0 Тогда
         Предупреждение("Не удалось загрузить компоненту работы с почтой");  
         Возврат;
         глПочта=0;    
Иначе
         глПочта=1;  
         Сообщить("Модуль работы с почтой успешно загружен");
КонецЕсли;


документ :

// отправляем по почте   
    
    Если глПочта=1 Тогда
        Почта=СоздатьОбъект("AddIn.AddInMail");
    Иначе
        Возврат;
    КонецЕсли;    
    
    Почта.СерверОтправки=СокрЛП(Константа.СерверОтправки);
    Почта.ПортОтправки=Константа.ПортОтправки;
    Почта.АутентификацияПриОтправке=1;
    Почта.Логин=СокрЛП(Константа.Логин);
    Почта.Пароль=СокрЛП(Константа.Пароль);
    Если Почта.Соединение=0 Тогда
        Если Почта.Подключиться("Отправка")=0 Тогда
            Сообщить("Не удалось подключиться к почтовому серверу","!");
            Возврат;
        КонецЕсли;
    КонецЕсли;
    //сообщение
    Почта.Важность=0;
    Почта.Кодировка="windows-1251";
    Почта.ТипПисьма=2;
    Почта.АдресОтправителя=СокрЛП(Константа.АдресОтправителя);
    Почта.ИмяОтправителя=СокрЛП(Константа.ИмяОтправителя);
    //получатели
    Почта.АдресПолучателя=СокрЛП(Адрес);  
    Почта.ПодтверждениеДоставки=1;
    Почта.ПодтверждениеПрочтения=1;  
    ТемаПисьма="Накладная "+Накладная;  
    ТекстПисьма="Накладная "+Накладная;
    //вложения        
    ФС.УстТекКаталог(СокрЛП(ПутьПромФайлов));
    Почта.Вложения="";
    Если Запаковали=1 Тогда
        Почта.Вложения=СокрЛП(ПутьПромФайлов)+ИмяФайла+".rar;";
    Иначе
        Почта.Вложения=СокрЛП(ПутьПромФайлов)+ТекФайл+";";    
    КонецЕсли;    
    Почта.Тема=СокрЛП(ТемаПисьма);
    Почта.Тело=СокрЛП(ТекстПисьма);
    //отправка
    Если Почта.Соединение=0 Тогда
        Сообщить("Соединение потеряно","!");
    ИначеЕсли Почта.Отправить()=1 Тогда
        Сообщить("Почтовое сообщение отправлено","i");      
        Результат=1;
    Иначе
        Сообщить("Не удалось отправить сообщение","!");
    КонецЕсли;
    //отключение
    Почта.Отключиться();  
    Почта="";



 i 

Выделяйте, пожалуйста, код.
 


Сообщение отредактировал Vofka - 06.12.12, 11:28


Signature
Программист 1С - любимчик бухгалтеров

Спасибо сказали: Mikst,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 01.06.24, 7:02
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!