Имя: Пароль:
1C
1С v8
Как при приеме почты определить не прочитанные письма
0 Genri
 
10.12.11
13:26
Как при приеме почты определить не прочитанные письма
Делаю так, не работает все равно все принимает.

Процедура ПолучитьПочту(Табл_Данных_Почта) Экспорт    
   Перем Профиль;
           
   ИнтернетПочта = Новый ИнтернетПочта;
   ЗаполнитьПрофиль(Профиль);
   
   Аутентификация = ложь;
   
   Если Аутентификация Тогда
       Профиль.АутентификацияPOP3 = СпособPOP3Аутентификации.APOP;
   Иначе
       Профиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;
   КонецЕсли;
   
   Почта = Новый ИнтернетПочта;
   Почта.Подключиться(Профиль);
   
   ПараметрыОтбораIMAP = Новый Структура;
   ПараметрыОтбораIMAP.Вставить("Прочитанные", ложь);
   ПараметрыОтбораIMAP.Вставить("Новые", истина);
   Заголовки = Почта.ПолучитьЗаголовки(ПараметрыОтбораIMAP);
   
   Сообщить( Заголовки.Количество());
   
   Если Заголовки.Количество() > 0 Тогда
       
       МасЗ = новый Массив;
       
       Для каждого заг Из  Заголовки цикл
           
           НайденнаяСтрока = Табл_Данных_Почта.Найти(заг.Отправитель.Адрес, "Адрес");
           Если НайденнаяСтрока = Неопределено Тогда
           //    Сообщить("Новых сообщений нет");
           Иначе
               Если заг.ДатаОтправления > НайденнаяСтрока.ДатаВремя тогда
                   МасЗ.Добавить(заг);
               Конецесли;
           КонецЕсли;
       КонецЦикла;    
       
       // Получим только новые сообщения
       Масс = Почта.Выбрать(Ложь,Заголовки);
       
   Иначе
       Сообщить("Новых сообщений нет");
       
       Почта.Отключиться();
       Возврат;
       
   КонецЕсли;      
   
   Для Каждого Письмо Из МасЗ Цикл
       Сообщить(Письмо.ДатаОтправления);
   КонецЦикла;
   
   
   Почта.Отключиться();
   
КонецПроцедуры
1 Genri
 
10.12.11
14:39
ап
2 Prilepsky
 
10.12.11
15:26
А если хранить письма в справочнике или регистре и тупо сравнивать?
3 Genri
 
10.12.11
15:45
(2)Это на край сделаю через справочник но это ж должно как - то работать

ПараметрыОтбораIMAP = Новый Структура;
   ПараметрыОтбораIMAP.Вставить("Прочитанные", ложь);
   ПараметрыОтбораIMAP.Вставить("Новые", истина);
   Заголовки = Почта.ПолучитьЗаголовки(ПараметрыОтбораIMAP);
4 catena
 
10.12.11
15:49
Может быть они не становятся "прочитанными"?
5 Genri
 
10.12.11
16:46
(4)становятся
6 Prilepsky
 
10.12.11
17:51
(5) В аккаунте почты точно они отмечены как прочитанные?
Если ты не хранишь почту где-то в 1с, то храни хотя бы константу "ДатаПоследнейСинхронизацииПочты" и забирай письма отправленный позже.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший