Имя: Пароль:
1C
1С v8
v8: Получение писем в 1с82
0 lisrws
 
27.02.14
12:40
Всем доброго дня.
Помогите, пожалуйста разобраться с вот такой проблемой. Есть УТ 10. В ней стандартный механизм получения писем. При получении писем происходит для меня что-то не понятное. Код, отвечающий за это из типовой, привожу ниже:

Профиль = ПолучитьИнтернетПочтовыйПрофиль(УчетнаяЗапись);
ИнтернетПочта = Новый ИнтернетПочта;
ИнтернетПочта.Подключиться(Профиль);
МассивЗаголовковПисем = ИнтернетПочта.ПолучитьЗаголовки(ПараметрыОтбора);
МассивЗаголовковПисем = ПолучитьСписокПисемКПолучению(УчетнаяЗапись, МассивЗаголовковПисем, МассивПисемДляУдаления);
МассивПисем = ИнтернетПочта.Выбрать(НЕ УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере, МассивЗаголовковПисем);

А теперь собственно проблема. Есть локальная сеть №1. Когда в ней выполняется код МассивЗаголовковПисем = ИнтернетПочта.ПолучитьЗаголовки(ПараметрыОтбора), то в МассивЗаголовковПисем возвращается массив заголовков, по количеству соответствующий количеству писем на сервере, но все остальные поля каждого заголовка не заполнены, а в качестве идентификатора письма во всех строках указано «d41d8cd98f00b204e9800998ecf8427e». Процедура «ПолучитьСписокПисемКПолучению» анализирует идентификаторы полученных заголовков и оставляет только те, которые в базе 1с не найдены. В базе 1с нет писем с идентификатором d41d8cd98f00b204e9800998ecf8427e, поэтому все 500 с лишним заголовков передаются в как параметр в функцию Выбрать объекта ИнтернетПочта. И он уходит в себя почти на пол часа. В свою очередь, функция Выбрать возвращает все имеющиеся в ящике письма в нормальном виде, то есть с заполненными полями и уникальными идентификаторами, в отличии ситуации с заголовками. И все 500 + писем перезатираются в базе, что есть очень долго и печально. Хотя по факту новых писем там от силы 5 штук.
Попробовал развернуть эту базу на другом компе из этой локалки – ситуация таже.

Попробовал развернуть у себя дома – ситуация изменилась. Строка «МассивЗаголовковПисем = ИнтернетПочта.ПолучитьЗаголовки(ПараметрыОтбора);» вернула 500+ заголовков, но они были заполнены, как и должно быть(тема, адреса, даты и тд) и у них у всех были действительно разные уникальные идентификаторы. И имели вид «[email protected]». по таким идентификаторам функция «ПолучитьСписокПисемКПолучению» нашла все имеющиеся в базе письма, удалила заголовки уже имеющихся и получила недостающие 5 писем. Все отработало отлично.

Попробовал развернуть в совершенно другой локалке базу. Также все хорошо отработало.
Учетные данные были везде одинаковые. В чем может быть проблема и как ее лечить?
1 H A D G E H O G s
 
27.02.14
12:42
пффф
2 H A D G E H O G s
 
27.02.14
12:43
pop3/smtp протоколы - они такие pop

Это все для impa
3 H A D G E H O G s
 
27.02.14
12:43
imap
4 H A D G E H O G s
 
27.02.14
12:46
У нас это сделано так:

    МассивИдентификаторов=Почта.ПолучитьИдентификаторы();
    
    Запрос=Новый Запрос;
    Запрос.Текст=
    "ВЫБРАТЬ
    |    _ИдентификаторыУжеПрочитанныхПисем.Идентификатор
    |ИЗ
    |    РегистрСведений._ИдентификаторыУжеПрочитанныхПисем КАК _ИдентификаторыУжеПрочитанныхПисем
    |ГДЕ
    |    _ИдентификаторыУжеПрочитанныхПисем.Идентификатор В(&МассивИдентификаторов)";
    Запрос.УстановитьПараметр("МассивИдентификаторов",МассивИдентификаторов);
    Выборка=Запрос.Выполнить().Выбрать();
    МассивГодныхИдентификаторов=Новый Массив;
    Для Каждого ТекущийИдентификатор ИЗ МассивИдентификаторов Цикл
        Выборка.Сбросить();
        Если Не Выборка.НайтиСледующий(ТекущийИдентификатор,"Идентификатор") Тогда
            МассивГодныхИдентификаторов.Добавить(ТекущийИдентификатор);
        КонецЕсли;        
    КонецЦикла;
    Если МассивГодныхИдентификаторов.Количество()=0 Тогда
        Сообщить("В почтовом ящике нет входящих сообщений!");
    КонецЕсли;


    Если МассивГодныхИдентификаторов.Количество() <> 0 Тогда
        
        // Загрузка сообщений в массив
        Сообщения = Почта.Выбрать(Ложь,МассивГодныхИдентификаторов);
5 H A D G E H O G s
 
27.02.14
12:47
Работает за 2-3 секунды при наличии на сервере 157 писем.
6 lisrws
 
27.02.14
12:50
(2) вопрос не в протоколе, а в том, что оно с любого компьютера не этой злосчастной локальной сети работает корректно. вопрос: почему оно именно в той подсети не пашет. (4) это то же самое, что я написал. сперва получили заголовки, затем сравнивая с имеющимися в базе удалили лишние, а по оставшимся затянули письма.
7 H A D G E H O G s
 
27.02.14
12:56
(6) идентификаторы в 10500 раз быстрее
8 lisrws
 
27.02.14
13:01
(7) спасибо, сейчас попробую
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.