8.х получение писем объектом ИнтернетПочта в v 8.1

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем xandruxa, 25 фев 2009.

  1. TopicStarter Overlay
    xandruxa
    Offline

    xandruxa

    Регистрация:
    25 фев 2009
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Люди добрые, помогите. У меня задача: получать с майла письма и заполнять в документ. Начал бороться с первой частью. В служебное сообщение пишет тему письма, тобишь связь есть, но не видит почему то текст письма. Подскажите кто чем сможет. Заранее огромное СПС.
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Код:
    // чтение почтового сообщения
    Профиль = новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераPOP3 = "pop3.yandex.ru";
    Профиль.Пользователь = "user";
    Профиль.Пароль = "qwerty";
    ПРофиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;
    
    Попытка 
    Состояние("Подключение к серверу "+Профиль.АдресСервераPOP3);
    Почта = Новый ИнтернетПочта;
    Почта.Подключиться(Профиль);
    
    МассивСообщений = Новый Массив;
    Состояние("Чтение почтовых сообщений...");
    МассивСообщений = Почта.Выбрать(Ложь); // ЛОжь - писмьа с сервера не удаляются...
    Исключение
    Сообщить("Ошибка подключения к серверу!");
    Сообщить(""+ОписаниеОшибки());
    КонецПопытки;
    
    Если МассивСообщений.Количество() = 0 Тогда
    Сообщить("Почтовый ящик пуст");
    Возврат;
    КонецЕсли;
    
    МассивСообщенийОбмена = новый Массив;
    
    ИмяФайлаСообщения = "";
    ПолученныеПисьма.Очистить();
    Для Индекс = 0 По МассивСообщений.Количество() - 1 Цикл
    Сообщить("Тема: "+МассивСообщений[Индекс].Тема+" от "+МассивСообщений[Индекс].ДатаОтправления+" "+МассивСообщений[Индекс].Тексты.Получить(0));
    КонецЦикла;
    
    Почта.Отключиться();
    
    
    По моему - так...
  3. TopicStarter Overlay
    xandruxa
    Offline

    xandruxa

    Регистрация:
    25 фев 2009
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Спасибо огромное.) Вижу хоть принцып, буду дальше биться. Еще вопросик что означает:
    Значение не является значением объектного типа (Количество)
    в строчке: Если МассивСообщений.Количество() = 0 Тогда
  4. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Это означает, что переменная МассивСообщений на самом деле не массив совсем. Если смотреть на код выше, то если из попытки ты вылетаешь по исключению, то переменная не определена как массив, соответственно у нее нет метода "Количество".

    После исключения добавь возврат или определяй массив перед попыткой
  5. TopicStarter Overlay
    xandruxa
    Offline

    xandruxa

    Регистрация:
    25 фев 2009
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Не могу понять. Что значит:
    Поле объекта недоступно для записи (Почта)
  6. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Код показывай. И говори, что хочешь сделать.
  7. TopicStarter Overlay
    xandruxa
    Offline

    xandruxa

    Регистрация:
    25 фев 2009
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Попытка
    Почта = Новый ИнтернетПочта;
    Состояние("Подключение к серверу "+Профиль.АдресСервераPOP3);
    Почта.Подключиться(Профиль);
    Состояние("Чтение почтовых сообщений...");
    МассивСообщений = Почта.Выбрать(Истина);
    Исключение
    Сообщить("Ошибка подключения к серверу!");
    Сообщить(""+ОписаниеОшибки());
    Возврат;
    КонецПопытки;
    Если МассивСообщений.Количество() = 0 Тогда
    Сообщить("Почтовый ящик пуст");
    Возврат;
    КонецЕсли;

    МассивСообщенийОбмена = новый Массив;
    ИмяФайлаСообщения = "";
    Почта.УдалитьСообщения();
    Для Индекс = 0 По МассивСообщений.Количество() - 1 Цикл
    Сообщить("Тема: "+МассивСообщений[Индекс].Тема+" от "+МассивСообщений[Индекс].ДатаОтправления+" "+МассивСообщений[Индекс].Тексты.Получить(0));
    КонецЦикла;

    Почта.Отключиться();

    Пытаюсь по нажатию кнопки в обработчике выводить сожержание письма в служебное сообщение. Пишет: Поле объекта недоступно для записи (Почта)
  8. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Вот на этом:
    Код:
    Почта = Новый ИнтернетПочта;
    
    ?
    Возможно, что совпадают имена с какой либо переменной. Попробуйте изменить имя с Почта например на ОбъектПочта.
    Код:
    ОбъектПочта = Новый ИнтернетПочта;
    
    И разумеется, замените все последующие использование Почта на новое название переменной.
  9. TopicStarter Overlay
    xandruxa
    Offline

    xandruxa

    Регистрация:
    25 фев 2009
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Спасибо, так и было.) Ругался на имена. Только вот уже какой обработчик пытаюсь сделать, не видит текст. Как и раньше выводит тему, теперь даже число сообщает, а с текстом самим ни как не хочет общаться. Вот такое служебное сообщение:
    Тема: yuij от 02.03.2009 12:42:35 ИнтернетТекстПочтовогоСообщения
  10. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Заменить
    Код:
    Сообщить("Тема: "+МассивСообщений[Индекс].Тема+" от "+МассивСообщений[Индекс].ДатаОтправления+" "+МассивСообщений[Индекс].Тексты.Получить(0)); 
    
    
    На

    Код:
    Сообщить("Тема: "+МассивСообщений[Индекс].Тема+" от "+МассивСообщений[Индекс].ДатаОтправления+" "+МассивСообщений[Индекс].Тексты.Получить(0).Текст); 
    
    
    ?
  11. TopicStarter Overlay
    xandruxa
    Offline

    xandruxa

    Регистрация:
    25 фев 2009
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Спасибо огромное.=) ЗАРАБОТАЛО!!!)))

Поделиться этой страницей