|
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) спасибо, сейчас попробую
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |