8.х Не работают параметры отбора в методе ПолучитьИдентификаторы ИнтернетПочты

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем gaidukov-maxim, 13 янв 2015.

  1. TopicStarter Overlay
    gaidukov-maxim
    Offline

    gaidukov-maxim Новичок в 1С

    Регистрация:
    13 янв 2015
    Сообщения:
    5
    Симпатии:
    1
    Баллы:
    4
    Необходимо при загрузке писем в разрабатываемый почтовый клиент отсекать письма ниже указанной даты.
    Чтобы быстро работало хочу использовать ПолучитьИдентификаторы() с отбором. Получать все, а потом проверять даты в заголовке письма или т.п. - не вариант, т.к. писем в ящике может быть десятки тысяч. Вот такой код:
    Код:
    Папка="INBOX";       
    ЗагруженныеПисьма = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ИД");  //получаю список ранеезагруженных писем
            Отбор1 = Новый Структура;
            Отбор1.Вставить("ПослеДатыОтправления",Дата("20150101"));//Константы.МинДатаЗагружаемыхПисем.Получить());
            ИнтПочта = УстановитьПодключениеКПочтовомуСерверу(ПрофильЭП.СерверIMAP, "IMAP", ПрофильЭП.Логин, ПрофильЭП.Пароль) ; //содержание функции не очень важно
            ИнтПочта.ТекущийПочтовыйЯщик = Папка;       
            МассивИдентификаторов = ИнтПочта.ПолучитьИдентификаторы(ЗагруженныеПисьма,Отбор1);
            ИнтПочта.Отключиться();
    Метод ПолучитьИдентификаторы() возвращает пустой массив (независимо от содержимого ЗагруженныеПисьма, а исключительно зависимо от структуры с параметрами отбора). Не работает ни вариант с "ПослеДатыОтправления", ни с "ДоДатыОтправления".
    Помогите плиз, никак не пашет. Версия платформы 1С:Предприятие 8.2 (8.2.19.83), конфигурация самописная.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    из С-П:

    Т.е. ЗагруженныеПисьма должен быть массивом массивов.
    У вас это условие выполняется?
  3. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Ну начнем с начала у Вас вот это ЗагруженныеПисьма = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ИД"); что возвращает
    Насколько мне представляется из описания

    <МассивИдентификаторов> (необязательный)

    Тип: Массив.
    Для получения всех идентификаторов сообщений из почтового ящика необходимо передать пустой массив. Если же надо получить идентификаторы только новых сообщений, то необходимо передать массив, заполненный ранее полученными идентификаторами (свойство Идентификатор).

    Идентификатор (UID)
    Использование:

    Чтение и запись.
    Описание:

    Тип: Массив.
    Содержит строку, идентифицирующую сообщение. Данный идентификатор сообщения уникален в пределах почтового ящика и остается неизменным на протяжении всего времени существования этого сообщения в почтовом ящике на сервере. После объединения частичных сообщений, результирующее сообщение может содержать несколько идентификаторов, поэтому свойство имеет тип Массив.


    Ну меня опередили - пока писал.
    У Вас массив массивов?
  4. TopicStarter Overlay
    gaidukov-maxim
    Offline

    gaidukov-maxim Новичок в 1С

    Регистрация:
    13 янв 2015
    Сообщения:
    5
    Симпатии:
    1
    Баллы:
    4
    1. Без параметров отбора с передачей просто массива строковых ИД все работает исправно - это вот так
    МассивИдентификаторов = ИнтПочта.ПолучитьИдентификаторы(ЗагруженныеПисьма);
    2. Если делаю вот так - возвращается пустой массив
    МассивИдентификаторов = ИнтПочта.ПолучитьИдентификаторы(Новый Массив,Отбор1);
    3. И так тоже МассивИдентификаторов = ИнтПочта.ПолучитьИдентификаторы(,Отбор1);
    Последнее редактирование: 13 янв 2015
  5. TopicStarter Overlay
    gaidukov-maxim
    Offline

    gaidukov-maxim Новичок в 1С

    Регистрация:
    13 янв 2015
    Сообщения:
    5
    Симпатии:
    1
    Баллы:
    4
    Подозреваю,что это как-то связано со значением для ключей отбора. Если имя ключа указано неверно, тогда возвращаются все идентификаторы. А здесь ни одного, следовательно нет значений, соответствующих условию.
    По ключам "Тема", "ТелоСообщения" и "Текст" результат тоже нулевой, а вот "Удаленные" работает - есть отличия при разных значениях.
    Иду дальше, по "ТелоСообщения", делаю поиск не русских, а латинских символов (которые точно есть в письме) или цифровых "8910" - тогда работает. Тут может быть дело в кодировке......
    А вот с датой что может быть?
  6. TopicStarter Overlay
    gaidukov-maxim
    Offline

    gaidukov-maxim Новичок в 1С

    Регистрация:
    13 янв 2015
    Сообщения:
    5
    Симпатии:
    1
    Баллы:
    4
    Вот сделал голую обработку чтобы лишних вопросов не возникало. Результат тот же - при установке ключа ПослеДатыОтправления массив пустой. В ящике 2 письма, оба после заданной даты.
    Код:
                
    ПрофильПочты = Новый ИнтернетПочтовыйПрофиль;
                ПрофильПочты.Таймаут = 40;  
                ПрофильПочты.ПортIMAP         = "143";          
                ПрофильПочты.АдресСервераIMAP = "imap.mail.ru";     
                ПрофильПочты.ПользовательIMAP = "help-orelavto@mail.ru";
                ПрофильПочты.ПарольIMAP       = "q23456";  
                //ПрофильПочты.ПортSMTP = "25";
                //ПрофильПочты.АдресСервераSMTP = "smtp.mail.ru";
                //ПрофильПочты.ПользовательSMTP = "help-orelavto@mail.ru";
                //ПрофильПочты.ПарольSMTP       = "q23456";
                //ПрофильПочты.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
                ПротоколСоед = ПротоколИнтернетПочты.IMAP; 
                Почта = Новый ИнтернетПочта;
                Почта.Подключиться(ПрофильПочты, ПротоколСоед);
                Отбор1 = Новый Структура;
                Отбор1.Вставить("ПослеДатыОтправления",Дата("20150101000000"));
                Почта.ТекущийПочтовыйЯщик = "INBOX";       
                МассивИдентификаторов = Почта.ПолучитьИдентификаторы(,Отбор1);
                Почта.Отключиться(); 
  7. TopicStarter Overlay
    gaidukov-maxim
    Offline

    gaidukov-maxim Новичок в 1С

    Регистрация:
    13 янв 2015
    Сообщения:
    5
    Симпатии:
    1
    Баллы:
    4
    Техподдержка 1С ответила, что в 8.3 это дело работает, а в 8.2 они не хотят исправлять свою недоработку.-Asshat-
    Draco нравится это.
  8. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    Спасибо за то что отписались

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